terça-feira, 13 de março de 2018

Text Mining - preparação dos dados

Análise de Opinião

Antes que o conhecimento seja extraído, é necessário que a qualidade do texto seja melhorada, uma vez que, os textos podem conter caracteres ou termos que não são importantes para análise. Essa etapa se chama de Pré-processamento. Para realizá-la precisamos fazer uso das técnicas de Processamento de Linguagem Natural (PLN) que segundo Liddy (2001, p.1, tradução livre) “é um conjunto de técnicas computacionais para analisar e representar ocorrências naturais de texto em um ou mais níveis de análise linguística, com o objetivo de se alcançar um processamento de linguagem similar ao humano para uma série de tarefas ou aplicações”.



Linguagem de Programação?
Para o esse exemplo utilizei a linguagem Python por ser gratuita, multiplataforma e de fácil aprendizado e bastante usada na área de Inteligência Artificial e também a biblioteca NLTK oferece recursos fáceis de usar para processamento de textos em tarefas de classificação, "tokenização", "stopwords" "stemming".

Tokenização: É a divisão do texto em partes menores. Cada parte é chamada de token e os delimitadores tanto dos tokens, como os grupos de caracteres seguem algum critério como espaço (“ “), virgulas, ponto etc.

#coding=utf-8
import nltk

texto = 'Eu tenho o meu notebook faz um ano. estou gostando muito dele até agora nenhum problema'
frases = nltk.tokenize.sent_tokenize(texto, language='portuguese')
print(frases)

>> ['Eu tenho o meu notebook faz um ano.', 'estou gostando muito dele até agora nenhum problema']

No primeiro código a separação é feita com encontrar o um ponto. O mesmo separou em duas frases.

print(texto.split(" "))
>> ['Eu', 'tenho', 'o', 'meu', 'notebook', 'faz', 'um', 'ano.', 'estou', 'gostando', 'muito', 'dele', 'até', 'agora', 'nenhum', 'problema']

Já o segundo código é mais interessante, pois pode tokenizar de acordo com os critérios citados anteriormente. A separação de frases pode nos ajudar a identificar quais palavras realmente importam nos conjuntos de textos.

Stopwords: São palavras que mais aparecem no texto sendo consideradas irrelevantes no processo de descoberta de conhecimento servindo apenas como função sintática na compreensão do assunto. Artigos, preposições, conjunções, pronomes e alguns verbos não necessitam ser indexados por possuírem frequência elevada.
A biblioteca NLTN já traz com sigo um conjunto desta palavras chamada de stoplist. Para que seja identificado as stopwords é necessário fazer a separação das palavras e depois remove-las.

stopwords = nltk.corpus.stopwords.words('portuguese')

for w in texto:
    filtrado = [e for e in texto.split() if e not in stopwords]
print(filtrado)

>> ['Eu', 'notebook', 'faz', 'ano.', 'gostando', 'ate', 'agora', 'nenhum', 'problema']

No código acima foi feita a remoção das stopword com o intuito de reduzir o número de palavras deixando apenas o conteúdo relevante para ser processado na etapa de mineração.

Stemming: É a técnica que tem como objetivo reduzir palavras que se encontram em formas derivadas para sua base (radical). Um bom exemplo disso é a alteração das formas "comeremos" e "comeram" para sua base comer. 

Mas se tratando do algoritmo de stemming que usa um processo heurístico que simplesmente corta as extremidades das palavras na tentativa de alcançar o radical, o algoritmo em geral não se preocupa com semântica das palavras.

stopwords = nltk.corpus.stopwords.words('portuguese')

stemmer = nltk.stem.RSLPStemmer()
for w in texto:
    filtrado = [str(stemmer.stem(e)) for e in texto.split() if e not in stopwords]
print(filtrado)

>> ['eu', 'notebook', 'faz', 'ano.', 'gost', 'ate', 'agor', 'nenhum', 'problem']

Esse é o produto final após aplicação do algoritmo stemming, onde o mesmo faz um recorte nas palavras na tentativa de alcançar na maioria das vezes a forma base. 

O texto já está pronto para a próxima etapa no processo de mineração de texto.



Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

Text Mining - preparação dos dados

Antes que o conhecimento seja extraído, é necessário que a qualidade do texto seja melhorada, uma vez que, os textos podem conter carac...