Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

(29. Python: Inteligência Artificial Aplicada ) Introduzindo o desafio final

def carregar_reviews(caminho_arquivo):

    with open(caminho_arquivo, "r", encoding="utf-8") as f:
        linhas = f.readlines()

    dados = []

    for linha in linhas:
        linha = linha.strip()

        if linha:
            partes = linha.split("$")

            if len(partes) == 3:
                dados.append({
                    "id": partes[0],
                    "usuario": partes[1],
                    "review": partes[2]
                })

    return dados

reviews = carregar_reviews("Resenhas_App_ChatGPT.txt")

print(reviews[0])

##############################################################################################

#  ÚNICO ponto de atenção:
#  "model": "google/gemma-4-e4b" precisa existir no seu LM Studio

from openai import OpenAI

client_openai = OpenAI(
    base_url="http://127.0.0.1:1234/v1",
    api_key="lm-studio"
)

def analisar_review(item):
    prompt = f"""
Você é um analisador de sentimentos e tradutor.

Retorne APENAS um JSON válido com:
- usuario
- review_original
- traducao_portugues
- sentimento (positivo, negativo ou neutro)

Responda estritamente em JSON válido.

Texto:
{item["review"]}
"""

    resposta = client_openai.chat.completions.create(
        model="google/gemma-4-e4b",
        messages=[
            {"role": "system", "content": "Você responde apenas em JSON válido."},
            {"role": "user", "content": prompt}
        ],
        temperature=0.3
    )

    return resposta.choices[0].message.content

##############################################################################################

import json

def processar_reviews(reviews):
    resultados = []

    for item in reviews:
        resposta = analisar_review(item)

        try:
            dados = json.loads(resposta)
            resultados.append(dados)
        except json.JSONDecodeError:
            print("Erro ao converter JSON:", resposta)

    return resultados


dados_processados = processar_reviews(reviews)

##############################################################################################

def analisar_dados(lista, separador=" | "):
    positivos = 0
    negativos = 0
    neutros = 0

    textos = []

    for item in lista:
        sentimento = item.get("sentimento", "neutro").lower()

        if sentimento == "positivo":
            positivos += 1
        elif sentimento == "negativo":
            negativos += 1
        else:
            neutros += 1

        textos.append(f"{item['usuario']} -> {item['review_original']}")

    texto_final = separador.join(textos)

    return {
        "positivos": positivos,
        "negativos": negativos,
        "neutros": neutros,
        "texto_final": texto_final
    }


resultado = analisar_dados(dados_processados)

print(resultado)