Grouping headlines

03/29/2020 ∙ by Ciro Javier Diaz Penedo, et al. ∙ University of Campinas 0

In this work we deal with the problem of grouping in headlines of the newspaper ABC (Australian Bro-adcasting Corporation) using unsupervised machine learning techniques. We present and discuss the results on the clusters found

READ FULL TEXT VIEW PDF
POST COMMENT

Comments

There are no comments yet.

Authors

page 3

page 4

This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

1 Introdução

Atualmente o processo de detecção de padrões é frequentemente necessário em empresas, órgãos governamentais, bancos, etc. Tais processos são úteis para realizar políticas de decisões, por exemplo, um banco pode detectar padrões em seus clientes e definir taxas de serviços, políticos podem avaliar as características de seus candidatos e dos não-candidatos e assim investir em campanhas para conquistar mais eleitores, entre outras.

Esse processo para detectar padrões pode ser realizado por meio de aprendizado de máquina sem supervisão (unsupervised learning) utilizando agrupamento (clustering), isto é, não se conhece as características dos grupos existentes e nem a quantidade de elementos em cada grupo.

Uma aplicação útil usando agrupamento é a detecção de padrões em textos. O agrupamento em textos pode ser útil na pesquisa forense atuando na detecção de mensagens de criminosos [2] e na detecção de spam na caixa de e-mail.

Nesse trabalho utilizamos o conceito de N-grams [1] para a extração de atributos em textos e realizamos a detecção de padrões em headlines (manchetes) do jornal ABC (Australian Broadcasting Corporation - http://www.abc.net.au/), depois utilizamos o método K-means para agrupar as manchetes. Para aplicar este método é necessário transformar cada texto em um vetor numérico de atributos (features) que representam características relevantes deles para relacionar um texto (vetor) com outro.

A metodologia escolhida para encontrar a solução do problema é descrita a seguir:

i. Simplificar a linguagem natural das headlines;

ii. Construir um dicionário de N-grams;

iii. Construir os vetores de atributos para cada headline;

iv. Aplicar o algoritmo de agrupamento (k-means no caso);

v. Discutir os resultados dos experimentos.

2 Simplificar a linguagem natural

A linguagem natural tem muitas regras para melhorar o entendimento entre as pessoas. Como o nosso objetivo é relacionar textos, precisamos simplifica-los ficando com apenas o essencial. Por isso todas as palavras vão ser consideradas em minúsculas, tiramos todos os símbolos que não estejam no alfabeto e mantemos apenas o radical [3] dos substantivos, adjetivos, verbos e advérbios. Assim o texto: "João gosta de assistir filmes. Maria gosta de filmes também." torna-se "joão gost assist film maria gost film também"

3 Construir um dicionário de N-grams

Um N-gram [1] é um conjunto ordenado de palavras e um dicionário destes seria uma sequência de tuplas formadas por uma chave e uma descrição, em nosso a chave (key) é um N-gram e a descrição é a quantidade de vezes (frequência) que este aparece no conjunto de dados. Para descrever a construção do dicionário suponhamos que temos estas duas frases no conjunto de dados:

(1) João gosta de assistir filmes. Maria gosta de filmes também."

(2) João também gosta de assistir a jogos de futebol !"

Após simplificar os dados via Seção 2 o nosso dicionário de 1-grams seria:

“joão”:2, “gost”:3, “ assist”:2, "film":2, "maria":1, "também":1, "jog":1, "futebol": 1 .

Para 2-grams teríamos:

("joão","gost"):1, ("gost","assist"):2, ("assist",film"):1 …

4 Construir os vetores de atributos.

Nos experimentos computacionais usamos os N-grams do dicionário que possuem uma frequência maior ou igual a 10, mas para o exemplo anterior usaremos todas.

Posição
Palavra joão gost assist film
Posição
Palavra maria também jog futebol
Tabela 1: Tabelas com as palavras do dicionário

Esses oito 1-grams da Tabela 1 representam os nossos atributos utilizados para a conversão dos textos em vetores, sendo assim, percorremos cada manchete e criamos um vetor binário de entradas que indica se o texto possui o 1-gram do dicionário ou não. Para o exemplo apresentamos o resultado na Tabela 2.

Palavra
Frase (1) 1 1 1 1 1 1 0 0
Frase (2) 1 1 1 0 0 1 1 1
Tabela 2: Amostras para realizar o cluster

Poderíamos também usar 2-gram e nesse caso utilizaríamos o dicionário de 2-grams. Também podemos usar 1-gram + 2-gram juntando ambos dicionários. Claramente que N-grams de , ou mais palavras podem ser usados (e seria desejável), neste trabalho por problemas de potência computacional decidimos ficar com 1-grams e 2-grams.

5 Agrupamento (K-means)

O algoritmo K-means pode ser descrito como um problema de otimização (1).

(1)

em que a função é chamada de inércia [4], são os dados, são os índices que indicam qual o grupo que pertence, é o centróide do grupo e a dist é alguma medida ,por exemplo: , , cosine distance.

O algoritmo se chama K-means pois a palavra means significa médias e indica a maneira como foi calculado, isto é, para obter os centróides usamos a equação 2

(2)

em que é a dimensão de , e desse modo, cada entrada de é a média das entradas dos vetores pertencente o grupo .

O algoritmo K-means é descrito a seguir:

Defina os centróides iniciais e repita it. max.:

  1. Atribua os índices em em que
    = arg(min );

  2. Atualize os centróides calculando a média dos pertencentes ao cluster .

Uma variação do algoritmo K-means é o algoritmo k-medoids e nesse caso, é o elemento do grupo o qual possui o menor valor da somatória entre as distancias de com os elementos do grupo . Outra variação é o K-median que utiliza como sendo a mediana do grupo e o Mini Batch K-means é uma variação que utiliza parcelas (Batch) dos danos para realizar os clusters, sendo bem útil quando se tem muitos dados e pouca potência computacional.

Para a escolha da quantidade de cluster () utiliza-se a elbow rule (regra do cotovelo). Podemos ver na equação 1 que se consideramos um único cluster o valor do minimo que a função alcançaria seria o maior valor possível, e em contrapartida se considerarmos cada ponto sendo um cluster o valor atingido será zero, pois o centróide do cluster seria o próprio ponto.

Desse modo, a elbow rule consiste relacionar a quantidade de clusters com o valor da inércia em 1, e escolher o tal que a variação de de para seja pequena.

Observação: Outras regras usadas para a escolha da quantidade de cluster são o Silhoutte e Calinski Harabasz [4] mas, não vamos usar elas neste trabalho.

6 Experimentos e Discussões

Os experimentos computacionais foram realizados em python e o conjunto de dados era composto por 1 milhão e uma manchetes publicadas entre 19/02/2003 até 31/12/2017 pela ABC. Após simplificar a linguagem natural (2) e construir os dicionários de 1-grams e 2-grams (3), construímos nosso vetor de atributos (4) usando os N-grams com frequências maiores ou iguais a . Isso seria em torno de features para cada dicionário. Aplicamos o algoritmo k-means variando o parâmetro entre e para tentar aplicar a elbow rule (5). Os experimentos foram separados da seguinte maneira: No primeiro usamos as features obtidas via 1-grams e no segundo juntamos os features obtidas via 1-grams + 2-grams. Após selecionar o melhor (Experimentos e ) fizemos um terceiro experimento onde dividimos o conjunto de headlines por anos ( subconjuntos no total), e aplicamos k-means em cada um deles.

6.1 Features baseadas em 1-grams

Na Figura 1 podemos analisar o gráfico da função inércia (equação 1) para o caso 1-gram. Nela observamos que de fato o valor da inércia vai diminuindo, porém, não é possível detectar se até o valor irá se estabilizar.

Na Tabela 3 apresentamos a quantidade de elementos em cada cluster para e do caso 1-gram. Podemos observar que o cluster 1 possui perto de dos dados, o resto dos dados se distribuem nos outros clusters. Esse fato foi observado também em valores de menores que .

Figura 1: Valores da função inércia 1 em relação a quantidade de cluster considerada () considerando 1-gram.
Cluster 1 2 3 4 5 6 7 8 9 10 11
k = 20 763984 28373 24319 23418 20632 14089 14027 13973 12508 10865 10624
k = 21 745966 37114 29213 27747 20618 18298 14718 11348 11282 10312 9542
Cluster 12 13 14 15 16 17 18 19 20 21 -
k = 20 10458 9149 9139 9092 8772 5702 5598 4068 1211
k = 21 8554 7836 7588 7109 6666 6193 6150 6097 5957 1693
Tabela 3: Quantidade de elementos em cada cluster, considerando e e com atributos obtidos com 1-gram.

6.2 Features com 1-grams + 2-grams

Na Figura 2 apresentamos o gráfico da função inércia considerando os atributos extraídos com 1-gram + 2-gram. Como na Figura 1 observamos que de fato o valor da inércia vai diminuindo, porém, não é possível detectar se até o valor irá se estabilizar.

Na Tabela 4 apresentamos a quantidade de elementos em cada clusters e para o caso este caso e vemos que perto de dos dados estão localizados no primeiro cluster como no Experimento descrito em 6.1.

Figura 2: Valores da função inércia 1 em relação a quantidade de cluster considerada () considerando 1-gram + 2-gram.
Cluster 1 2 3 4 5 6 7 8 9 10
k = 18 821361 32030 29574 19787 14207 11697 11501 10351 9611 8754
k = 19 783575 29295 25300 21402 18469 18032 15779 14158 14002 11201
Cluster 11 12 13 14 15 16 17 18 19
k = 18 6387 6247 6212 4533 3425 3342 602 380
k = 19 8790 8235 7265 7174 5924 4547 3444 2785 624
Tabela 4: Quantidade de elementos em cada cluster, considerando e e com atributos obtidos com 1-gram + 2-grams.

6.3 Nuvem de palavras com 1-gram + 2-grams

A Tabela 5 apresenta os principais temas dos cluster criados pelo método K-means considerando para o caso 1-gram + 2-gram. As Figuras 3 e 4 mostram as nuvens de palavras usando as headlines dos clusters referentes a "police" e "dies".

Cluster 1 2 3 4 5
Tema * us say * prices
Cluster 6 7 8 9 10
Tema hospital mayor Hewitt New York New Zeland
Cluster 11 12 13 14 15
Tema hit-run missing face court police
Cluster 16 17 18 19 -
Tema * trial council dies -
Tabela 5: Principais palavras dos clusters considerando clusters e com 1-gram e 2-gram. * palavras variadas.
Figura 3: Nuvem de palavras usando as headlines do cluster , considerando clusters e com 1-gram + 2-gram.
Figura 4: Nuvem de palavras usando as headlines do cluster , considerando clusters e com 1-gram + 2-gram.

6.4 Clusters para cada ano

Usando dividimos o conjunto de headlines por anos ( subconjuntos no total), e aplicamos k-means em cada um deles. A Figura 5 apresenta os valores da inércia para cada ano (2013-2017), nela podemos ver que a variação para cada ano é bem pequena. Na Figura 6 podemos observar a quantidade de elementos em cada cluster em cada ano, para todos os anos a cardinalidade do cluster com maior quantidade elementos foi representado na legenda.

Figura 5: Valores da função inércia 1 em relação aos anos e considerando clusters e 1-gram + 2-gram.
Figura 6: Cardinalidade de cada cluster para cada anos e considerando clusters e 1-gram + 2-gram.

7 Conclusões e Trabalhos Futuros

Os resultados indicam que a utilização de k-means separa os dados devagar tendo sempre um cluster maior que vai diminuindo de tamanho na medida que aumentamos . Achamos que isto acontece devido ao fato de que as headlines são cadeias de texto muito pequenas, entre e palavras, e temas que deveriam ser agrupados não conseguem se conectar, por exemplo, se o tema for esportes poderia ter headlines falando de tênis e futebol usando palavras diferentes.

Podemos observar consistência nos resultados. Por um lado a Figura 5 mostra que os valores da função inércia são similares para todos os anos e por outro, a Figura 6 indica que a quantidade de elementos de cada clusters ano a ano se é similar o qual seria esperado se o agrupamento estivesse relacionando os mesmos temas.

O uso de 3-grams e 4-grams pode melhorar o valor da inércia, estes atributos foram calculados porém os códigos demoravam para realizar o agrupamento e por isso ficamos apenas no caso .

Além disso as notícias costumam ser muito localizadas no tempo, assim as mais conectadas seriam as referentes a um mesmo acontecimento (por exemplo "brazil world cup") que formariam um cluster pequeno de algumas dezenas ou centenas de headlines. Isto explicaria o alto valor da função inércia. Valores menores da inércia seriam alcançados só quando o valor de é muito grande. Provavelmente um resumo da notícia (chamadas) permitiria que aparecessem nos dados mais palavras associadas ao tema que os relacionam e teríamos um melhor agrupamento.

Referências