lista_reviews=[]
with open("reviews - reviews.csv", "r", encoding="utf-8") as archivo:
for review in archivo:
lista_reviews.append(review.strip())
lista_reviews
import pandas as pd
import json
import os
from google.colab import userdata
from google import genai
# Configuración del cliente
os.environ["Alura"] = userdata.get('alura')
client = genai.Client(api_key=userdata.get('alura'))
def clasificar_reviews(lista_reviews_csv):
# Definimos el prompt estricto pasándole el CSV completo
prompt = f"""
Actúa como un modelo de análisis de sentimiento experto y estructurador de datos JSON.
Tu única tarea es analizar el sentimiento de la siguiente lista de reviews en formato CSV y clasificar cada una estrictamente en una de estas tres categorías: "Positivo", "Negativo" o "Neutro".
CSV de entrada:
{lista_reviews_csv}
REGLAS CRÍTICAS DE SALIDA:
1. Devuelve ÚNICAMENTE un objeto JSON válido con la siguiente estructura exacta:
{{
"Sentimientos": ["Clasificación1", "Clasificación2", "Clasificación3", ...]
}}
2. El orden de la lista "Sentimientos" debe coincidir perfectamente con el orden de las reviews del CSV de entrada.
3. NO utilices bloques de código Markdown (prohibido usar ```json o ```).
4. NO escribas texto introductorio, ni saludos, ni notas explicativas. Solo el JSON crudo.
"""
# Llamada a Gemini usando el modelo rápido 2.5-flash
respuesta = client.models.generate_content(
model="gemini-2.5-flash",
contents=prompt
)
try:
# Convertimos el texto JSON puro del modelo en un diccionario real de Python
diccionario_sentimientos = json.loads(respuesta.text.strip())
return diccionario_sentimientos
except json.JSONDecodeError:
print("Error: El modelo no devolvió un JSON limpio. Respuesta obtenida:")
print(respuesta.text)
return None
clasificar_reviews(lista_reviews)
import io
resultado_dict = clasificar_reviews(lista_reviews)
df = pd.read_csv(io.StringIO("\n".join(lista_reviews)))
df['Sentimiento'] = resultado_dict['Sentimientos']
display(df)