O Sentimento de um Texto: Primeiros Passos

Um dos objectivos do projecto POPSTAR é construir um sistema capaz de processar um texto indicando se estão mencionados actores políticos e qual o sentimento expresso em relação a eles. A nossa noção de sentimento é simplista: um texto pode conter uma opinião positiva, negativa ou neutra. A ausência de opinião ou sentimento é considerada também ela neutra.

Mas como podemos implementar este sistema? À primeira vista parece uma tarefa muito complicada – uma máquina entender mínimamente uma opinião ou um estado de espírito humano – e, de facto, é.

A primeira abordagem que talvez nos ocorra é escrever um conjunto de regras gramaticais. Por exemplo, no nosso caso queremos o sentimento em relação a um político portanto podemos começar com regras simples deste género:

  • “POLÍTICO” é “PALAVRA MÁ”: sentimento negativo
  • “POLÍTICO” é “PALAVRA BOA”: sentimento positivo

Para isto precisamos de uma lista de palavras boas e más, a que chamamos um léxico de polaridade ou sentimento. Um exemplo sofisticado é o SentiLex http://dmir.inesc-id.pt/project/SentiLex-PT_02 que além de conter palavras, contem também expressões e informação quanto à sua utilização. Mas e se as palavras estiverem negadas? Se houver quantificadores à mistura? Figuras de estilo? As nossas regras começam a multiplicar-se, sendo que temos que as escrever e manter à mão, além do léxico.

  • Boas: bonito, estimado, etc.
  • Más: castigado, enganar, etc.

Esta abordagem baseada em regras tem dois problemas principais: o enorme trabalho manual exigido e fraca robustez. Quando digo fraca robustez quero dizer que as regras estão normalmente pensadas para um certo tipo de texto, sem erros ortográficos e com frases relativamente simples. Saindo desses moldes a performance do sistema cai. Num ambiente como a Internet a escrita é informal e muito criativa (chamemos-lhe assim), o que faz com que seja díficil definir regras generalistas.

“Basta!!!!!!….qualquer pessoa de bom senso sabe que o Sr Barroso apenas representa os interesses Neoliberais…..ele obedece fielmente ao dono …lindo menino!!” – Paulo Vilarinho, comentários do Público

Outra abordagem ainda mais simples que podemos usar, é uma contagem de palavras positivas e negativas. Temos um texto, temos listas de palavras boas e más, contamos quantas palavras boas e quantas palavras más aparecem e consoante as que estiverem em maior número, atribuímos uma polaridade. Podemos até usar esta abordagem como plano de contingência no caso das regras, quando nenhuma se aplicar.

Basta olhar para o exemplo acima para perceber que esta abordagem tem sérias limitações. Embora haja claramente uma maioria por parte das palavras positivas, o sentimento do texto é também claramente negativo. A solução para este problema tem de ser mais sofisticada. Para além das palavras é preciso olhar para a pontuação, é preciso dar mais importância a certas palavras e menos a outras, é preciso considerar o contexto.

Mas como podemos definir o que quer dizer mais ou menos pontuação? E que pesos devemos dar às palavras? No fundo, como podemos relacionar os vários aspectos do texto com a sua polaridade? Uma possível resposta é: deixamos a máquina aprender e descobrir essas relações.

Num futuro post explicaremos como podemos ensinar a máquina. Não percam o próximo episódio! Se não quiserem esperar, podem fazer batota, está no Q&A uma secção sobre isto.

Deixar uma resposta