Você está na página 1de 3

Agrupamento de texto utilizando Mapa de Kohonen

Philipe Cesar dos Santos Oliveira


DEINFO
UFRPE
Recife, Brasil

ResumoEste trabalho trata do uso de Mapa de Kohonen


numa base de dados composta de avaliaes de restaurantes,
retiradas do site TripAdvisor. Dentro dessa proposta, foram
brevemente citados a inspirao, a construo do algoritmo, e o
processo de treinamento e de teste das Redes Auto-Organizveis.
Ainda descrevemos o desenvolvimento do experimento, a saber: a
base de dados, a linguagem de programao, os mtodos e
parmetros, e, finalmente, os resultados dos experimentos,
comparando os resultados obtidos.
KeywordsKohonen maps, Self-organizing maps, TripAdvisor,
Python, Artificial Neural Network, neuron, text.
Palavras-chaveMapa de Kohonen, Mapas auto-organizveis,
TripAdvisor, Python, Rede Neural Artificia, neurnio, texto.

I. REDES AUTO-ORGANIZVEIS
O Mapa de Kohonen um algoritmo de rede neural
artificial (RNA) do tipo Mapa Auto-Organizvel (SOM, Selforganizing map). A inspirao para Teuvo Kohonen, criador do
algoritmo que leva seu nome, veio do crtex cerebral, onde a
ativao de uma regio especfica se d a partir da reao a um
estmulo sensorial, como por exemplo estmulo visual, sonoro
ou olfativo. O algoritmo trouxe uma discretizao da realidade,
a partir dessa ideia.
De maneira semelhante aprendizagem do ser humano, que
feita por reforo/repetio, a rede SOM utiliza aprendizagem
no-supervisionada para gerar uma representao dos dados ao
fim do treinamento. Cada neurnio precisa ser atualizado de
acordo com as instncias de entrada que so processadas; isso
algo que acontece na realidade fsica/biolgica, inclusive.
Porm, diferente de outras RNAs que costumam utilizar
backpropagation, a rede SOM utiliza aprendizado competitivo
para atualizar os pesos dos neurnios e detectar as
similaridades entre os dados.
O processo de atualizao dos pesos dos neurnios se d
calculando a distncia euclidiana entre uma instncia da
entrada e cada neurnio, e o que possui a menor distncia e,
portanto, mais se aproxima da instncia de entrada, chamado
neurnio vencedor e ser o mais passvel de atualizao e
reforo na aprendizagem. Isso se d para cada instncia de
entrada. Na aprendizagem competitiva, h apenas uma nica
camada neural (alm da camada de entrada). possvel haver
conexes laterais ou no, o que significaria dizer que os
neurnios podem ou no depender uns dos outros. Quando no
h, diz-se que o neurnio vencedor recebe tudo, do ingls
Winner Takes All. Quando h conexes laterais, o algoritmo do

Mapa de Konohen utiliza uma funo de vizinhana Gaussiana,


onde Winner Takes Most o neurnio vencedor certamente o
mais reforado, mas os neurnios que o circundam tambm so
atualizados, de acordo com um parmetro de vizinhana.
importante normalizar os pesos: eles so inicializados
aleatoriamente, porm isso depender dos valores de entrada.
Se a faixa de valores fica por volta dos mesmos nmeros que
esto nos pesos dos neurnios, no necessrio, porm cajo
haja uma grande disparidade, como ter um atributo que uma
unidade e outro que seja uma centena, pode ser necessria a
normalizao a fim de equilibrar os pesos da rede, adaptando-a
ao conjunto de entrada eficientemente.
Ainda deve-se notar que h uma estrutura topolgica bem
definida, que representaria o alinhamento dos neurnios e suas
conexes. Em geral, a retcula possui poucas dimenses, na
maioria dos casos duas. Essa opo costuma facilitar a
visualizao dos dados. Porm, importante definir o
alinhamento topolgico dos neurnios. Os mais utilizados na
literatura so bidimensionais, a saber: topologia retangular,
onde os neurnios so alinhados de maneira quadrada, como
uma matriz, sendo um alinhamento mais preciso
matematicamente e computacionalmente; e topologia
hexagonal, que traz um alinhamento equidistante entre cada
neurnio, e entende-se que este seria o alinhamento mais
prximo da realidade.
II. DESENVOLVIMENTO DO EXPERIMENTO
A. Da base de dados
Foi construda uma base de dados da seguinte maneira:
escolheu-se 10 pessoas cadastradas no site TripAdvisor. De
cada uma dessas pessoas, foram extradas 10 opinies sobre
restaurantes, unicamente; dessa maneira, temos 100 opinies.
Ento, do conjunto de todas as avaliaes, tomamos as 25
palavras mais frequentes, e cada avaliao passou a ser uma
lista com 25 itens, onde cada item um atributo numrico
referente quantidade de repeties de cada uma das 25
palavras nesta avaliao.
Exemplo: supondo que so 3 palavras mais frequentes
escolhidas. Uma avaliao seria algo como [2,0,1] se a palavra
1 aparecesse duas vezes, a palavra 2 no aparecesse nenhuma
vez e a palavra 3 aparecesse uma vez nesta avaliao. Portanto,
a lista possui apenas nmeros naturais, sendo incorreto utilizar
nmeros negativos ou fracionrios/decimais.

B. Dos algoritmos
Foi utilizada a linguagem Python. No houve uso de
pacotes ou softwares externos, apenas a importao de pacotes
bsicos (como Math ou Random). Foram escritos dois aquivos
em Python, sendo kohonen-arff.py (I) e txt-som.py (II). O
procedimento de cada algoritmo da seguinte maneira;
(I) possui trs mtodos: Load, Resultado e Arff.
o Load: toma cada uma das avaliaes (escritas em .txt)
e guarda numa lista de strings, sendo cada avaliao
inteira uma nica string (incluindo whitespaces e
caracteres de escape). Ento quebrada em uma
matriz onde cada coluna contm uma lista (que uma
avaliao), e cada lista contm as palavras de uma
avaliao. Stopwords so retiradas, feita uma
contagem, atravs de dicionrio (tipo de dado do
Python), das 25 palavras mais recorrentes.
o Resultado: aqui feita a contagem das 25 palavras,
avaliao por avaliao, e cada lista, contendo 25
atributos inteiros, escrita em um txt;
o Arff: realiza basicamente a mesma coisa que
Resultado, porm gera um arquivo .arff, para
visualizao e experimentao posterior no software
WEKA.
Em (II) tomamos o arquivo txt gerado em (I) como a
entrada de dados. Alm disso, h uma srie de parmetros
e uma classe (SOM) com mtodos e atributos, a saber:
o Parmetros:
o Nmero mximo de Clusters;
o Taxa de aprendizagem;
o Decaimento da taxa de aprendizagem;
o Taxa minima de aprendizagem;
o Nmero mximo de iteraes (pocas);
o Vetor de pesos (inicializados aleatoriamente).
o Mtodos da Classe SOM:
o Construtor;
o Inicializa: Cria os pesos (aleatoriamente) dos
neurnios;
o Input_: cria pesos de conexo para a criao
dos clusters posteriores;
o Atualiza_Peso: atualiza o peso do neurnio
vencedor e seus vizinhos, at o limite
mximo de pocas;
o Treina: dentro de um lao, chama os mtodos
anteriores (e eventualmente decai a taxa de
aprendizagem);
o Resultado: testa um conjunto de entrada para
criar os clusters, e tanto imprime o resultado
na tela quanto salva no arquivo txt-result.txt.

cluster correspondesse a uma pessoa e as avaliaes ali


contidas fossem exatamente de tal pessoa.
Os parmetros foram os seguintes
o

750 iteraes

Taxa de aprendizagem: 0.6

Sem decaimento da taxa de aprendizagem

Raio da vizinhana: 2

Sem diminuio no tamanho da vizinhana

Retcula de neurnios 21 x 21

Topologia retangular

O resultado, presente no arquivo txt-result.txt, nos traz os


agrupamentos escritos da seguinte maneira:
- Vetor (0) pertence classe

- Vetor (1) pertence classe

- Vetor (2) pertence classe

- Vetor (3) pertence classe

- Vetor (4) pertence classe

- Vetor (5) pertence classe

- Vetor (6) pertence classe

- Vetor (7) pertence classe

- Vetor (8) pertence classe

- Vetor (9) pertence classe

- Vetor (10) pertence classe

E etc. Em suma, nossas 100 instncias de entrada se


organizaram da seguinte maneira:
AGRUPAMENTO 1
o

Vetores 12, 20, 30, 50, 51, 54, 62, 64, 71, 74, 75,
84, 94, 95, 99 pertencem classe 0

Vetores 21, 52, 60, 63, 68, 77, 85, 88, 89, 90, 98
pertencem classe 1

Vetores 24, 35, 40, 47, 48, 81, 96 pertencem


classe 2

Vetores 46, 49, 56, 97 pertencem classe 3

Vetores 15, 18, 32, 33, 42, 43, 55, 61, 66, 69, 70,
72, 78, 86, 92, 93 pertencem classe 4

Vetores 0, 1, 3, 6, 7, 8, 9, 10, 23, 26, 31, 34, 38,


39, 45, 53, 57, 59, 76, 80, 83, 91 pertencem
classe 5

Vetores 2, 4, 5, 11, 13, 14, 16, 17, 19, 22, 27, 28,
29, 37, 41, 44, 58, 67, 73, 79, 82, 87 pertencem
classe 6

Vetores 25, 36 pertencem classe 7

Vetor 65 pertence classe 8

III. O EXPERIMENTO
O objetivo aqui agrupar os dados por pessoa. Isto , dado
que temos 100 avaliaes, sendo 10 de cada pessoa, e no h
identificao de classe, o algoritmo dever aprender a separar
as amostrar de entrada e criar clusters que se aproximem o
mximo da realidade. No caso, a condio ideal seria obter 10
clusters, cada um com 10 avaliaes, de maneira que cada

AGRUPAMENTO 2
o

Vetores 5, 7, 10, 11, 12, 13, 19, 20, 21, 23, 26, 28,
29, 30, 34, 37, 39, 41, 50, 51, 52, 54, 58, 62, 64,
68, 71, 74, 75, 78, 79, 82, 83, 84, 85, 87, 88, 89,
90, 94, 98, 99 pertencem classe 0

Vetores 0, 9, 17, 31, 49, 53, 77, 81, 95 pertence


classe 1

Vetores 1, 2, 3, 4, 8, 14, 18, 24, 25, 27, 35, 36, 40,


44, 45, 46, 47, 48, 56, 57, 65, 76, 91, 97 pertencem
classe 2

Vetores 6, 16, 38, 43, 59, 66, 67, 73, 80, 86, 96
pertencem classe 3

Vetores 15, 22, 32, 33, 42, 55, 60, 69, 70, 72, 92,
93 pertencem classe 4

Vetor 63 pertence classe 6

Vetor 61 pertence classe 8

AGRUPAMENTO 3
o

Vetores 0, 26, 31, 81, 83, 95 pertencem classe 0

Vetores 1, 5, 6, 7, 8, 9, 11, 14, 22, 23, 27, 32, 33,


39, 41, 43, 45, 53, 57, 60, 69, 70, 71, 72, 76, 77,
91, 93, 94 pertencem classe 1

Vetores 21, 34, 64, 89, 90 pertencem classe 2

Vetores 38, 42, 55, 61, 63, 66, 80, 86, 92, 96
pertencem classe 3

Vetores 3, 15, 18, 24, 40, 46, 47, 48, 56, 67, 97
pertencem classe 4

Vetores 10, 12, 13, 20, 30, 35, 50, 51, 62, 75, 78,
79, 87 pertencem classe 5

Vetores 68, 74, 84, 85, 98, 99 pertencem classe 6

Vetores 2, 16, 17, 19, 28, 29, 37, 44, 49, 52, 54,
58, 59, 73, 82, 88 pertencem classe 7

Vetores 4, 25, 36 pertencem classe 8

Vetor 65 pertence classe 9


IV. CONCLUSO

Aps as 750 iteraes em trs tentativas de agrupamento, os


resultados acima foram obtidos. perceptvel que a
distribuio de dados sem sempre agrupou exatamente 10
grupos de avaliaes; na realidade, apenas em um houveram 10
clusters, mas em outro foram criados 9 clusters (de 0 a 8) e em
um terceiro apenas 7. Tambm houve uma grande disparidade
na classificao dos dados, onde alguns clusters tiveram muitos
vetores classificados como deles, e outros tiveram bem poucos
associados. Alm disso, instncias de diversas classes foram
agrupadas como sendo de uma classe s.
Dito isso, podemos considerar questes importantes.
Mesmo sem alterar nenhum parmetro, o algoritmo gerou
resultados diferentes, o que algo da natureza da aprendizagem
no-supervisionada. No to fcil garantir resultados iguais,
mas possvel forar isto, desde que existam classes
identificando as instncias da entrada. Porm no era nosso
caso aqui.
O Mapa de Kohonen, apesar de no trazer preciso em
nosso experimento, foi interessante no referente a perceber
como um mesmo conjunto de entrada pode ser classificado de
maneira diferente. A percepo de agrupamento de dados no
exata, depende sempre da visualizao e abstrao humana
para analisar a extrao de caractersticas e identificar regies
que possibilitem a definio das classes desejadas. Isso algo
que nem sempre um algoritmo poder processar com exatido,
dependendo inclusive do conjunto de dados de entrada
utilizado.
Para aplicaes futuras, pode ser possvel utilizar uma
maior base de dados, com textos maiores, mais amostras de
textos, ou ambos. A mudana de parmetros poder tambm
ser um fator diferenciador na tentativa de obter o resultado
desejado.

Você também pode gostar