amueller / word_cloud

A little word cloud generator in Python
https://amueller.github.io/word_cloud
MIT License
10.1k stars 2.31k forks source link

Ignores Swedish characters #192

Closed christoph-peters closed 7 years ago

christoph-peters commented 7 years ago

The word cloud removes special Swedish characters (like ÄÖÅ) from words.

amueller commented 7 years ago

Hi @christoph-peters. That would be quite surprising to me. Can you show code to reproduce? I imagine there's some issue with how the strings are encoded that you provide as input.

viniciusmayer commented 7 years ago

The problem happens with any language. For example, portuguese, if you have a word "pão" (means bread in english), wordcloud will print "p". And these same words at the stopword file will be, of course, ignored.

I'm trying to find the point in the code that causes the problem, but without success until now.

viniciusmayer commented 7 years ago

@amueller, this issues is related with #70.

amueller commented 7 years ago

@viniciusmayer as I said, this is likely not a result of any wordcloud processing, but a result of how you represent and store your text. As I said above, I'm happy to investigate if you provide code to reproduce.

And no, this is not really related to #70. #70 is about the text rendering being done left-to-right, and whitespace not being an adequate separator of words for arabic. WordCloud makes a single assumptino about language, which is that white-space separates words. It also assumes that your system is setup correctly for your language, so that \w covers the alphanumeric range of your language. If your language, like Spanish or Swedish or German or many others, fulfil the whitespace criterion, but you are having trouble, that is probably either because you chose a font that doesn't contain the letters you're trying to render, or you didn't represent the input text as properly encoded unicode.

C15 commented 7 years ago

Hi @amueller.

I've also run into this problem. For debugging purposes I used the wordcloud_cli.py tool with a file containing two words, 'pão' and 'manteiga', using the command wordcloud_cli.py --text example.txt --imagefile test.png.

I've found that although running the tool using python3 does give the expected result, while using python2 the word 'pão' does not appear in the image. In fact, any word using any character outside the [A-Z] and [a-z] range is ignored. This seems to be related with the function process_text.

Changing the wordcloud.py file so it reads:

from __future__ import print_function

(...)

def process_text(self, text):

        d = {}
        flags = (re.UNICODE if sys.version < '3' and type(text) is unicode
                 else 0)
        print(text) 
        for word in re.findall(r"\w[\w']+", text, flags=flags):
            print(word)
            (...)

and running the tool using both versions shows that in python3 both words are picked up and in python2 only the one that doesn't use the 'ã' character is.

I've checked and the file example.txt is encoded using utf-8.

amueller commented 7 years ago

I think the file reading in the CLI might be broken in python2. Can you try to read the file yourself as unicode?

edusantana commented 7 years ago

Here's a text file nuvem.txt:

Abordagem Sociotécnica
Accountability aplicada à Educação
Acessibilidade
Acesso aberto à informação
Acompanhamento do Egresso
Administração Gerencial
Administração pública
Aluno Conectado
Aplicações Interativas
Aprendência
Aprendizado Organizacional
Aprendizagem
aprendizagem
Aprendizagem
Aprendizagem ao longo da vida
Aprendizagem ao longo da vida
Aprendizagem de Adultos
Aprendizagem em Ação
Aprendizagem Experiencial
Aprendizagem Institucional
Aprendizagem organizacional
Aprendizagem Organizacional
Aprendizagem Organizacional
Aprendizagem organizacional
Aprendizagem organizacional
Aprendizagem Organizacional
Aprendizagem organizacional
Aprendizagem Organizacional
Aprendizagem organizacional
aprendizagem organizacional
Aprendizagem organizacional
Aprendizagem organizacional
Aprendizagem Organizacional
Aprendizagem organizacional
Aprendizagem Organizacional
Aprendizagem Significativa
A Quinta Disciplina
Arquivologia
Aspectos Sociais
Assessoria Jurídica Preventiva
atenção primária à saúde
Atendimento Educacional Especializado
Auditoria interna
Autismo
Auto-avaliação Institucional
Autoavaliação institucional
Autodeterminação
Avaliação
Avaliação de Desempenho
Avaliação de sites
Avaliação do conhecimento organizacional
Avaliação educacional
Avaliação Institucional
Avaliação Institucional
Avaliação integrada
Avaliação transformadora
Balanced scorecard
Banco comunitário de desenvolvimento
Bancos comunitários
Benchmarking
Bens móveis
Bens móveis
Biblioteca aprendente
Biblioteca multinível
Bibliotecas universitárias
Bibliotecas universitárias
Bibliotecas universitárias
Bibliotecas universitárias
Blogs educativos
Busca
Capacidade de absorção
Capacitação
Capacitação Servidor Público
Capital intelectual
Central de Atendimento ao Servidor
Cibercrime
Ciberdemocracia
Ciclos de vida
Ciência da Informação
Compartilhamento
Compartilhamento do Conhecimento
Competência em informação
Competências
Competências
Competências
Competências em informação
Comunicação
Comunicação
Comunicação
Comunicação
Comunicação Científica
Comunidade de aprendizagem
Comunidades de Prática (COPs)
Conhecimento
Conhecimento organizacional
Conhecimento organizacional
Conselho Escolar
Conselho Municipal de Educação
Contabilidade pública municipal
Contação de Histórias
Controle patrimonial
Controle Social
Cooperação
Criação do conhecimento
Cultura
Cultura Administrativa Brasileira
Cultura Organizacional
Cultura organizacional
Cultura Organizacional
cultura organizacional
Cultura organizacional
Cumprimento do Princípio da Celeridade Processual 
Democracia
Democracia
Desempenho
Desempenho da Aprendizagem
Desenvolvimento Comunitário
Desenvolvimento organizacional
Desenvolvimento Territorial
Design Thinking
Diagnóstico da Gestão do Conhecimento
Diagnóstico de Gestão do Conhecimento
Direito
Direito à educação
Direitos Autorais
Direitos humanos
Diretrizes Curriculares Nacionais
Disciplinas da Organização que Aprende
Disseminação da Informação
Disseminação Seletiva da Informação
Diversidade
Docentes
Duração Razoável do Processo
EaD
Economia Solidária
Economia Solidária
Edital de licitação
Educação
Educação
Educação 
Educação a Distância
Educação a Distância
Educação a distância
Educação Básica
Educação corporativa
Educação Corporativa
educação de qualidade
Educação Integral
Educação Integral
Educação Médica a Distância
Educação para o consumo
Educação Permanente
Educação Permanente em Saúde
Educação popular solidária
Educação Profissional
Educação profissional
Educação Superior
Educomunicação
Educomunicação
Eficácia Gerencial
Eficiência
Elementos da cultura organizacional
Emprego
Empresa
Endomarketing
Endomarketing
Engenharia de Software
Ensino Médio
Ensino Superior
Ensino Superior
Ensino Superior
Ensino superior
ERP
Erros Contábeis
Escola
Escola Aprendente
Escola Aprendente
Esfera pública
Esfera pública
Espaço Público
Espiritualidade
Estado Democrático de Direito
Estágio Supervisionado
Estratégia Organizacional
Ética organizacional
Evasão
Evasão na UFPB
Expansão
Expansão da Rede Federal EPCT
Ferramenta Pedagógica
Formação
Formação contábil
Formação continuada
Formação de administrador
Formação de Professores
Formação do Capital Intelectual
Formação docente
Formação pela Avaliação
Formação policial
Funcionário
Gerência de serviços de saúde
Gestão
Gestão
Gestão Acadêmica
Gestão Acadêmica
Gestão aprendente
Gestão aprendente
Gestão Aprendente
Gestão da comunicação organizacional
Gestão da Informação
Gestão da informação
Gestão da Informação
Gestão da Informação
Gestão da Informação
Gestão da Informação
Gestão de biblioteca
Gestão de competências
Gestão Democrática
Gestão Democrática
gestão de pessoas
Gestão de Processos Trabalhistas
Gestão de projetos
Gestão de Prontuários
Gestão do Conhecimento
Gestão do conhecimento
Gestão do Conhecimento
Gestão do Conhecimento
Gestão do Conhecimento
Gestão do Conhecimento
Gestão do conhecimento
Gestão do Conhecimento
Gestão do Conhecimento
Gestão do conhecimento
Gestão do conhecimento
Gestão do Conhecimento
Gestão do Conhecimento
Gestão do Conhecimento
Gestão do ensino superior
Gestão Educacional
Gestão Escolar
Gestão escolar
Gestão Escolar
Gestão Escolar
Gestão escolar
Gestão escolar democrática
Gestão Financeira
Gestão financeira
Gestão
Gerenciamento eletrônico de documentos
Gestão Inovadora
Gestão Jurídico-estratégica
Gestão Organizacional
Gestão organizacional
Gestão Organizacional
Gestão patrimonial
Gestão patrimonial
Gestão pedagógica
Gestão por Processos
Gestão por Resultados
Gestão Pública
Gestão Pública
Gestão Pública
Gestão social comunitária
Gestão Universitária
Globalização
Governo eletrônico
Hipermídia
História
Hospitais de ensino
Identificação
IFB
Implantação
Implementação
Inclusão de surdos
Inclusão digital
Inclusão digital
inclusão digital
Inclusão Social
Indicadores de Desempenho
Indicadores de Desempenho
Informação
Informação
Informação
Informação
Inovação
Inovação
Inovação
Inovação
Inovações educacionais
Institucionalização
Instituição de ensino superior privada
Instituição de Ensino Superior Privada
Institutos Federais
Instrumento de Comunicação
Integração
Inteligências múltiplas
Internacionalização de Universidades Privadas
internato
Inventário
Justiça
Legislação
Lei
Lei
acesso à informação
LIBRAS
Liderança
Linguagens documentárias
Mapeamento
Marketing
Marketing
Meio ambiente
Melhores práticas
Melhoria de processos
Memória
Método Knowledge Management Diagnostic (KMD)
Metodologia Canvas
Método OKA
Método organizational knowledge assessment (OKA)
Método TEACCH
Métricas
Ministério Público
Modelagem Organizacional
Modelo de aceitação de tecnologia
Motivação
Motivação Intrínseca
Mudança organizacional
Mundo Sistêmico
Mundo sistêmico
Mundo Vivido
Mundo vivido
Narrativas
Nordeste
Objetivos organizacionais
Oficinas Pedagógicas
ONGs
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organização comunitária
Organização do Conhecimento
Organização pública
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organizações aprendentes
Organizações Aprendentes
Organizações aprendentes
Organizações em Rede
Organizações Públicas Aprendentes
Ouvidoria
inovação
Parceria
Participação
Participação
Pedagogia da Presença
Permanência
Permanência Escolar
Pesquisa-ação
Pilares da educação para o século XXI
Plágio Acadêmico
Planejamento Estratégico
Polícia Militar
Política de Assistência Estudantil
Política de Educação
Política de indexação
Políticas públicas
Práticas de Enfermagem
Preceptoria
Princípios éticos na Gestão
Processo decisório
Processo Eletrônico
Processo Eletrônico
Processo intensivo em conhecimento
Processos
Procuradoria-Geral Federal
Produtos
Profissionais de saúde
Profissional
Programa Escola Aberta
Projeto Africanidade
Projeto pedagógico escolar
Projeto Político Pedagógico
Projetos educativos
Promoção
PRONATEC
Propriedade Intelectual
Pró-reitoria de Gestão de Pessoas
Qualidade de vida
Qualidade de vida
Qualidade de Vida
Qualidade na educação
Qualidade no Atendimento
Qualificação Profissional
Racionalidade comunicativa
Rádio
Razão comunicativa
Razão instrumental
Recurso Didático
Recurso Didático
Recursos Humanos
Recursos Humanos
Redes de Universidades
Redes Solidárias
Regime de informação
Regime de informação
Regimento Interno - Sistemoteca
Relatório Técnico
Repositório institucional
Representações Sociais
Residência
Resultados escolares
Saber prático
Saber teórico
Saúde do trabalhador
Segurança do Paciente
Segurança humana
Serviço de informação
Serviço Público
Serviço público eficiente
Serviços de Informação
Servidor Público
Servidor público
SIG
SIGECAP
SIPAC
Sistema de Avaliação
Sistema de Bibliotecas
Sistema de Bibliotecas
Sistema de Gestão Ambiental
Sistemas de Informação
Sistemas de Informação
Sistemas de Informação
Sistemas de Informação
Sistemas de Informação
Guiné-Bissau
Sistemas de Informação
Sistemas de informação gerencial
Sistemas de Informação
Sistema Único de Saúde
Socialização do conhecimento
Sociedade do Conhecimento
Sucesso Escolar
Sustentabilidade
Tablets
Tecnologia
Tecnologia da Informação
Tecnologia da Informação
Tecnologia da Informação
Tecnologia Digital
Tecnologia Digital
Tecnologias Digitais da Informação
tecnologias digitais educacionais
Televisão
Terceirização
TIC
trabalho coletivo
Trabalho precarizado
Transparência
Tribunal de Contas do Estado da Paraíba
Tribunal de Contas do Estado da Paraíba
Tribunal de Contas do Estado da Paraíba
Tribunal de Contas do Estado da Paraíba
UFPB
UFPB
Unidades de informação
UFPB
uso da informação
Vulnerabilidade social
WHOQOL

Here's the command: cat nuvem.txt | wordcloud_cli.py --imagefile nuvem.png

nuvem

I'm using ubuntu:

Python 2.7.12

As you can see the Gestão shows as Gest.

amueller commented 7 years ago

yeah it looks like argparse doesn't support an encoding parameter to FileType in Python2.7. We could change it to not use argparse to open the file and then use the io module. That makes using - a bit more tricky but it's not that big a deal. PR welcome. Or you could use Python3. Btw, you are using an old version of wordcloud, and neither version will likely give you what you want with this kind of input. You can either set collocations=False and have single words, which will not show the phrases, or you will get things like Superior Ensino showing up. The word-cloud is meant to be used on raw text, not sorted lists. You can shuffle the lines to get rid of these artifacts, though.

amueller commented 7 years ago

Fixed in #267

amueller commented 7 years ago

Unless you have a really compelling reason to stay with 2.7, the real fix is to upgrade to Python3, though.