1
resposta

[Sugestão] Solução utilizando modelos do Groq

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

1 resposta

Olá, Alexandre! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de modelos Groq para análise de sentimentos com Python, utilizou muito bem o few-shot prompting para guiar a classificação e ainda compreendeu a importância da integração com DataFrames para organizar e exportar os resultados.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!