5
respostas

[Projeto] Analisador de sentimento

Boa noite! Segui todos os passos, porém não carrega o arquivo

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeMeu código está assim:

from openai import OpenAI
from dotenv import load_dotenv
import os
import openai


load_dotenv()

cliente = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
modelo = "gpt-3.5-turbo-0125-"

def carrega(nome_do_arquivo):
    try:
        with open(nome_do_arquivo, "r") as arquivo:
            dados = arquivo.read()
            return dados
    except IOError as e:
        print(f"Erro: {e}")

def salva(nome_do_arquivo, conteudo):
    try:
        with open(nome_do_arquivo, "w", encoding="utf-8") as arquivo:
            arquivo.write(conteudo)
    except IOError as e:
        print(f"Erro ao salvar arquivo: {e}")

def analisador_sentimentos(produto):

    
    prompt_sistema = f"""
        Você é um analisador de sentimentos de avaliações de produtos.
        Escreva um parágrafo com até 50 palavras resumindo as avaliações e 
        depois atribua qual o sentimento geral para o produto.
        Identifique também 3 pontos fortes e 3 pontos fracos identificados a partir das avaliações.

        # Formato de Saída

        Nome do Produto:
        Resumo das Avaliações:
        Sentimento Geral: [utilize aqui apenas Positivo, Negativo ou Neutro]
        Ponto fortes: lista com três bullets
        Pontos fracos: lista com três bullets
    """

    prompt_usuario = carrega(f"./dados/avaliacoes-{produto}.txt")
    print(f"Inicou a análise de sentimentos do produto {produto}")

    lista_mensagens = [
        {
            "role": "system",
            "content": prompt_sistema
        },
        {
            "role": "user",
            "content": prompt_usuario
        }
    ]

    
    resposta = cliente.chat.completions.create(
        messages = lista_mensagens,
        model=modelo
        )

    texto_resposta = resposta.choices[0].message.content
    analisador_sentimentos(produto)
Podem me ajudar a solucionar?
5 respostas

Oii, Renato! Tudo bem?

Agradeço por compartilhar sua dúvida aqui no fórum.

Isso está ocorrendo porque não foi passado o nome do produto como parâmetro na função analisador_sentimentos, no final do seu código,

Observe que está assim:

#código omitido


    texto_resposta = resposta.choices[0].message.content
    analisador_sentimentos(produto)

Recomendo substituir o "produto" por "Maquiagem Mineral", dessa forma:

#código omitido

    texto_resposta = resposta.choices[0].message.content
    analisador_sentimentos("Maquiagem Mineral")

Sugiro também revisar a indentação do seu código, pois a função está sendo chamada dentro dela mesma e é preciso adicionar um recuo à esquerda para que o seu código rode normalmente.

Segue um exemplo de como ficaria o seu código:

def carrega(nome_do_arquivo):
    try:
        with open(nome_do_arquivo, "r") as arquivo:
            dados = arquivo.read()
            return dados
    except IOError as e:
        print(f"Erro: {e}")

def salva(nome_do_arquivo, conteudo):
    try:
        with open(nome_do_arquivo, "w", encoding="utf-8") as arquivo:
            arquivo.write(conteudo)
    except IOError as e:
        print(f"Erro ao salvar arquivo: {e}")

def analisador_sentimentos(produto):

    
    prompt_sistema = f"""
        Você é um analisador de sentimentos de avaliações de produtos.
        Escreva um parágrafo com até 50 palavras resumindo as avaliações e 
        depois atribua qual o sentimento geral para o produto.
        Identifique também 3 pontos fortes e 3 pontos fracos identificados a partir das avaliações.

        # Formato de Saída

        Nome do Produto:
        Resumo das Avaliações:
        Sentimento Geral: [utilize aqui apenas Positivo, Negativo ou Neutro]
        Ponto fortes: lista com três bullets
        Pontos fracos: lista com três bullets
    """

    prompt_usuario = carrega(f"./dados/avaliacoes-{produto}.txt")
    print(f"Inicou a análise de sentimentos do produto {produto}")

    lista_mensagens = [
        {
            "role": "system",
            "content": prompt_sistema
        },
        {
            "role": "user",
            "content": prompt_usuario
        }
    ]

    
    resposta = cliente.chat.completions.create(
        messages = lista_mensagens,
        model=modelo
        )

    texto_resposta = resposta.choices[0].message.content

analisador_sentimentos("Maquiagem Mineral")

Sinta-se a vontade para usar o código e realizar a verificação e os testes.

Caso surjam dúvidas durante o seu processo, conte conosco.

Bons estudos, Renato!

Certo! vou fazer as devidas alterações, retorno para dizer se tive sucesso.

Olá, fiz os ajustes como orientado. Porém agora está acusando outro erro no terminal: Erro: [Errno 2] No such file or directory: './dados/avaliacoes-Maquiagem mineral.txt' , parece que ele não está encontrando o arquivo.

Fiz os passos como orientado na aula para criar um arquivo de texto com as avaliações da Maquiagem mineral, como pode ver:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

porém ele não está carregando

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O código atualmente está assim:

from openai import OpenAI
from dotenv import load_dotenv
import os
import openai


load_dotenv()

cliente = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
modelo = "gpt-3.5-turbo-0125-"

def carrega(nome_do_arquivo):
    try:
        with open(nome_do_arquivo, "r") as arquivo:
            dados = arquivo.read()
            return dados
    except IOError as e:
        print(f"Erro: {e}")

def salva(nome_do_arquivo, conteudo):
    try:
        with open(nome_do_arquivo, "w", encoding="utf-8") as arquivo:
            arquivo.write(conteudo)
    except IOError as e:
        print(f"Erro ao salvar arquivo: {e}")

def analisador_sentimentos(produto):
    
    prompt_sistema = f"""
        Você é um analisador de sentimentos de avaliações de produtos.
        Escreva um parágrafo com até 50 palavras resumindo as avaliações e 
        depois atribua qual o sentimento geral para o produto.
        Identifique também 3 pontos fortes e 3 pontos fracos identificados a partir das avaliações.

        # Formato de Saída

        Nome do Produto:
        Resumo das Avaliações:
        Sentimento Geral: [utilize aqui apenas Positivo, Negativo ou Neutro]
        Ponto fortes: lista com três bullets
        Pontos fracos: lista com três bullets


    prompt_usuario = carrega(f"./dados/avaliacoes-{produto}.txt")
    print(f"Inicou a análise de sentimentos do produto {produto}")

    lista_mensagens = [
        {
            "role": "system",
            "content": prompt_sistema
        },
        {
            "role": "user",
            "content": prompt_usuario
        }
    ]

    
    resposta = cliente.chat.completions.create(
        messages = lista_mensagens,
        model=modelo
        )

    texto_resposta = resposta.choices[0].message.content

analisador_sentimentos("Maquiagem mineral")

Oii, Renato!

No seu código, encontramos um pequeno erro de sintaxe, na função analisador_sentimentos contém 3 aspas duplas abrindo mas não está sendo fechado depois da palavra bullets. Recomendo fechar, pois pode ocorrer um erro de sintaxe futuramente. O trecho correspondente ficaria assim:

def analisador_sentimentos(produto):
    
    prompt_sistema = f"""
        Você é um analisador de sentimentos de avaliações de produtos.
        Escreva um parágrafo com até 50 palavras resumindo as avaliações e 
        depois atribua qual o sentimento geral para o produto.
        Identifique também 3 pontos fortes e 3 pontos fracos identificados a partir das avaliações.

        # Formato de Saída

        Nome do Produto:
        Resumo das Avaliações:
        Sentimento Geral: [utilize aqui apenas Positivo, Negativo ou Neutro]
        Ponto fortes: lista com três bullets
        Pontos fracos: lista com três bullets
        """

Outro ponto para solucionar o erro que está tendo, sugiro adicionar o caminho completo da pasta na linha que você está definindo a variável prompt_usuario.

prompt_usuario = carrega(f"./dados/avaliacoes-{produto}.txt")

Adicione o caminho que está na sua máquina, deixando semelhante a esse:

prompt_usuario = carrega(f"C:\Users\Nathalia\alura\dados-{produto}.txt")

E para identificar o caminho, você clica em cima da pasta dados e seleciona a opção Copy Path.

Espero que dê certo as sugestões acima, realize os teste e observe se o código funciona como esperado.

Abraço!

Consegui achar o erro. Na verdade ele estava entendendo como erro de sintaxe as barras do caminho do arquivo (f"dados\analise_{produto}.txt")

Busquei no Chatgpt como poderia solucionar este erro e ele me deu a solução de colocar duas barras invertidas para indicar um barra invertida e ficou assim prompt_usuario = carrega(f"dados\avaliacoes-{produto}.txt")