Um Método de Identificação de Emoções em Textos Curtos para o Português do Brasil

 

 

Conceitos Gerais

    resumo -  Os avanços recentes na análise automática de textos conduziram ao surgimento de uma área responsável por reconhecimento de aspectos subjetivos, tais como opiniões, sentimentos e emoções do autor do texto analisado. Pesquisas nessa área remetem ao desenvolvimento de métodos que possibilitam que sistemas computacionais sejam capazes de reconhecer e detectar fatores afetivos no texto. Entretanto, por ser uma área relativamente nova, estes métodos ainda estão em fase de desenvolvimento e são, em sua grande maioria, para a língua inglesa. Desta forma, observa-se a necessidade de adaptação dos mesmos para outros idiomas, como o português. O presente documento tem por objetivo apresentar um método baseado em Latent Semantic Analysis de identificação de emoções em bases textuais em língua portuguesa. No caso dessa pesquisa, textos curtos serão manchetes de notícias diversas, extraídas de sites da internet, seguidas de uma breve descrição. Em algumas experimentações, o método obteve uma taxa média de identificação de emoções na ordem de 70%.

 

    O objetivo desta pesquisa é identificar automaticamente emoções em um conjunto de notícias curtas em português. As informações extraídas serão posteriormente utilizadas para realizar a animação de um avatar que faz papel de um apresentador de um programa de notícias.

Para fins da presente pesquisa, define-se como “notícia curta” um texto que, em geral, antecede a reportagem em si em qualquer noticiário. Este texto tem um comprimento limitado (em número de palavras) e pode ser entendido como a manchete e sua respectiva linha fina, que aparecem destacadas no texto e antecedem a explanação da notícia em si. A manchete possui como objetivo atrair a atenção do leitor para o texto e, por essa razão, é bastante destacada com relação ao restante do conteúdo. Como título de apoio, tem-se as “linhas finas”, que estão posicionadas imediatamente após a manchete, com menor destaque, e possuem a função de fornecer melhor explicação acerca do título principal (manchete).

Como exemplo de manchete e linha fina, temos o texto a seguir: “Dois morrem e um fica ferido após carro cair uma altura de 10 metros” (manchete): Acidente aconteceu neste sábado em Caxias do Sul. Veículo caiu com as rodas para cima em uma represa vazia (linha fina).

Para a identificação das emoções em notícias curtas, implementamos um procedimento baseado no algoritmo Latent Semantic Analysis (LSA), utilizando a linguagem Java. Com o objetivo de ilustrar melhor todo o processo, tomaremos como exemplo as seguintes notícias:

 

1.      Presidente do TCE no RS deixa hospital após assalto: João Vargas foi esfaqueado na barriga e passa bem em São Sepé. Dois suspeitos foram presos pela polícia na cidade de Santa Maria.

2.      Dois morrem e um fica ferido após carro cair uma altura de 10 metros: Acidente aconteceu neste sábado em Caxias do Sul. Veículo caiu com as rodas para cima em uma represa vazia.

3.      PRF flagra menina de 12 anos dirigindo picape em rodovia gaúcha: Segundo os policiais, jovem estava acompanhada da mãe em São Borja. Carro foi retido e a mãe autuada por deixar um menor de 18 anos dirigir.

4.      Sucuri de 8 metros é flagrada após comer uma capivara: Cobra virou atração para moradores de São José do Rio Claro (MT). Ela foi encontrada em um riacho perto de uma fazenda na cidade.

5.      Perito particular questiona imagens de acidente com ex-deputado no PR: Família de vítima contratou profissional para fazer simulação da colisão. Segundo ele, alguns segundos do filme do acidente foram removidos.

6.      Depois da guerra, Faixa de Gaza vira 'ilha à deriva': Quatro meses após ataque de Israel, território palestino segue pressionado. Mas região deve voltar a ser o foco do processo de paz no Oriente Médio.

 

A primeira etapa consiste em um pré-processamento das notícias curtas, e engloba as seguintes tarefas: ler o arquivo original de notícias, converter todas as palavras para minúsculas, remover caracteres especiais (como pontuação e números), remover stop words e aplicar um Stemmer (utilizado para reduzir os termos aos seus radicais). Com o Stemmer, os termos derivados de um mesmo radical serão contabilizados como um único termo, como no exemplo: guerra, guerrear = guerr. Essas duas últimas etapas (remoção de Stop words e Stemmer) foram desenvolvidas com o auxílio da ferramenta Weka , que conta com um algoritmo para remoção de stop words e com uma extensão do Snowball Stemmer. Estes recursos foram escolhidos por serem facilmente integráveis ao projeto desenvolvido e serem configuráveis para o português. A  seguir, observa-se o resultado dessa etapa para as notícias citadas acima:

 

1.      tce rs deix hospital assalt joã varg esfaqu barrig pass sep suspeit pres sant mar

2.      morr fic fer carr cair altur metr acident acontec cax veícul caiu rod cim repres Vaz

3.      prf flagr menin dirig picap rodov gaúch polic jov acompanh borj carr ret autu deix menor dirig

4.      sucur metr flagr com capiv cobr vir atraçã morador clar mt encontr riach pert fazend

5.      perit particul question imagens acident ex deput pr famíl vítim contrat profissional simul colisã segund acident remov

6.      guerr faix gaz vir ilha deriv ataqu israel territóri palestin seg pression volt foc paz orient medi

 

Após essa primeira etapa, dois vetores são gerados. O primeiro conterá todas as notícias curtas (documentos) já processadas. A partir desse, gera-se um segundo, que contém todas as palavras (termos) encontradas em todo conjunto de notícias curtas, sem repetições de termos. Com esses dois vetores, uma matriz (term-document matrix) é gerada e, inicialmente, preenchida com zeros. Cada linha dessa matriz corresponde a uma palavra e cada coluna corresponde a um documento. Portanto, cada célula corresponde ao número de ocorrências de um termo dentro de um determinado documento. Nessa etapa, são eliminados os termos que aparecem somente uma vez em todo conjunto de documentos. A tabela, a seguir, mostra a matriz gerada para o exemplo, onde D1, D2, D3,..., são as notícias curtas exemplificadas acima. Vale lembrar que os termos observados a seguir passaram pelo processo de stemming citado anteriormente . Esse processo é extremamente necessário para que termos que possuem significados semelhantes e mesmo radical não sejam repetidos, pois isso alteraria os resultados

 

D1

D2

D3

D4

D5

D6

D7

acident

0

1

0

0

2

0

1

acontec

0

1

0

0

0

0

1

carr

0

1

1

0

0

0

0

deix

1

0

1

0

0

0

0

dirig

0

0

2

0

0

0

0

fer

0

1

0

0

0

0

2

flagr

0

0

1

1

0

0

0

metr

0

1

0

1

0

0

0

0

0

2

0

0

0

0

vir

0

0

0

1

0

1

0

 

A partir da desta matriz, um segundo procedimento é iniciado, também com o auxílio da ferramenta Weka. Esse consiste na aplicação de uma técnica chamada Single Value Decomposition (SVD). O motivo que nos leva a utilizar o SVD consiste em encontrar uma representação dimensionalmente reduzida da matriz, que enfatize padrões e as ligações mais fortes entre termos e/ou documentos, e descarte as mais fracas, ou ruídos. A execução do SVD decompõe a matriz principal (term-document matrix) em três outras. A primeira, chamada U, nos remete a coordenadas de cada termo dentro de um espaço. A segunda matriz, aqui chamada de VT, fornece as coordenadas dos documentos nesse mesmo espaço. Finalmente, a terceira matriz, chamada S, nos permite estimar quantas dimensões deverão ser utilizadas para a obtenção dos melhores resultados. Essa dimensão também pode ser estimada arbitrariamente, através de experimentos e comparações.

A etapa seguinte consiste em definir a localização de cada grupo (emoção) no mesmo espaço criado anteriormente com o SVD. Para isso, fez-se necessária a utilização de seis listas de palavras, sendo cada uma delas relacionada com uma emoção básica utilizada no trabalho.

Na sequência, para cada emoção, busca-se todas as palavras da lista da emoção analisada na lista de termos do nosso conjunto de notícias. Sabendo-se todos os termos que, segundo nossas listas, representam emoções e, com o auxílio da matriz U, calculamos um ponto médio no espaço obtido anteriormente. Esse ponto médio define precisamente a localização do grupo naquele espaço.

Por fim, para a última etapa, é utilizada a matriz VT e o conjunto de coordenadas dos grupos de emoções. Através da similaridade Cossenoidal, determinamos a distância de cada notícia curta aos grupos definidos. Os resultados obtidos através da similaridade cossenoidal resultam em valores entre -1 e 1, onde 1 (um) representa que os dois pontos são totalmente idênticos com relação à sua localização no espaço e, 0 (zero) por sua vez, representa que os dois pontos são totalmente distantes entre si. Para facilitar a visualização destes resultados, os mesmos foram multiplicados por 100. A seguir, pode-se observar alguns exemplos do funcionamento do método, onde o maior número em módulo representa a emoção identificada pelo sistema:

 

ID

Notícia Curta

1

Dois morrem e um fica ferido após carro cair uma altura de 10 metros: Acidente aconteceu neste sábado em Caxias do Sul. Veículo caiu com as rodas para cima em uma represa vazia.

2

Presidente do TCE no RS deixa hospital após assalto: João Vargas foi esfaqueado na barriga e passa bem em São Sepé. Dois suspeitos foram presos pela polícia na cidade de Santa Maria.

3

PRF flagra menina de 12 anos dirigindo picape em rodovia gaúcha: Segundo os policiais, jovem estava acompanhada da mãe em São Borja. Carro foi retido e a mãe autuada por deixar um menor de 18 anos dirigir.

4

Perito particular questiona imagens de acidente com ex-deputado no PR: Família de vítima contratou profissional para fazer simulação da colisão. Segundo ele, alguns segundos do filme do acidente foram removidos.

 

 

ID

Alegria

Desgosto

Medo

Raiva

Surpresa

Tristeza

1

1.8643

2.1659

22.4061

1.6306

-7.6297

31.5120

2

9.3553

15.2393

-14.0036

-4.0511

9.5565

16.5808

3

-11.9080

0.6329

35.5294

10.1315

10.1518

-15.7766

4

4.4593

-12.5701

11.1476

-21.8743

-16.3681

9.2233