Search
Close this search box.
Regressão logística para análise de sentimentos
Regressão logística e análise de sentimentos

Posts Relacionados:

Regressão logística é uma técnica simples, leve e rápida de machine learning. Ela possui inúmeras aplicações, incluindo a análise de sentimentos.

Receba nossa newsletter

Regressão logística e Análise de Sentimentos

Regressão logística IMDB

A análise de sentimento é uma aplicação do processamento de linguagem natural, uma subárea da IA. Especificamente, a análise de sentimentos se dedica a compreender os sentimentos subjacentes a dados de texto. Esta tarefa possui inúmeras aplicações e pode ser implementada com diferentes abordagens. O uso de modelos de machine learning para análise de sentimentos é um procedimento comum que costuma ter bons resultados. Este será o foco deste post.

Usaremos regressão logística para classificar os sentimentos de revisões de filmes como positivos ou negativos. Este post é uma continuação deste aqui, onde apresentamos o conjunto de dados IMDB, realizamos a análise inicial e o pré-processamento dos textos.

Regressão logística e Machine Learning

A regressão logística é uma técnica fundamental em estatística e machine learning. Em machine learning, ela é usada principalmente para tarefas de classificação binária, em que a variável dependente tem apenas dois resultados possíveis. Ela modela a probabilidade de um evento ocorrer em função de uma ou mais variáveis independentes. Veja mais sobre essa técnica aqui.

Para a análise de sentimentos, a regressão logística é adequada para tarefas rotuladas em apenas duas categorias: sentimentos positivos e negativos. Esse é o cenário do conjunto de dados IMDB que continuaremos usando neste post.

Bibliotecas e Importações

Continuaremos usando a biblioteca Pandas. Adicionalmente, usaremos Scikit-learn para construir nosso classificador. Portanto, em um código Python, inicie com as importações necessárias e abra o arquivo contendo os dados já pré-processados:

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

df = pd.read_csv('data_clean.csv')
				
			

Em seguida, iremos separar os dados em conjunto X de atributos e conjunto y com os rótulos:

				
					X = df["review"]
y = df["sentiment"]
				
			

Vetorização de Textos

Modelos de machine learning não entendem textos diretamente. Os dados de textos precisam ser transformados em números antes de alimentarem um modelo. Existem várias estratégias para realizar essa conversão. Usaremos uma das estratégias mais simples disponíveis: TF-IDF.

TF-IDF, que significa Term Frequency-Inverse Document Frequency, é uma medida estatística usada para avaliar a importância de uma palavra em um documento em um corpus. O TF-IDF mede a relevância de uma palavra para um documento específico em uma coleção, considerando que algumas palavras aparecem com mais frequência em geral. Essa técnica permite a vetorização dos textos e é facilmente implementada com Scikit-learn. Dando sequência ao código, realizaremos a vetorização das revisões conforme mostrado abaixo:

				
					vectorizer = TfidfVectorizer()
features = vectorizer.fit_transform(X)
				
			

Conversão dos Rótulos

Além da vetorização dos textos, precisaremos usar uma representação numérica para os rótulos. Como nossos rótulos são binários (positivo/negativo), os converteremos em uma representação numérica binária. Adicione o trecho abaixo no seu código:

				
					labels_binary = LabelBinarizer()
y_labels = labels_binary.fit_transform(y).ravel()
				
			

Conjuntos de Treinamento e Teste

Em seguida, separamos os dados em conjuntos de treinamento e teste, como mostrado abaixo:

				
					X_train, X_test, y_train, y_test = train_test_split(features, y_labels, test_size=0.2)
				
			

Definição do Classificador, Treinamento e Validação

O classificador que usaremos será a regressão logística. Ela é muito facilmente implementada com Scikit-learn. Primeiro, criamos o classificador:

				
					model = LogisticRegression(max_iter=500)
				
			

Após definirmos o classificador, usamos os conjuntos de treinamento para treinar o modelo.

				
					model.fit(X_train, y_train)
				
			

Por fim, os conjuntos de testes são usados para validar o modelo treinado através de sua acurácia:

				
					
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print("Acurácia:", round(accuracy, 3))
# Resultado: Acurácia: 0.891
				
			

Como mostrado acima, nosso classificador tem cerca de 0.89 de acurácia (esse resultado pode variar em função da aleatoriedade intrínseca do método). Esse é um resultado ótimo considerando que estamos usando um modelo bem simples. E assim concluímos nosso classificador.

Imagem com IA Generativa – Dia 199

IA generativa img 199

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial