Buscar

4 2 Classificação de textos Utilizando Python para construir e treinar modelos de machine learning II

Prévia do material em texto

PROCESSAMENTO 
DE LINGUAGEM 
NATURAL
Wheslley Rimar Bezerra
Análise de sentimentos — 
Utilizando Python para 
construir e treinar modelos 
de machine learning
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever processos de implementação de algoritmos de análise de 
sentimentos. 
 � Programar algoritmos de análise de sentimentos.
 � Analisar os resultados gerados por algoritmos de análise de sen- 
timentos.
Introdução
O aprendizado de máquina (do inglês, machine learning) é uma área da 
ciência da computação ligada à inteligência artificial responsável por 
treinar sistemas e dispositivos a executarem tarefas que geralmente seriam 
realizadas por humanos. Nesse sentido, utilizam-se muitas técnicas para 
que esses treinamentos sejam efetivos. O propósito do machine learning 
consiste em humanizar os processos, aproximando cada vez mais os 
dispositivos das capacidades cognitivas humanas.
Uma dessas técnicas está pautada na construção de algoritmos de 
análise de sentimentos que, entre suas muitas aplicabilidades, auxiliam 
empresas a entenderem o quão satisfeitos estão os clientes em relação 
aos seus produtos e/ou serviços, identificando e categorizando compu-
tacionalmente as opiniões expressas em um conjunto de dados textual, 
a fim de determinar se a atitude do escritor em relação a um tópico, 
produto, etc. é positivo, negativo ou neutro.
Portanto, neste capítulo, você aprenderá os processos de implemen-
tação de um algoritmo de análise de sentimentos, além de programá-lo 
utilizando a linguagem Python, e, por fim, poderá analisar os resultados 
gerados a partir dessa implementação. Ainda, trataremos do Naïve Bayes, 
um categorizador de textos que se baseia na frequência de palavras 
utilizadas, citado por Ray (2017). Ao final, abordaremos o conceito de 
matriz de confusão, que avalia a qualidade e o desempenho de um 
algoritmo (BROWNLEE, 2016).
1 Processos de implementação 
de algoritmos de análise de sentimentos
Sete etapas no processo de análise de sentimentos
Em um primeiro momento, conheceremos as sete etapas que envolvem o 
processo de análise de sentimentos. Assim, após a explicação das etapas 
1 e 2, implementaremos um algoritmo de análise de sentimentos utilizando 
a linguagem Python, a partir do qual você poderá observar em detalhes a 
descrição do que faz cada linha de código. Para a execução dos códigos deste 
capítulo, sugerimos a utilização da ferramenta on-line Google Colab, acessado 
ao digitarmos o termo “Google Colab” no buscador de escolha.
Opcionalmente, você pode utilizar outros ambientes de desenvolvimento integrado 
(IDE) para a execução dos códigos em Python, como PyCharm ou Spyder. Para realizar 
o download dessas ferramentas, digite “PyCharm” ou “Spyder IDE” no mecanismo de 
pesquisa de sua preferência.
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning2
Emoções e sentimento
Inicialmente, faz-se necessário entender alguns conceitos relacionados a 
sentimentos. De acordo com Jurafsky e Martin (2008), o primeiro deles é 
a emoção, um reflexo de eventos internos relevantes. Embora o autor fale 
sobre oito emoções, as classificações utilizam mais comumente apenas seis: 
bravo, triste, alegre, medroso, envergonhado, orgulhoso, entusiasmado e 
desesperado, sendo os mais abordados a tristeza, a raiva, a surpresa, o medo, 
o desgosto e a alegria. 
O autor ainda cita oscilações de humor como eventos difusos sem causa 
aparente, por exemplo, alegre, sombrio, irritável, apático, deprimido e dinâmico, 
além de algumas atitudes, traços e posturas que trazem mais variações, mas 
nos ateremos às seis emoções citadas. Diante de tudo isso, devemos identificar 
palavras e emoções atribuídas a esses sentimentos, como descrito a seguir.
 � Palavras relacionadas à alegria: animação, belo, anseio, admirar, etc.
 � Palavras relacionadas a desgosto: abominável, enjoo, repugnante, cha-
tear, etc.
 � Palavras relacionadas a medo: brutal, calafrio, espantoso, estremecer, 
escuridão, etc.
 � Palavras relacionadas à raiva: aversão, aborrecer, doido, diabólico, etc.
 � Palavras relacionadas à surpresa: expectativa, fantástico, encantamento, 
prodígio, etc.
 � Palavras relacionadas à tristeza: abatido, contrito, culpa, abandonar, etc.
Portanto, a primeira etapa no processamento de emoções consiste em listar 
as seis emoções apresentadas e definir quais palavras entrarão em cada emoção.
Seleção de textos
Em uma construção civil, os revestimentos e materiais reais apresentam di-
versos aspectos e características que os tornam únicos. Assim, em uma parede 
de tijolos aparentes, por exemplo, é fácil perceber que o tijolo é um material 
mais rugoso, irregular e que, entre cada tijolo, há um espaçamento de massa, 
que, no modo de instalação correta, fica mais recuada. Quando pensamos 
em uma textura de tijolo para aplicar em uma superfície, a parede do nosso 
ambiente, precisamos buscar uma imagem que apresente as características 
mais próximas possíveis do objeto real. Nesse sentido, é importante buscar 
3Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
uma imagem de qualidade em bancos de imagens nos quais podemos controlar 
a qualidade da imagem.
Para realizar a mineração de textos e a análise de emoções, com frequência 
utilizamos o conjunto de bibliotecas Natural Language Toolkit (NLTK), dis-
ponível para a linguagem Python e destinado ao processamento de linguagem 
natural, sendo muito empregado em algoritmos de machine learning. Neste 
estudo, faremos uso da NLTK, contudo, antes de aplicá-la, é importante 
conhecer alguns conceitos relacionados à mineração de emoções em textos.
No cenário atual, existem inúmeras possibilidade para a mineração de 
textos, já que encontramos opiniões de pessoas postadas nas mais diversas 
redes sociais em forma de palavras, bem como em buscadores, como o Goo-
gle, ou em diversos sites e mecanismos de pesquisa. Sabe-se, por exemplo, 
que o Google Trends analisa a estatística das palavras mais pesquisadas no 
buscador Google e que os criadores de sites utilizam meta tags para otimizar 
pesquisas orgânicas.
Aqui, abordaremos três conceitos: token, documentos e coleção. No uni-
verso da mineração de textos, palavras são chamadas por token, refletindo 
sentimentos e emoções e apresentando verdades sobre opiniões, apreços ou 
rejeição por determinado post, produto ou notícia. Já documentos, nesse con-
texto, são um arquivo único, que pode variar tanto entre e-mails, artigos Web, 
opiniões, posts e comentários quanto entre avaliações de cinco, quatro, três 
estrelas, etc., ou seja, um texto — post, artigo ou e-mail — é um documento. 
E vários textos formam uma coleção. Agora, imagine que, nesse universo 
de palavras, documentos e coleções, é necessário identificar emoções. Para 
isso, fazem-se necessário alguns passos de tratamento de textos, feitos quase 
sempre em Python, pela importação do conjunto de bibliotecas da NLTK, 
como veremos mais adiante. 
Em um documento, ao usar NLTK, deve-se excluir palavras stopword (sem 
significado), como “e”, “ou”, etc. Além disso, é importante que as palavras 
estejam na mesma formatação, ou seja, em letras minúsculas. Antes de tudo, ao 
analisar um texto, é necessário calcular a frequência, denominada TF — taxa 
de frequência (FOSTER; FAWCETT, 2016) —, segundo a fórmula a seguir:
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning4
Para exemplificar, vamos usar um exemplo de mineração de emoções, no 
qual em um documento analisado a avaliação “Bom atendimento” aparece 
3 vezes, “Agilidade” 2 vezes, e “Qualidade” 1 vez. Para calcular a taxa de 
frequência das palavras, fazemos um cálculo de normalização:
 � normalizada Bom atendimento = 3/3;
 � tf normalizada Agilidade = 2/3;
 � tf normalizada Qualidade = 1/3.
Agora, em outro exemplo, em uma coleção inteira de documentos, são 
oito documentos analisados.Ao analisar a frequência dessas palavras na 
coleção inteira, percebe-se que nem sempre uma emoção muito presente em 
um texto consta na maioria dos textos. Na coleção em questão, temos: “Bom 
atendimento” (ocorre em 5 documentos), “Agilidade” (em 1 documento) e 
“Qualidade” (em 8 documentos). Assim, é necessário calcular a quantidade 
de repetição do corpo completo.
 � Índice de avaliação de Bom atendimento = 3/3 × 5 = 5.
 � Índice de Importância de Agilidade = 2/3 × 1 = 0,66.
 � Índice de Importância de Qualidade = 1/3 × 8 = 2,66.
Usar cálculos de palavras mais citadas ajuda a identificar o que de fato é 
importante; ainda, existe um conceito chamado clusterização, que auxilia na 
venda de produtos combinados ou oferta por público-alvo. Em clusterização 
por produtos combinados, por exemplo, sabendo que, entre todos que falam 
de pipoca em um texto, 80% também falam de refrigerante, identificamos 
a possibilidade de fazer um combo para promoções. Já em clusterização por 
público-alvo, por exemplo, pode-se dividir as análises de textos por clusters 
por idade, avaliando uma coleção de textos de jovens entre 20 e 30 anos, outra 
entre adultos de 30 a 40 anos e outra entre adultos de 40 a 50 anos. Assim, 
é possível descobrir semelhanças úteis entre as opiniões de cada grupo, que 
auxiliam na formação de futuras propagandas. 
5Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
2 Programação de algoritmos de análise 
de sentimentos
Certamente, você percebeu que o processo de análise de sentimentos exige 
uma série de cuidados especiais, com uma grande atenção aos detalhes, para 
que o resultado seja efetivo e o algoritmo tenha sucesso em seus propósitos. 
Analisar sentimentos em textos requer treinar o algoritmo com uma base de 
dados ampla, excluindo tudo aquilo que é desnecessário, como as stopwords, 
que veremos a seguir.
Assim, a partir desse ponto, veremos como se dá todo o processo de análise 
de sentimentos utilizando a linguagem Python.
Remoção das stopwords
Para eliminar todas as stopwords, execute as etapas a seguir em seu ambiente 
integrado de desenvolvimento. 
No seguinte exemplo, foi feita uma pesquisa em 10 posts de comentários 
sobre uma rede de fast food, tendo-se identificado que as frases contidas na 
variável basetreinamento se repetiram de uma forma ou de outra, com 
maior frequência em toda a coleção. Nosso objetivo aqui é mostrar como 
remover stopwords da base de treinamento de emoção, motivo pelo qual você 
precisa ler os códigos; contudo, antes de colocar isso em prática, observe a 
Figura 1, pois ela mostra, no canto esquerdo, o código inteiro e, no direito 
inferior, o resultado. Para executar cada comando do código, selecione a frase 
completa, cole no Google Colab e pressione Alt Enter. No nosso exemplo, 
usamos o Spyder, mas recomendamos que empregue o Google Colab. 
A Figura 1 mostra o resultado no canto direito sem stopwords. Faça um 
teste: ao copiar a função que inicia com def, mantenha exatamente o mesmo 
espaçamento (indentação).
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning6
Figura 1. Remoção de stopwords.
Função que remove stopwords
Criação de frases que aparecem
frequentemente na coleção de post
De�nição de stopwords
Resultado da linha 26,
que exibe a base sem
stopwords
Stemização
Agora, falaremos de stemização (do inglês, stemmming), isto é, a remoção de 
sufixos, o que nos leva a manter apenas os prefixos das palavras.
Segundo Rouse (2018), stemização consiste no processo de redução de 
uma palavra ao seu radical. Assim, o prefixo am, por exemplo, das palavras 
“amar”, “amou”, etc., será igualmente calculado. 
Novamente, explicaremos passo a passo como se dá esse processo na Figura 2.
Figura 2. Processo de stemização.
Aqui importamos duas bibliotecas
que auxiliam na tradução da sintaxe
para português:
Colocamos na variável stopwordsnltk
as stopwords em português
A função descrita abaixo removerá o
su�xo (fará o stemm) das palavras através
da divisão (split) e da remoção do su�xo
Palavras sem su�xo, resultado da linha 46
7Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
Treinar a base para o aprendizado de máquina
Nesta etapa, executaremos alguns comandos que serão responsáveis pelo 
treinamento do algoritmo. O primeiro deles consiste em contar quantas vezes 
aparecem as 30 palavras principais (Figura 3), o que é feito por meio da palavra 
nativa chamada FreqDist.
Figura 3. Cálculo da frequência de palavras.
Primeiro note que vamos dissociar as palavras
das emoções e pegar só as palavras
Perceba que usaremos o FreqDist para calcular a
frequência. Em seguida, imprimiremos na tela, as
stopwords em português
Resultado das 30 palavras mais comuns
Até aqui, com esses dados, já é possível criar uma tabela (Quadro 1), 
relacionando palavras a sentimentos, para proceder com tomadas de decisões 
em relação a filtros de bancos de dados. Pode-se navegar em meio a um banco 
de dados textual e procurar as palavras contidas na primeira linha da tabela 
para agilizar pesquisas de sentimentos. É recomendável fazer a remoção de 
stopwords, a stemização e o levantamento de frequência da maior quantidade 
de linhas, para, assim, criar uma tabela mais complexa do que está embaixo.
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning8
La
nc
he
A
m
o
A
ss
us
En
tr
eg
Ir
ri
ta
nt
D
em
Su
rp
re
en
d
D
es
ap
ro
v
Alegria 3 2 1
Surpresa 2
Medo 2
Tristeza
Desgosto 1
Raiva 1 1 1
Quadro 1. Analisando palavras para pesquisas em bancos de dados
Aplicar o teste de palavras
Supomos que você precisa saber se determinada palavra, ou algumas pala-
vras, está no texto (Figura 4), além dos sentimentos que ela reflete. No nosso 
exemplo, gostaríamos de saber se as palavras em seus radicais admir, hoje e 
bonit estão no texto e os sentimentos a elas associados.
Figura  4. Descobrir se as três palavras estão presentes.
Em banco de dados, para descobrir se as palavras
estão presentes, costuma-se usar o símbolo de %
no meio da palavra, para descobrir se aquele trecho
está presente, assim, criaremos a função
analisarpalavras:
O resultado mostrará que tem “admir”, tem “hoj” , e tem “bonit”.
9Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
Agora, vamos descobrir os sentimentos associados a cada uma dessas 
palavras, pela utilização do classificador Naïve Bayes, que, embora explicare-
mos após o script, refere-se ao modelo matemático de probabilidade que faz o 
treinamento de probabilidade a priori e, depois, o aplica a posteriori. De acordo 
com Jurafsky e Martin (2008), a todo momento nossos rostos, vozes e palavras 
dizem algo, e criar modelos que treinem bases para classificar sentimentos 
representa uma das muitas ações da NLTK aplicada em Bayes (Figura 5).
Figura 5. Avaliação de palavras.
Aplica o método bayesiano na classi�cação
Descobre qual sentimento a palavra
“boni” na variável “teste_bonit” denota.
Resultado = alegria
Descobre qual sentimento a palavra
“amedrontado” na variável “teste_am”
denota. Resultado = medo
Descobre qual sentimento a palavra “hoje”
na variável “teste_hj” denota.
Resultado = medo
Um questionamento que pode surgir é: como o algoritmo de Bayes faz 
uma decisão?
A equação de Bayes é feita da seguinte maneira:
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning10
Para entender essa equação, vamos supor a análise de oito pessoas dife-
rentes, conforme o Quadro 2.
PESSOA
FAIXA 
SOCIAL
ESTADO 
CIVIL
TEM PAIS 
VIVOS
COMPRAR 
CASA?
1ª Pessoa MÉDIA SOLTEIRO SIM SIM
2ª Pessoa BAIXA CASADO NÃO NÃO
3ª Pessoa ALTA DIVORCIADO NÃO SIM
4ª Pessoa MÉDIA SOLTEIRO NÃO SIM
5ª Pessoa MÉDIA CASADO SIM NÃO
6ª Pessoa ALTA SOLTEIRO NÃO NÃO
7ª Pessoa BAIXA CASADO SIM SIM
8ª Pessoa BAIXA CASADO SIM NÃO
Quadro 2. Pesquisas
Agora,aplicaremos a fórmula descrita para identificar, por faixa social, 
quem tem maior probabilidade de comprar uma casa, como mostrado no 
Quadro 3.
Não Sim
BAIXA 2 1 =3/8 0,375
MÉDIA 1 2 =3/8 0,375
ALTA 1 1 =2/8 0,25
Total 4 4
4/8 4/8
0,5 0,5
Quadro 3. Análise de probabilidade da compra de uma casa
11Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
Quem é de classe alta compra casa (sim) com qual probabilidade?
Quem é de classe média compra casa (sim) com qual probabilidade?
Quem é de classe baixa compra casa (sim) com qual probabilidade?
Nesse momento, surgem algumas dúvidas: a classe média compra mais 
casas que a classe alta? Na verdade, pode ser que sim, ou não, motivo pelo qual 
se torna necessário calcular o Bayes dos índices para traçar a probabilidade 
de cada cluster (grupo específico). 
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning12
Esse é o cálculo feito no classificador de emoções contido nas variáveis 
citadas:
 � basecomclassificador = nltk.classify.apply_
features(analisarpalavras, frasescomstemming)
 � print(basecomclassificador)
3 Análise dos resultados
Cada negócio, dataset e banco, além de cada conjunto de letras, apresenta uma 
lógica interna, formada por fatores econômicos, geográficos, demográficos, 
psicológicos, mercadológicos, processuais, legais, sociográficos, governamen-
tais e climáticos, ou seja, cada caso deve ser analisado individualmente. Cada 
planilha de dados coletados tem uma probabilidade e uma lógica interna, e 
descobrir essa lógica constitui a base do Data Science.
A matriz de confusão avalia na primeira coluna se o que era para dar 
positivo deu positivo, ou se o que era para dar negativo deu negativo; então, 
teríamos verdadeiro positivo e verdadeiro negativo. A última coluna avalia 
se o previsto foi falso, se o que era para dar positivo deu falso negativo, ou se 
o que era para dar negativo deu falso positivo. 
No Quadro 4, podemos observar uma matriz de confusão, na qual temos 
quatro palavras — feliz, alegre, triste e chateada. No exemplo, o código de 
Naïve Bayes colocou as palavras nas colunas positivo e negativo, de acordo 
com o treinamento ao qual o algoritmo foi exposto.
É ALEGRIA?
Previsto
Re
al
id
ad
e
Positivo (coluna 1) Negativo (coluna2)
Positivo Feliz e Alegre
(VERDADEIRO POSITIVO)
Chateada
(FALSO NEGATIVO)
Negativo (VERDADEIRO NEGATIVO) Triste
(VERDADEIRO NEGATIVO)
Quadro 4. Matriz de confusão
13Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
Avaliar acurácia e matriz de confusão
Agora que você já sabe analisar textos, precisa verificar se a análise está correta, 
contexto no qual a matriz de confusão se insere, já que analisa se o esperado se 
cumpriu. Sempre que se faz um algoritmo, é necessário testá-lo. No exemplo a seguir, 
você perceberá que o teste acertou em tudo, exceto em uma palavra, “tristeza”, visto 
que o treinamento de “tristeza” foi pequeno. O ideal é colocar no mínimo 10 frases e 
tentar descobrir o motivo pelo qual o teste errou, verificando qual palavra foi usada.
Faremos a matriz de confusão no Python. A Figura 6 mostra a criação de 
uma base para treino.
Figura 6. Treinamento de base.
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning14
A Figura 7 exibe a criação de uma base para teste, importação de ferra-
mentas de idioma e tradução para português, além da remoção de stopwords.
Figura 7. Remoção de stopwords e criação da base de teste.
A Figura 8 mostra a stemização tanto do treino quanto do teste: nas linhas 
72 a 80, é criada a função de stemizar e, nas linhas 80 e 81, as variáveis de 
stemm para ambas as bases; já nas linhas 84 a 90, a figura mostra como colocar 
todas as palavras de cada base em duas variáveis — palavrastreina e 
palavrasteste. Nesse ponto, ela remove as emoções após a vírgula, mas 
as deixa armazenadas na variável emotion para usos futuros. 
15Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
Figura 8. Stemização e separação de palavras de emoções.
Na Figura 9, nas linhas 93 até 95, como o FreqDist, a função 
buscarpalavras calcula a frequência de cada palavra de cada base, que será 
colocada, nas linhas 89 e 90, nas variáveis frequenciatest e frequen-
ciatreina. Nas linhas 101 até 107, a função procurapalavrasunicas 
descobre quais palavras são únicas em cada base. 
Figura 9. Busca da frequência e de palavras únicas.
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning16
Na Figura 10, o algoritmo descobre se as palavras entre aspas estão no 
código. Pode-se também pesquisar frases.
Figura 10. Pesquisa de palavras ou frases.
Fonte: Do autor – 2020.
Na Figura 11, é criado o classificador, pelo nltk.classify, nas duas 
bases de treinamento e teste: basecheiatreinamento e basecheia-
teste nas linhas 120 e 121. A linha 124 treina a basecheiatreina-
mento no Naïve Bayes, para compreender as emoções e armazená-las, para, 
posteriormente na análise da matriz de confusão, linha 128, comparar com a 
basecheiateste na linha 131; o resultado está à direita. 
Figura 11. Realização da matriz de confusão.
Também é possível analisar a matriz de confusão com outra biblioteca, 
a scikit-learn, que, assim como a NLTK, pode ser utilizada no aprendizado 
de máquina. A vantagem da scikit-learn reside no fato de que ela também faz 
cálculos rápidos de regressão linear, analisando quando um indicador influencia 
em outro, além de cálculos de classificação, entre outros cálculos estatísticos. 
Ela pode ser é utilizada com matplotlib, uma biblioteca que desenha gráficos. 
Assim, as conclusões matemáticas de scikit-learn se dão por desenhos mais 
visuais e agradáveis.
17Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning
No exemplo que estamos seguindo, que pode ser analisado rapidamente, 
temos o verdadeiro na linha 1, o previsto na linha 2 e a análise na linha 3. 
O resultado da matriz de confusão é dado conforme a Figura 12.
Figura 12. Matriz de confusão no sklearn.
Para finalizar, segue mais um exemplo na Figura 13, agora de maneira 
ordenada.
Figura 13. Matriz de confusão no sklearn ordenada.
Isso pode ser feito com grandes bases de textos importadas, bastando so-
mente substituir as linhas 1 e 2 por importações de arquivos csv ou arrays 
da biblioteca numpy.
Neste capítulo, você pôde perceber que a linguagem Python, pela remoção 
de stopwords, a stemização, a análise de frequência e o treinamento com 
Bayes, tem o poder de avaliar emoções contidas em uma frase, a partir da 
Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning18
inteligência artificial e da machine learning. Entretanto, é importante mencionar 
a necessidade de sempre analisar a eficácia do algoritmo para evitar análises 
erradas, para o qual devemos fazer uso da matriz de confusão.
BROWNLEE, J. What is a Confusion Matrix in Machine Learning. Machine Learning 
Mystery, Vermont, 18 Nov. 2016. Disponível em: https://machinelearningmastery.com/
confusion-matrix-machine-learning/. Acesso em: 9 maio 2020.
FOSTER, P.; FAWCETT, P. Data science para negócios: o que você precisa saber sobre 
mineração de dados e pensamento analítico de dados. Rio de Janeiro: Alta Books, 
2016. 408 p.
JURAFSKY, D.; MARTIN, J. H. Speech and language processing: an introduction to natural 
language processing, computational linguistics, and speech recognition. 2. ed. Upper 
Saddle River: Prentice Hall, 2008. 1024 p.
RAY, S. 6 Easy Steps to Learn Naive Bayes Algorithm with codes in Python and R. 
Analytics Vidhya, Gurgaon, 11 Sep. 2017. Disponível em: https://www.analyticsvidhya.
com/blog/2017/09/naive-bayes-explained/. Acesso em: 9 maio 2020.
ROUSE, M. What is stemming? Search Enterprise AI, Newton, Jan. 2018. Disponível em: ht-
tps://searchenterpriseai.techtarget.com/definition/stemming.Acesso em: 9 maio 2020.
Leituras recomendadas
BIRD, S.; KLEIN, E.; LOPER, E. Natural language processing with Python: analyzing text with 
the Natural Language Toolkit. Sebastopol: O’Reilly, 2009. 504 p.
ESCOVEDO, T.; KOSHIYAMA, A. Introdução a data science: algoritmos de machine learning 
e métodos de análise. São Paulo: Casa do Código, 272 p.
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
19Análise de sentimentos — Utilizando Python para construir e treinar modelos de machine learning

Continue navegando