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)