7  Estudo de Caso

Neste capítulo, exploraremos alguns estudos de caso que demonstram a aplicação prática das técnicas de vetorização de texto discutidas anteriormente. Cada caso de estudo será acompanhado por exemplos em Python para ilustrar como essas técnicas podem ser implementadas em situações do mundo real.

7.1 Análise de Reviews de Produtos

Uma aplicação comum da vetorização de texto é a análise de opiniões e reviews de produtos. Este caso de estudo examina como podemos utilizar TF-IDF e modelos de classificação para analisar reviews de produtos e determinar a polaridade dos sentimentos expressos.

7.1.1 Exemplo em Python: Análise de Sentimentos em Reviews de Produtos

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 reviews de produtos e rótulos
reviews = [
    "Este produto é excelente, superou minhas expectativas!",
    "Horrível, não funcionou como esperado",
    "Muito bom, compraria novamente",
    "Péssimo, nunca mais compro deste vendedor",
    "Produto de ótima qualidade",
    "Não gostei, material de baixa qualidade"
]
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(reviews, rótulos, test_size=0.33, random_state=42)

# Criando o pipeline TF-IDF + Naive Bayes
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))

Saída do Console

precision    recall  f1-score   support

negativo       1.00       1.00      1.00         1
positivo       1.00       1.00      1.00         1

accuracy                            1.00         2
macro avg       1.00      1.00      1.00         2
weighted avg    1.00      1.00      1.00         2

Este exemplo mostra como aplicar TF-IDF e um classificador de Naive Bayes para analisar reviews de produtos, determinando se o sentimento expresso é positivo ou negativo.

7.2 Processamento de Tweets

Analisar e processar tweets é uma tarefa desafiadora devido à natureza informal e limitada dos textos. Este caso de estudo se concentra na análise de sentimentos e na classificação de tweets, utilizando técnicas de vetorização e aprendizado de máquina.

7.2.1 Exemplo em Python: Análise de Sentimentos em Tweets

Código Python

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import metrics

# Exemplo de tweets e rótulos
tweets = [
    "Adoro usar o novo recurso, muito útil!",
    "Não gosto desta atualização, ficou pior",
    "Essa nova versão está incrível",
    "Detestei o que fizeram no app",
    "Excelente trabalho, equipe!",
    "Uma das piores atualizações até agora"
]
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(tweets, rótulos, test_size=0.33, random_state=42)

# Criando o pipeline TF-IDF + Regressão Logística
modelo = make_pipeline(TfidfVectorizer(), LogisticRegression())

# 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))

Saída do Console

precision    recall  f1-score   support

negativo        0.00      0.00      0.00         1
positivo        0.50      1.00      0.67         1

accuracy                            0.50         2
macro avg       0.25      0.50      0.33         2
weighted avg    0.25      0.50      0.33         2

Este exemplo ilustra como podemos utilizar TF-IDF e Regressão Logística para analisar tweets, classificando-os como positivos ou negativos com base no conteúdo.

7.3 Análise de Notícias

A análise de notícias é fundamental para entender as tendências atuais e os tópicos de interesse público. Neste caso de estudo, utilizaremos técnicas de vetorização e modelagem de tópicos para identificar os principais temas abordados em um conjunto de artigos de notícias.

7.3.1 Exemplo em Python: Modelagem de Tópicos em Notícias

Código Python

from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import CountVectorizer

# Exemplo de notícias
noticias = [
    "O governo aprova novas reformas econômicas",
    "A tecnologia 5G está mudando o cenário global",
    "Novas descobertas na área da saúde são promissoras",
    "A economia global enfrenta novos desafios",
    "Tecnologias emergentes como IA estão em alta",
    "Novas políticas ambientais são implementadas"
]

# Vetorizando as notícias com CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(noticias)

# Aplicando LDA para modelagem de tópicos
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:
global estão alta como em
Tópico 2:
novas são promissoras área descobertas

Neste exemplo, aplicamos LDA para identificar tópicos em um conjunto de artigos de notícias, mostrando as palavras mais representativas para cada tópico.

Em resumo, os casos de estudo apresentados neste capítulo demonstram como as técnicas de vetorização de texto podem ser aplicadas a problemas reais, como análise de sentimentos em reviews e tweets, e modelagem de tópicos em notícias. Essas técnicas são ferramentas poderosas para extrair informações valiosas de grandes volumes de dados textuais.

Exercício

Versão on-line destes exercícios

https://forms.gle/uuFPqkeQFtPREuQy5

  1. Qual é o principal objetivo da análise de sentimentos?

    1. Aumentar o número de visualizações.

    2. Identificar e classificar sentimentos expressos no texto.

    3. Melhorar a qualidade dos produtos.

    4. Reduzir o tempo de leitura dos reviews.

  2. Qual é o principal desafio ao realizar análise de sentimentos?

    1. A falta de técnicas de vetorização adequadas.

    2. O número limitado de palavras únicas nos reviews.

    3. A ambiguidade no sentimento expresso em algumas frases.

    4. A necessidade de grandes volumes de dados de treinamento.

  3. Qual é o principal desafio ao processar tweets em comparação com outros tipos de textos?

    1. Tweets são sempre escritos de forma gramaticalmente correta.

    2. Tweets têm comprimento fixo e linguagem informal, o que pode dificultar a análise.

    3. Tweets não contêm informações úteis para análise de sentimentos.

    4. Tweets são muito longos e detalhados, o que dificulta a análise.

  4. Qual técnica é utilizada para identificar os principais temas em um conjunto de artigos de notícias?

    1. Classificação de Sentimentos.

    2. Análise de Regressão.

    3. Modelagem de Tópicos com LDA.

    4. Clustering com k-means.

  5. Qual é uma aplicação comum da modelagem de tópicos em notícias?

    1. Traduzir notícias para diferentes idiomas.

    2. Identificar e agrupar artigos com temas semelhantes.

    3. Prever o futuro de tendências de notícias.

    4. Criar resumos automáticos de notícias.