São elas:
- Pontuações - as pontuações no texto acabam transformando as palavras. Como o Python não sabe identificar as palavras automaticamente, uma palavra 'concluído' acaba sendo diferente de uma palavra 'concluído!'.
- Acentuações - o mesmo problema que temos nas pontuações também se aplica nas acentuações, ou seja, a palavra 'conversão' é diferente a palavra 'conversao'. Desta forma, erros ortográficos no texto são facilmente confundidos com palavras diferentes.
- Case Sensitive - este termo define quando a palavra está sendo escrita em maiúscula ou minúscula. O Python (e a maioria das linguagens de programação) identifica como palavras diferentes, por exemplo: 'Conversão' e 'conversão'.
Case Sensitive
Antes de qualquer processamento, vamos converter todo o nosso texto para letras minúsculas. Aproveitando o código do texto anterior que gera uma variável chamada texto_longo:
# -*- coding: utf-8 -*-
texto_longo = '''
Esta é uma demonstracao de como podemos escrever textos
longos. Estes textos longos podem ser parágrafos inteiros
de livros, reportagens, notícias e ate mesmo posts de blogs.
Seja qual for a sua fonte, ela poderá ter textos longos como
este, tenha certeza disto!
'''
texto_longo = texto_longo.lower()
print texto_longo
Pontuações e Acentuações
Para remoção de pontuações e acentuações podemos utilizar o comando replace() que aprendemos no post anterior para remoção das quebras de linha. A diferença aqui é que, no caso acentuações, precisamos substituir a letra acentuada pela sua correspondente não acentuada, enquanto que para pontuações basta a remoção como fizemos para as quebras de linha.
As pontuações principais são:
- Ponto final (.)
- Vírgula (,)
- Ponto de exclamação (!)
- Ponto de interrogação (?)
- Ponto-e-vírgula (;)
pontos = ['.',',','!','?',';']
for p in pontos:
texto_longo = texto_longo.replace(p, '')
print texto_longo
Para remoção das acentuações temos que substituir cada letra acentuada pela sua correspondente não acentuada utilizando também o comando replace(). Veja abaixo:
acentos = ['á','é','í','ó','ú','à','è','ì','ò','ù',
'ã','ẽ','ĩ','õ','ũ','â','ê','î','ô','û']
s_acentos = ['a','e','i','o','u','a','e','i','o','u',
'a','e','i','o','u','a','e','i','o','u']
for i in range(0, len(acentos)):
texto_longo = texto_longo.replace(acentos[i], s_acentos[i])
print texto_longo
Agora que nosso texto está preparado, vamos contar as palavras como fizemos no post anterior:
from collections import Counter
palavras = texto_longo.replace('\n',' ').replace('\t','').split(' ')
contador = Counter(palavras)
for i in contador.items():
print i
Diferente do resultado anterior, sem pré-processamento, temos agora as palavras mais frequentes:
- 'textos': 3
- 'longos': 3
- 'de': 3
No próximo post veremos como remover palavras de alta frequência e pouca relevância, chamadas de stop words, e veremos um pouco sobre extração de radicais, para eliminar o efeito da conjugação de verbos e flexão. Até a próxima!
Nenhum comentário:
Postar um comentário