{"id":4304,"date":"2025-05-10T10:04:09","date_gmt":"2025-05-10T13:04:09","guid":{"rendered":"https:\/\/geekblogti.wpengine.com\/?p=4304"},"modified":"2025-05-15T11:01:11","modified_gmt":"2025-05-15T14:01:11","slug":"mineracao-de-texto-python-para-descobrir-emocoes","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/","title":{"rendered":"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">O que as pessoas pensam sobre a sua empresa, ou sobre a empresa que voc\u00ea trabalha?<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">H\u00e1 um tempo, comecei a estudar um conte\u00fado dentro do aprendizado de m\u00e1quina conhecido como an\u00e1lise de texto \u2014 ou minera\u00e7\u00e3o de emo\u00e7\u00f5es. Este campo tenta identificar emo\u00e7\u00f5es em texto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Por exemplo: hoje estou feliz. <\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Quem for ler esta frase perceber\u00e1 que trata-se de uma frase de <strong>alegria<\/strong>, entretanto como fazer o computador entender que esta frase \u00e9 uma frase de felicidade?<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A resposta \u00e9 mais ou menos simples: utilizando o <strong>aprendizado de m\u00e1quina<\/strong>. Essa pergunta tem um peso ainda maior quando falamos do mundo corporativo.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Imagina escanear a rea\u00e7\u00e3o de um montante grande de pessoas e, com isso, acelerar uma tomada de decis\u00e3o, como uma automa\u00e7\u00e3o, que tem uma influ\u00eancia direta sobre o <em>business<\/em>?<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ou sobre o<em> customer success<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Bem, hoje n\u00f3s falaremos sobre como usar a minera\u00e7\u00e3o de emo\u00e7\u00e3o, por meio de texto e utilizando a <strong><a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/append-python-quando-utilizar-listas-e-quando-evitar\/\">linguagem Python<\/a><\/strong>. \u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Vamos l\u00e1?<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Minera\u00e7\u00e3o de emo\u00e7\u00f5es nas redes sociais<\/h2>\r\n\r\n\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Se pararmos para pensar as pessoas nunca se comunicaram tanto por redes sociais como hoje. Seja facebook, Twitter, Instagram entre outras redes sociais.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">As pessoas demonstram seus sentimentos e suas vontades via redes sociais.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ent\u00e3o, poder\u00edamos usar como \u2018term\u00f4metro\u2019 para saber se nossa empresa est\u00e1 sendo bem falada ou n\u00e3o estas redes sociais. Certo? \u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Um bom come\u00e7o para nosso estudo ser\u00e1 o <strong>Twitter,<\/strong> j\u00e1 que o mesmo disp\u00f5e de uma API para desenvolvedores para coletar tweets, a chamada <em>tweepy<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Sim, esta biblioteca est\u00e1 dispon\u00edvel para<strong> Python<\/strong>, que ser\u00e1 a linguagem utilizada no meu exemplo, como j\u00e1 adiantei.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Imagine o seguinte cen\u00e1rio. Trabalhamos em uma empresa que produz \u201ccapinha de celular\u201d e desejamos saber o que as pessoas comentam sobre nossos produtos.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Com isso podemos criar uma campanha de marketing para lan\u00e7ar um produto novo, ou detectar alguma falha j\u00e1 existente e corrigi-la.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>&gt;&gt;Leitura Recomendada:<\/strong><br \/>Leia nosso artigo sobre <a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/python-microservices\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Python Microsservices<\/strong><\/a><\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Mas como catalogar emo\u00e7\u00f5es?<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Segundo o psic\u00f3logo <strong>Paul Ekman<\/strong> existem seis tipos de emo\u00e7\u00f5es b\u00e1sicas que s\u00e3o:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\">\r\n<li>Surpresa<\/li>\r\n<li>Alegria<\/li>\r\n<li>Tristeza<\/li>\r\n<li>Medo<\/li>\r\n<li>Desgosto ou nojo<\/li>\r\n<li>Raiva<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Por\u00e9m, para o nosso caso decidimos catalogar as frases em duas emo\u00e7\u00f5es que s\u00e3o: <strong>alegria<\/strong> e <strong>raiva.<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Se uma frase for de alegria, para n\u00f3s, significa, que a pessoa est\u00e1 feliz com o produto. Mas, se uma frase for de raiva significa que a pessoa est\u00e1 descontente com nosso produto.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Minera\u00e7\u00e3o de texto usando python na pr\u00e1tica<\/h2>\r\n\r\n\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para fins did\u00e1ticos separei em se\u00e7\u00f5es os passos da constru\u00e7\u00e3o do <strong><a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/algoritmos-de-recomendacao-o-que-sao-e-como-implementa-los\/\">algoritmo de <em>machine learning<\/em><\/a><\/strong> para que possamos classificar as frases como sendo de <strong>alegria, <\/strong>ou de <strong>raiva<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Imagine que j\u00e1 coletamos os<em> tweets<\/em> e agora partiremos para o pr\u00e9-processamento das nossas frases coletadas.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>base = [(&#8216;Essa capinha de celular \u00e9 muito boa&#8217;, &#8216;alegria&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Gostei muito desta capinha de celular&#8217;, &#8216;alegria&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Capinha maravilhosa&#8217;, &#8216;alegria&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Que capinha bonita&#8217;, &#8216;alegria&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Abaixo do esperado&#8217;, &#8216;raiva&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;N\u00e3o gostei&#8217;, &#8216;raiva&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Desbotou na primeira semana&#8217;, &#8216;raiva&#8217;), <br \/>\u00a0 (&#8216;Olha s\u00f3 essa capinha! &#8216;, &#8216;alegria&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Material de baixa resist\u00eancia&#8217;, &#8216;raiva&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;Custo benef\u00edcio excelente&#8217;, &#8216;alegria&#8217;),<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(&#8216;A foto \u00e9 diferente do produto&#8217;, &#8216;raiva&#8217;)]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Usaremos este banco de dados com 11 frases para o entendimento ficar mais claro, por\u00e9m a l\u00f3gica ser\u00e1 a mesma para uma quantidade maior de frases.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O \u201c<em>pulo do gato<\/em>\u201d \u00e9 mapear a maior quantidade de frases similares entre si, que expressam esses dois sentimentos.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Antes de come\u00e7armos o<em> pr\u00e9-processamento <\/em>precisaremos instalar a <strong>biblioteca nltk<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para isso podemos utilizar o comando<strong> pip install nltk<\/strong> no <em>prompt de comando<\/em> (mais sobre a<a href=\"https:\/\/pypi.org\/project\/nltk\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" biblioteca nltk (abre numa nova aba)\"><strong> biblioteca nltk<\/strong><\/a> aqui)<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ap\u00f3s instalar, precisamos fazer o <em>download<\/em> de algumas cole\u00e7\u00f5es da biblioteca nltk, para isso abrimos o <em>prompt de comando<\/em>, digitamos <strong>python<\/strong> e quando aparecer:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> &gt;&gt;&gt; <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">importaremos a biblioteca nltk<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> &gt;&gt;&gt; import nltk <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">e em seguida digitamos o seguinte comando<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> &gt;&gt;&gt; nltk.download() <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ent\u00e3o, ser\u00e1 aberta esta tela:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img fetchpriority=\"high\" decoding=\"async\" width=\"580\" height=\"486\" class=\"wp-image-7985\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2019\/10\/tabela-python-para-minerar-emocoes..jpg\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/10\/tabela-python-para-minerar-emocoes..jpg 580w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/10\/tabela-python-para-minerar-emocoes.-150x126.jpg 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/10\/tabela-python-para-minerar-emocoes.-100x84.jpg 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/10\/tabela-python-para-minerar-emocoes.-450x377.jpg 450w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora basta fazer o <em>download<\/em> do <strong>all-corpora<\/strong>. Feito, isso vamos para o pr\u00e9-processamento das frases.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Pr\u00e9-processamento<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Em qualquer idioma existem palavras que n\u00e3o agregam muito sentido a frases como por exemplo: \u201ca\u201d, \u201cas\u201d, \u201ce\u201d, \u201cde\u201d, \u201cdas\u201d e etc\u2026 essas palavras na biblioteca <strong>nltk* <\/strong>s\u00e3o conhecidas como <strong>StopWords. <\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ent\u00e3o, sim, estas palavras podem gerar algum tipo de ru\u00eddo indesej\u00e1vel para nossas an\u00e1lises posteriores.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">*<em>conjunto de bibliotecas para PLN (processamento de linguagem natural simb\u00f3lica e estat\u00edstica) em Pytho<\/em>n<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Outra coisa que podemos fazer nessa mesma etapa \u00e9 retirar o sufixo e o prefixo das palavras e ficar apenas com seu radical. Observe as palavras:<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong><em>Carro <\/em><\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong><em>Carrinho <\/em><\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong><em>Carr\u00e3o<\/em><\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">As tr\u00eas palavras dizem respeito a algum tipo de carro, ent\u00e3o o que podemos fazer \u00e9 retirar o sufixo da palavra e ficar apenas com seu radical.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Isto \u00e9, <em>carr<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Iremos fazer isso com todas as nossas palavras, por\u00e9m, ao fazermos isso, podemos perder um pouco de informa\u00e7\u00e3o.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Isso quer dizer que retirar uma <strong>Stopword<\/strong>, sufixo e prefixo tem um certo custo e devemos analisar se vale a pena ou n\u00e3o fazer esse processo.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Criando o algoritmo de minera\u00e7\u00e3o de texto<\/h2>\r\n\r\n\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Vamos voltar \u00e0 biblioteca <strong>nltk: <\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>import nltk<br \/>stopwords=nltk.corpus.stopwords.words(&#8216;portuguese&#8217;)<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Esse pacote cont\u00e9m radicais de v\u00e1rias l\u00ednguas assim como <strong>Stopwords<\/strong>, e o que rola \u00e9 que elas variam de l\u00edngua para l\u00edngua, ent\u00e3o precisamos referenciar o portugu\u00eas na segunda linha.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora teremos uma lista com as<strong> stopwords<\/strong> se fizermos o comando:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> print(stopwords) <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Receberemos uma lista com as <em>stopwords <\/em>em portugu\u00eas parecida com essa:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> ['de', 'a', 'o', 'que', 'e', '\u00e9', 'do', 'da', 'em', 'um', 'para', 'com', 'n\u00e3o', 'uma', 'os', 'no', 'se', 'na', 'por', 'mais', 'as', 'dos', 'como', 'mas', 'ao', 'ele', 'das', '\u00e0', 'seu', 'sua', 'ou', 'quando', 'muito', 'nos', 'j\u00e1', 'eu', 'tamb\u00e9m', 's\u00f3', 'pelo', 'pela', 'at\u00e9', ,....,'ter\u00edamos', 'teriam'] <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Agora criaremos a fun\u00e7\u00e3o que faz o processamento que falamos anteriormente:<\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>\u00a0<br \/>def fazstemmer(texto):<br \/>\u00a0\u00a0\u00a0\u00a0stemmer = nltk.stem.RSLPStemmer()<br \/>\u00a0\u00a0\u00a0\u00a0frasessstemming = []<br \/>\u00a0\u00a0\u00a0\u00a0for (palavras, emocao) in texto:<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0comstemming = [str(stemmer.stem(p))<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for p in palavras.split() if p not in stopwords]<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0frasessstemming.append((comstemming, emocao))<br \/>\u00a0\u00a0\u00a0\u00a0return frasessstemming<br \/>\u00a0<br \/>\u00a0<br \/>frasescomstemming = fazstemmer(base)<br \/><em>print(frasescomstemming)<\/em><br \/><br \/><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>E como resultado temos o seguinte : <\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[([&#8216;ess&#8217;, &#8216;cap&#8217;, &#8216;celul&#8217;, &#8216;boa&#8217;], &#8216;alegria&#8217;), ([&#8216;gost&#8217;, &#8216;dest&#8217;, &#8216;cap&#8217;, &#8216;celul&#8217;], &#8216;alegria&#8217;), ([&#8216;cap&#8217;, &#8216;maravilh&#8217;], &#8216;alegria&#8217;), ([&#8216;que&#8217;, &#8216;cap&#8217;, &#8216;bonit&#8217;], &#8216;alegria&#8217;), ([&#8216;abaix&#8217;, &#8216;esper&#8217;], &#8216;raiva&#8217;), ([&#8216;n\u00e3o&#8217;, &#8216;gost&#8217;], &#8216;raiva&#8217;), ([&#8216;desbot&#8217;, &#8216;prim&#8217;, &#8216;seman&#8217;], &#8216;raiva&#8217;), ([&#8216;olh&#8217;, &#8216;capinha!&#8217;], &#8216;alegria&#8217;), ([&#8216;mater&#8217;, &#8216;baix&#8217;, &#8216;resist&#8217;], &#8216;raiva&#8217;), ([&#8216;cust&#8217;, &#8216;benefici&#8217;, &#8216;excel&#8217;], &#8216;alegria&#8217;), ([&#8216;a&#8217;, &#8216;fot&#8217;, &#8216;difer&#8217;, &#8216;produt&#8217;], &#8216;raiva&#8217;)]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Perceba acima, por exemplo, a primeira frase que era:<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>\u201cEst\u00e1 capa de celular \u00e9 o m\u00e1ximo\u201d<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">&#8230;que na fun\u00e7\u00e3o ficou:<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>\u201cest cap celul m\u00e1x\u201d<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Mas, perceba que as frases est\u00e3o organizadas em tuplas contendo a frase e a emo\u00e7\u00e3o, ent\u00e3o o que faremos agora \u00e9 uma fun\u00e7\u00e3o que organiza somente as palavras em uma lista:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>def buscapalavras(frases):<br \/>\u00a0\u00a0\u00a0\u00a0todaspalavras = []<br \/>\u00a0\u00a0\u00a0\u00a0for (palavras, emocao) in frases:<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0todaspalavras.extend(palavras)<br \/>\u00a0\u00a0\u00a0\u00a0return todaspalavras<br \/>\u00a0<br \/>frasescomstemming = fazstemmer(base)<br \/>print(frasescomstemming)<br \/><br \/><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>E como resultado teremos a seguinte lista:<\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[&#8216;ess&#8217;, &#8216;cap&#8217;, &#8216;celul&#8217;, &#8216;boa&#8217;, &#8216;gost&#8217;, &#8216;dest&#8217;, &#8216;cap&#8217;, &#8216;celul&#8217;, &#8216;cap&#8217;, &#8216;maravilh&#8217;, &#8216;que&#8217;, &#8216;cap&#8217;, &#8216;bonit&#8217;, &#8216;abaix&#8217;, &#8216;esper&#8217;, &#8216;n\u00e3o&#8217;, &#8216;gost&#8217;, &#8216;desbot&#8217;, &#8216;prim&#8217;, &#8216;seman&#8217;, &#8216;olh&#8217;, &#8216;capinha!&#8217;, &#8216;mater&#8217;, &#8216;baix&#8217;, &#8216;resist&#8217;, &#8216;cust&#8217;, &#8216;benefici&#8217;, &#8216;excel&#8217;, &#8216;a&#8217;, &#8216;fot&#8217;, &#8216;difer&#8217;, &#8216;produt&#8217;]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora que temos nossa lista de radicais iremos calcular a <strong>frequ\u00eancia com que eles aparecem<\/strong>:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>def buscafrequencia(palavras):<br \/>\u00a0\u00a0\u00a0\u00a0palavras = nltk.FreqDist(palavras)<br \/>\u00a0\u00a0\u00a0\u00a0return palavras<br \/>frequencia = buscafrequencia(palavras)<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E agora vamos criar um<strong> dicion\u00e1rio de palavras \u00fanicas<\/strong>. Isso vai produzir um efeito de excluir as palavras repetidas.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para voc\u00ea entender melhor, pense em um dicion\u00e1rio de gram\u00e1tica, no dicion\u00e1rio h\u00e1 apenas palavras \u00fanicas, ent\u00e3o \u00e9 isso que faremos aqui, com a seguinte fun\u00e7\u00e3o:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>def busca_palavrasunicas(frequencia):<br \/>\u00a0\u00a0\u00a0\u00a0freq = frequencia.keys()<br \/>\u00a0\u00a0\u00a0\u00a0return freq<br \/>\u00a0<br \/>palavrasunicas = busca_palavrasunicas(frequencia)<br \/>print(palavrasunicas)<br \/><br \/><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>E como resultado teremos:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> dict_keys(['ess', 'cap', 'celul', 'boa', 'gost', 'dest', 'maravilh', 'que', 'bonit', 'abaix', 'esper', 'n\u00e3o', 'desbot', 'prim', 'seman', 'olh', 'capinha!', 'mater', 'baix', 'resist', 'cust', 'benefici', 'excel', 'a', 'fot', 'difer', 'produt']) <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Agora utilizaremos uma fun\u00e7\u00e3o chamada <\/strong><em><strong>extraipalavras<\/strong><\/em><strong>. <\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O objetivo desta fun\u00e7\u00e3o \u00e9 classific\u00e1-las como <strong><em>True,<\/em><\/strong>se estiverem dentro da nossa lista de palavras \u00fanicas, ou <strong>False <\/strong>se ela n\u00e3o est\u00e1 em nossa lista de palavras \u00fanicas.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>def extrai_palavras(documento):<br \/>\u00a0\u00a0\u00a0\u00a0doc = set(documento)<br \/>\u00a0\u00a0\u00a0\u00a0caracteristicas = {}<br \/>\u00a0\u00a0\u00a0\u00a0for palavras in palavrasunicas:<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0caracteristicas[&#8216;%s&#8217; % palavras] = (palavras in doc)<br \/>\u00a0\u00a0\u00a0\u00a0return caracteristicas<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>caracteristicasfrase = extrai_palavras([&#8216;am&#8217;, &#8216;nov&#8221;dia&#8217;,&#8217;ess&#8217;,&#8217;celul&#8217;,&#8217;boa&#8217;])<br \/>print(caracteristicasfrase)<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>{&#8216;ess&#8217;: True, &#8216;cap&#8217;: False, &#8216;celul&#8217;: True, &#8216;boa&#8217;: True, &#8216;gost&#8217;: False, &#8216;dest&#8217;: False, &#8216;maravilh&#8217;: False, &#8216;que&#8217;: False, &#8216;bonit&#8217;: False, &#8216;abaix&#8217;: False, &#8216;esper&#8217;: False, &#8216;n\u00e3o&#8217;: False, &#8216;desbot&#8217;: False, &#8216;prim&#8217;: False, &#8216;seman&#8217;: False, &#8216;olh&#8217;: False, &#8216;capinha!&#8217;: False, &#8216;mater&#8217;: False, &#8216;baix&#8217;: False, &#8216;resist&#8217;: False, &#8216;cust&#8217;: False, &#8216;benefici&#8217;: False, &#8216;excel&#8217;: False, &#8216;a&#8217;: False, &#8216;fot&#8217;: False, &#8216;difer&#8217;: False, &#8216;produt&#8217;: False}<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A fun\u00e7\u00e3o <em>extraipalavras<\/em> fez a seguinte compara\u00e7\u00e3o:<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">As palavras que est\u00e3o em nossa lista de palavras \u00fanicas foram classificadas como <strong>True <\/strong>e as que n\u00e3o est\u00e3o em nossa lista de palavras \u00fanicas foram classificadas como <strong>False.<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora chamaremos uma fun\u00e7\u00e3o da <strong>biblioteca nltk<\/strong> passando como par\u00e2metros a fun\u00e7\u00e3o<em> extraipalavras<\/em> e nossas frases j\u00e1 processadas:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>basecompleta = nltk.classify.apply_features(extrai_palavras,frasescomstemming)<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora vamos testar a basecompleta na nossa primeira frase:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> ('Essa capinha de celular \u00e9 muito boa', 'alegria')\r\n\r\n\r\nprint(basecompleta[0]) <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>E como resultado teremos:<\/strong> \u00a0<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>({&#8216;ess&#8217;: True, &#8216;cap&#8217;: True, &#8216;celul&#8217;: True, &#8216;boa&#8217;: True, &#8216;gost&#8217;: False, &#8216;dest&#8217;: False, &#8216;maravilh&#8217;: False, &#8216;que&#8217;: False, &#8216;bonit&#8217;: False, &#8216;abaix&#8217;: False, &#8216;esper&#8217;: False, &#8216;n\u00e3o&#8217;: False, &#8216;desbot&#8217;: False, &#8216;prim&#8217;: False, &#8216;seman&#8217;: False, &#8216;olh&#8217;: False, &#8216;capinha!&#8217;: False, &#8216;mater&#8217;: False, &#8216;baix&#8217;: False, &#8216;resist&#8217;: False, &#8216;cust&#8217;: False, &#8216;benefici&#8217;: False, &#8216;excel&#8217;: False, &#8216;a&#8217;: False, &#8216;fot&#8217;: False, &#8216;difer&#8217;: False, &#8216;produt&#8217;: False}, &#8216;alegria&#8217;)<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Esta fun\u00e7\u00e3o retorna as nossas frases mostrando quais palavras est\u00e3o contidas ou n\u00e3o nelas.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Quando imprimimos a <strong>basecompleta[0]<\/strong> recebemos uma tupla, onde o primeiro item \u00e9 um dicion\u00e1rio com nossas palavras \u00fanicas marcadas como <strong>True <\/strong>ou<strong> False.<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">As palavras marcadas como <strong>True <\/strong>\u00a0s\u00e3o as palavras que est\u00e3o na frase \u2018Essa capinha de celular \u00e9 muito boa\u2019.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">J\u00e1 o<strong> segundo item da tupla<\/strong> \u00e9 o alvo, ou seja, como essa frase foi classificada.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora vamos construir nossa tabela de probabilidade\u00a0 com a<strong> biblioteca nlt<\/strong>k.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> classificador = nltk.NaiveBayesClassifier.train(basecompleta) <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora podemos imprimir as etiquetas das frases, que aqui s\u00e3o apenas duas: <strong>alegria <\/strong>e <strong>raiva<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> <strong>print(classificador.labels())<\/strong> <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E com isso, teremos:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> ['alegria', 'raiva'] <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ainda podemos imprimir mais informa\u00e7\u00f5es sobre nossa tabela de probabilidade, com o seguinte comando:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> print(classificador.show_most_informative_features(5))\r\n\r\n\r\n\r\nMost Informative Features\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cap = False\u00a0 \u00a0 \u00a0 \u00a0 raiva : alegri =\u00a0 \u00a0 \u00a0 2.6 : 1.0\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 celul = False\u00a0 \u00a0 \u00a0 \u00a0 raiva : alegri =\u00a0 \u00a0 \u00a0 1.4 : 1.0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 baix = False\u00a0 \u00a0 \u00a0 \u00a0 alegri : raiva =\u00a0 \u00a0 \u00a0 1.2 : 1.0\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 seman = False\u00a0 \u00a0 \u00a0 \u00a0 alegri : raiva =\u00a0 \u00a0 \u00a0 1.2 : 1.0\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 mater = False\u00a0 \u00a0 \u00a0 \u00a0 alegri : raiva =\u00a0 \u00a0 \u00a0 1.2 : 1.0 <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O que esta tabela mostra \u00e9:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Quando a palavra cap \u00e9 <strong>False,<\/strong> ou seja, n\u00e3o aparece na frase, a probabilidade da frase ser de raiva \u00e9 2.6 vezes maior do que de ser de alegria.<\/li>\r\n<li>Quando a palavra celul \u00e9 <strong>False<\/strong>, ou seja, n\u00e3o aparece na frase, a probabilidade da frase ser de raiva \u00e9 de 1.4 vezes mais do que de ser de alegria.<\/li>\r\n<li>Quando \u00e0 palavra baix \u00e9 <strong>False<\/strong>, ou seja, n\u00e3o aparece na frase, a probabilidade da frase ser de alegria \u00e9 de 1.2 vezes mais do que de ser de alegria.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">e assim por diante;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong><em>&gt;&gt;Leitura Recomendada:<\/em><\/strong><br \/>Os 5 melhores<a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/os-5-melhores-frameworks-de-python\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong> frameworks de Python<\/strong><\/a><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Adicionando novas frases ao algoritmo de minera\u00e7\u00e3o<\/h2>\r\n\r\n\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora iremos testar nosso <strong><a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/aprendizado-de-maquina-e-seus-algoritmos\/\">algoritmo<\/a><\/strong> com uma nova frase:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>teste= &#8220;<strong>Capinha legal! Gostei<\/strong> &#8220;<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ent\u00e3o, vamos criar uma lista vazia que recebe somente os radicais da nossa frase teste:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>teste = &#8216;Capinha legal! Gostei&#8217;<br \/>testestem = []<br \/>stemmer = nltk.stem.RSLPStemmer()<br \/>for (palavras) in teste.split():<br \/>\u00a0\u00a0\u00a0\u00a0comstem = [p for p in palavras.split()]<br \/>\u00a0\u00a0\u00a0\u00a0testestem.append(str(stemmer.stem(comstem[0])))<br \/>print(testestem)<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E como resultado teremos:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[&#8216;cap&#8217;, &#8216;legal!&#8217;, &#8216;gost&#8217;]<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E, por fim, vamos ver como algoritmo classifica nossa nova frase:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\"> nova_frase = extrai_palavras(testestem)\r\n\u00a0\r\ndistribuicao = classificador.prob_classify(nova_frase)\r\nprint('-----------------------')\r\nfor classe in distribuicao.samples():\r\n\u00a0\u00a0\u00a0\u00a0print(\"%s: %f\" % (classe, distribuicao.prob(classe))) <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E o resultado \u00e9:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-preformatted\">alegria: 0.941693\r\nraiva: 0.058307 <\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ou seja, a probabilidade dessa frase ser de alegria \u00e9 de 0.9416 ou de 94,16%.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>&gt;&gt;Leitura Recomendada:<\/strong><br \/>Os <a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/aprendizado-de-maquina-e-seus-algoritmos\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>algoritmos de machine learning<\/strong><\/a><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><a href=\"http:\/\/bit.ly\/2JOWFSr\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"wp-image-6393\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2019\/07\/CTA-Rodap\u00e9-Vagas-Python-1-1024x134.jpg\" alt=\"\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Pr\u00f3ximos passos<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora que constru\u00edmos um algoritmo podemos fazer coletas semanais por uma ou duas horas, classific\u00e1-las e, com isso, podemos fazer desde uma simples contagem do tipo das frases que coletamos.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Isto \u00e9, podemos ver quantas s\u00e3o de alegria e quantas s\u00e3o de raiva. Tamb\u00e9m podemos aplicar outras m\u00e9tricas pr\u00f3prias da empresa.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Podemos tamb\u00e9m criar grupos do porqu\u00ea as pessoas sentem raiva do nosso produto e fazer uma outra minera\u00e7\u00e3o para clusterizar as frases de raiva, atacando os problemas que s\u00e3o mais recorrentes.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Enfim, a partir daqui as possibilidades s\u00e3o infinitas.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Espero ter ajudado a sua empresa! \ud83d\ude42<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>O que as pessoas pensam sobre a sua empresa, ou sobre a empresa que voc\u00ea trabalha? H\u00e1 um tempo, comecei a estudar um conte\u00fado dentro do aprendizado de m\u00e1quina conhecido como an\u00e1lise de texto \u2014 ou minera\u00e7\u00e3o de emo\u00e7\u00f5es. Este campo tenta identificar emo\u00e7\u00f5es em texto. Por exemplo: hoje estou feliz. Quem for ler esta [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":4307,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[269],"tags":[],"class_list":["post-4304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-machinelearning-ai"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.7 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Minera\u00e7\u00e3o de Texto: Compreendendo as Emo\u00e7\u00f5es nas Palavras<\/title>\n<meta name=\"description\" content=\"A minera\u00e7\u00e3o de texto \u00e9 uma t\u00e9cnica de machine learning muito valiosa. Como criar um algoritmo usando Python? Leia o artigo!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es\" \/>\n<meta property=\"og:description\" content=\"O que as pessoas pensam sobre a sua empresa, ou sobre a empresa que voc\u00ea trabalha? H\u00e1 um tempo, comecei a estudar um conte\u00fado dentro do aprendizado de\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Geekhunter\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geekhunterbr\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-10T13:04:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-15T14:01:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/02\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1920\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Geekhunter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:site\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geekhunter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es\",\"datePublished\":\"2025-05-10T13:04:09+00:00\",\"dateModified\":\"2025-05-15T14:01:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/\"},\"wordCount\":1955,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/02\\\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg\",\"articleSection\":[\"Machine Learning &amp; AI\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/\",\"name\":\"Minera\u00e7\u00e3o de Texto: Compreendendo as Emo\u00e7\u00f5es nas Palavras\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/02\\\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg\",\"datePublished\":\"2025-05-10T13:04:09+00:00\",\"dateModified\":\"2025-05-15T14:01:11+00:00\",\"description\":\"A minera\u00e7\u00e3o de texto \u00e9 uma t\u00e9cnica de machine learning muito valiosa. Como criar um algoritmo usando Python? Leia o artigo!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/02\\\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/02\\\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg\",\"width\":2560,\"height\":1920,\"caption\":\"Minera\u00e7\u00e3o de texto\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/mineracao-de-texto-python-para-descobrir-emocoes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mundo TI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Machine Learning &amp; AI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/machinelearning-ai\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"name\":\"Blog de TI\",\"description\":\"Dicas para o RH e profissionais da \u00e1rea TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\",\"name\":\"GeekHunter\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"width\":300,\"height\":300,\"caption\":\"GeekHunter\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/x.com\\\/geekhunterbr\",\"https:\\\/\\\/www.instagram.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geekhunter-brasil\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GeekHunterOfficial\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\",\"name\":\"Geekhunter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"caption\":\"Geekhunter\"},\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/author\\\/matias\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Minera\u00e7\u00e3o de Texto: Compreendendo as Emo\u00e7\u00f5es nas Palavras","description":"A minera\u00e7\u00e3o de texto \u00e9 uma t\u00e9cnica de machine learning muito valiosa. Como criar um algoritmo usando Python? Leia o artigo!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/","og_locale":"pt_BR","og_type":"article","og_title":"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es","og_description":"O que as pessoas pensam sobre a sua empresa, ou sobre a empresa que voc\u00ea trabalha? H\u00e1 um tempo, comecei a estudar um conte\u00fado dentro do aprendizado de","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2025-05-10T13:04:09+00:00","article_modified_time":"2025-05-15T14:01:11+00:00","og_image":[{"width":2560,"height":1920,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/02\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg","type":"image\/jpeg"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es","datePublished":"2025-05-10T13:04:09+00:00","dateModified":"2025-05-15T14:01:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/"},"wordCount":1955,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/02\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg","articleSection":["Machine Learning &amp; AI"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/","name":"Minera\u00e7\u00e3o de Texto: Compreendendo as Emo\u00e7\u00f5es nas Palavras","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/02\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg","datePublished":"2025-05-10T13:04:09+00:00","dateModified":"2025-05-15T14:01:11+00:00","description":"A minera\u00e7\u00e3o de texto \u00e9 uma t\u00e9cnica de machine learning muito valiosa. Como criar um algoritmo usando Python? Leia o artigo!","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2019\/02\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/02\/mineracao-de-texto-python-para-descobrir-emocoes-min.jpg","width":2560,"height":1920,"caption":"Minera\u00e7\u00e3o de texto"},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/mineracao-de-texto-python-para-descobrir-emocoes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.geekhunter.com/pt/blog\/"},{"@type":"ListItem","position":2,"name":"Mundo TI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/"},{"@type":"ListItem","position":3,"name":"Machine Learning &amp; AI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/machinelearning-ai\/"},{"@type":"ListItem","position":4,"name":"Minera\u00e7\u00e3o de texto: python para descobrir emo\u00e7\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","name":"Blog de TI","description":"Dicas para o RH e profissionais da \u00e1rea TI","publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.geekhunter.com/pt/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization","name":"GeekHunter","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","width":300,"height":300,"caption":"GeekHunter"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geekhunterbr\/","https:\/\/x.com\/geekhunterbr","https:\/\/www.instagram.com\/geekhunterbr\/","https:\/\/www.linkedin.com\/company\/geekhunter-brasil\/","https:\/\/www.youtube.com\/@GeekHunterOfficial"]},{"@type":"Person","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400","name":"Geekhunter","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","caption":"Geekhunter"},"url":"https:\/\/www.geekhunter.com\/pt\/blog\/author\/matias\/"}]}},"_links":{"self":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/4304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=4304"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/4304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/4307"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=4304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=4304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=4304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}