Olá, devido a problemas de cota do gemini, eu utilizei modelos do Groq, o modelo recomendado foi o llama-3.3-70b-versatile que é o mais apropriado para este tipo de análise, utilizei poucos tokens pois a resposta era somente uma palavra.
Importação Groq
import os
from google.colab import userdata
os.environ['GROQ_API_KEY'] = userdata.get('GROQ_API_KEY')
from groq import Groq
client = Groq()
Criação de função de resposta sentimento LLM
def resposta_sentimento_llm(review, model_llm='llama-3.3-70b-versatile'):
response = client.chat.completions.create(
model=model_llm,
messages=[{'role': 'user', 'content': review}],
temperature=0,
max_completion_tokens=20,
stream=False
)
return response.choices[0].message.content.strip()
Criação de função de prompt : Few-shot-prompting
def classificar_sentimento(texto):
prompt = f"""
Classifique o sentimento do texto abaixo.
Categorias possíveis:
Positivo, Negativo ou Neutro.
Exemplos:
'Eu adorei esse produto' -> 'Positivo'
'Gostei, mas não é nada de especial' -> 'Neutro'
'Odiei esse produto' -> 'Negativo'
Review a ser analisado: {texto}
Responda apenas com uma palavra.
"""
try:
resposta = resposta_sentimento_llm(prompt)
if resposta not in ["Positivo", "Negativo", "Neutro"]:
return "Indefinido"
return resposta
except Exception:
return "Erro"
Carregar arquivo review para um Dataframe, isolando a parte o reviewText
import pandas as pd
df = pd.read_csv('/content/reviews.csv')
df_review = df['reviewText']
Percorrer o Dataframe para identificar o sentimento e guardar em uma lista
lista_review_sentimento = []
for review_indice, review_texto in enumerate(df_review):
sentimento = classificar_sentimento(review_texto)
lista_review_sentimento.append(sentimento)
#print(f'Idx review: {review_indice} | review: {review_texto} -> {sentimento}')
Adicionar a lista de sentimento ao Dataframe original
df['Sentimento'] = lista_review_sentimento
Gravar um arquivo csv com as reviews e coluna de sentimento
df.to_csv(
"reviews_com_sentimentos.csv",
index=False,
sep=",",
encoding="utf-8-sig" # evita problema com acentos
)
print("CSV gerado com sucesso.")
Abraços