6 Aplicações Práticas
Neste capítulo, exploraremos aplicações práticas das técnicas de vetorização de texto que discutimos nos capítulos anteriores. Vamos focar em três áreas principais: classificação de texto, agrupamento de documentos e detecção de tópicos. Cada seção incluirá exemplos práticos em Python.
6.1 Classificação de Texto
A classificação de texto é uma das aplicações mais comuns da vetorização de texto. Milhares de pessoas visitam as mídias sociais para expressar seus sentimentos, principalmente no antigo Twitter, hoje X, [@Recuero2016]. Essas mídias reúnem características que viabilizam a mineração de texto tais como: mensagens textuais, de perfil público e coleta automatizada [@Hootsuite2018].
A enorme quantidade de dados gerados por essas mídias e as opiniões e sentimentos expressos podem ser analisadas por empresas para diversos fins, sendo possível capturar os sentimentos, opiniões e críticas sobre os produtos em tempo real, proporcionando à empresa uma nova forma de entendimento sobre o comportamento do consumidor [@NascimentoJunior2012]. Algumas questões podem ser respondidas através da análise dos milhares de comentários e respostas expressos nessas mídias. Existem evidências que essas postagens são utilizadas na tomada de decisão e que podem influenciar eventos acontecendo em tempo real [@Baldykowski2018; @Shamma2009].
As mídias sociais também vêm sendo utilizadas para inferências e predições em vários setores, por exemplo: já foram encontradas relações entre o sentimento impresso nas postagens dessas mídias e os movimentos do preço do Bitcoin [@Santos2019; @Nakamoto2008]; já foram utilizadas para prever quais seriam as palavras-chave (hashtags) mais comentadas no futuro [@Das2015]; para inferir a quantidade de pessoas que irão assistir ao filme [@Teixeira2011]; até para correlacionar com os indicados ao Oscar [@TannusCorrea2017]; para influenciar a visão do profissional no ambiente de trabalho, pois, quando os profissionais utilizam as mídias sociais nas relações profissionais e adotam um tipo de comportamentos de gerenciamento de público e de conteúdo, dados apontam uma tendência do profissional ser mais respeitados por seus colegas de trabalho [@Ferretti2017].
As mídias sociais também fornecem aos usuários da Internet uma maneira fácil e barata de se envolver em discussões políticas e promover pontos de vista e interesses. Essas postagens também podem auxiliar no processo de decisão de instituições públicas [@Georgiadou2020]. Alguns candidatos utilizam as mídias sociais para fazer propaganda e para aumentar a intenção de voto dos seus eleitores, além disso, foram encontradas evidências de que essa intenção é influenciada pela opinião do eleitor, confiança e imagem do candidato [@Almeida2018]. O uso da mídia social também é utilizado para divulgar notícias falsas, e existem evidências de que a exposição a essas notícias pode influenciar os resultados das eleições. Nas eleições presidenciais dos EUA em 2016, notícias falsas postadas em mídias sociais foram cruciais na eleição do presidente Trump [@Allcott2017].
Métodos automáticos de extração de sentimentos, também chamado de mineração de opinião, já foram utilizados para avaliar o desempenho das ações na bolsa [@Chen2010]. O apoio a decisão baseado em sentimentos expresso em mídias sociais tem potencial para beneficiar e diminuir os custos organizacionais, mas ainda é preciso entender como utilizá-la e qual o seu impacto [@Saxton2020].
Usaremos a técnica TF-IDF para vetorizar documentos e, em seguida, aplicaremos um classificador de Naive Bayes para categorizar o texto e analisar o sentimento de algumas postagens, como exemplo.
6.1.1 Exemplo em Python: Classificação de Texto com TF-IDF e Naive Bayes
Código Python
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn import metrics
# Exemplo de corpus e rótulos
documentos = [
"Este é um ótimo produto",
"Muito ruim, não gostei",
"Fantástico, recomendo!",
"Não vale a pena, péssimo",
"Excelente qualidade, compraria de novo",
"Horrível, joguei meu dinheiro fora"
]
rótulos = ["positivo", "negativo", "positivo", "negativo", "positivo", "negativo"]
# Dividindo os dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(documentos, rótulos, test_size=0.33, random_state=42)
# Criando o pipeline
modelo = make_pipeline(TfidfVectorizer(), MultinomialNB())
# Treinando o modelo
modelo.fit(X_train, y_train)
# Fazendo previsões
predições = modelo.predict(X_test)
# Avaliando o modelo
print(metrics.classification_report(y_test, predições))Código Python
precision recall f1-score support
negativo 0.50 1.00 0.67 1
positivo 0.00 0.00 0.00 1
accuracy 0.50 2
macro avg 0.25 0.50 0.33 2
weighted avg 0.25 0.50 0.33 2Este exemplo demonstra como classificar textos usando TF-IDF e Naive Bayes. Após treinar o modelo, as previsões são feitas no conjunto de teste e uma avaliação do desempenho é realizada.
6.2 Agrupamento de Documentos
O agrupamento de documentos é outra aplicação importante da vetorização de texto, permitindo que documentos similares sejam automaticamente agrupados. Nesta seção, utilizaremos a técnica de k-means clustering.
6.2.1 Exemplo em Python: Agrupamento com k-means
Código Python
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
# Exemplo de documentos
documentos = [
"O gato gosta de peixe",
"O cachorro gosta de osso",
"O peixe não gosta de gato",
"O gato e o cachorro são amigos",
"O peixe vive na água",
"Os cães gostam de ossos"
]
# Vetorizando os documentos com TF-IDF
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(documentos)
# Aplicando k-means clustering
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X)
# Mostrando os rótulos dos clusters
print("Rótulos dos Clusters:", kmeans.labels_)Saída do Console
Rótulos dos Clusters: [0 0 0 0 0 1]Este código realiza o agrupamento dos documentos em dois clusters usando k-means. Cada documento é atribuído a um cluster com base na similaridade de seu conteúdo.
6.3 Detecção de Tópicos
A detecção de tópicos permite identificar os principais assuntos discutidos em um conjunto de documentos. Uma técnica popular para isso é a Latent Dirichlet Allocation (LDA), que vamos explorar nesta seção.
6.3.1 Exemplo em Python: Detecção de Tópicos com LDA
Código Python
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import CountVectorizer
# Exemplo de documentos
documentos = [
"O gato gosta de peixe",
"O cachorro gosta de osso",
"O peixe não gosta de gato",
"O gato e o cachorro são amigos",
"O peixe vive na água",
"Os cães gostam de ossos"
]
# Vetorizando os documentos com CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(documentos)
# Aplicando LDA
lda = LatentDirichletAllocation(n_components=2, random_state=42)
lda.fit(X)
# Mostrando os tópicos
tópicos = lda.components_
nomes_palavras = vectorizer.get_feature_names_out()
for idx, tópico in enumerate(tópicos):
print(f"Tópico {idx + 1}:")
palavras = [nomes_palavras[i] for i in tópico.argsort()[:-5 - 1:-1]]
print(" ".join(palavras))Saída do Console
Tópico 1:
gato peixe gosta de cachorro
Tópico 2:
de ossos os gostam cãesEste exemplo demonstra como usar LDA para identificar tópicos em um conjunto de documentos. As palavras mais representativas para cada tópico são exibidas.
Emresumo, as técnicas de vetorização de texto discutidas anteriormente têm uma ampla gama de aplicações práticas, desde a classificação e agrupamento de documentos até a detecção de tópicos. Essas aplicações ilustram a importância de transformar texto em representações numéricas para a análise eficiente de dados textuais.
Exercícios
Versão on-line destes exercícios
https://forms.gle/FopDZjLXRVixmGW46
Qual é o principal objetivo da classificação de texto?
Gerar texto automaticamente.
Classificar textos em categorias predefinidas.
Traduzir textos entre diferentes idiomas.
Aumentar o tamanho do corpus de dados textuais.
Qual técnica de vetorização é comumente usada em combinação para classificação de texto?
Dinâmica de Sistemas.
TF-IDF ou BoW.
Redes de Petri.
Automação.
O que o algoritmo de k-means clustering faz em um conjunto de documentos?
Agrupa documentos semelhantes em clusters.
Classifica documentos em categorias predefinidas.
Reduz a dimensionalidade dos vetores de documentos.
Gera novos documentos a partir de um conjunto de treinamento.
Qual técnica é utilizada para identificar os principais tópicos em um conjunto de documentos?
Classificação de texto.
Redução de dimensionalidade.
Modelagem de tópicos com LDA.
Tokenização.
Em um modelo de classificação de sentimentos, qual é o propósito de utilizar TF-IDF na vetorização de texto?
Melhorar a visualização dos dados.
Reduzir o número de palavras no texto.
Ponderar a importância das palavras com base na frequência no documento e no corpus.
Gerar novos tópicos a partir dos documentos.