Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Desafío con python y pandas

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)