Search
Close this search box.
Análise de sentimentos com LLM
Análise de sentimentos com LLM

Posts Relacionados:

No mundo atual, entender as emoções de clientes com o auxílio da tecnologia é vital. Neste post, nos aprofundaremos no uso dos LLMs para implementar a análise de sentimentos.

Receba nossa newsletter

Tecnologia para entender emoções

Os sentimentos desempenham um papel fundamental na formação do comportamento das pessoas, influenciando as decisões e emoções. Existem vários métodos de análise de sentimentos, incluindo desde abordagens baseadas em regras até técnicas avançadas de machine learning. E nada pode ser mais moderno e avançado do que os Large Language Models (LLMs).

Os LLMs contam com algoritmos avançados de machine learning e com treinamentos realizados em conjuntos de dados massivos. Com essas vantagens, eles conseguem analisar emoções complexas em textos (que pode ser transcritos de áudios) e oferecem uma compreensão mais precisa e abrangente dos sentimentos presentes.

Análise de Sentimentos com Grandes Modelos de Linguagem

LLMs são um tipo de rede neural projetada para processar e gerar linguagem semelhante à humana. Eles são treinados em extensos conjuntos de dados, incluindo livros, artigos e conteúdos onlines. Através desse treinamento, eles desenvolvem uma compreensão profunda das estruturas da linguagem, expressões idiomáticas e coloquialismos. O treinamento permite que os LLMs aprendam padrões, nuances e interpretações específicas de contextos. Ou seja, LLMs detectam com precisão tons, sentimentos e pistas emocionais. Essa capacidade os torna a escolha ideal para análise de sentimentos.

LLMs podem ser empregados para identificar emoções, analisar o tom de um conteúdo linguístico e detectar sentimentos com base em sua polaridade. A classificação de textos em termos de polaridade consiste geralmente em rotulá-los como positivos, negativos ou neutros. Ela será nossa escolha para esse post.

Análise de sentimentos com LLM na prática

Para implementar a análise de sentimentos com um LLM, podemos usar modelos disponíveis via API ou baixar um modelo pequeno. Também podemos fazer o nosso próprio.

Para uso em uma aplicação comercial, o mais adequado é partir de um modelo disponível e realizar o ajuste fino. Uma tendência bastante atual na área de IA é fazer o ajuste do modelo apenas com prompts. Essa será a abordagem que usaremos. Portanto, para esse post, utilizaremos modelos disponíveis instruídos com prompts.

Pacotes

Usaremos o Ollama e dois LLMs: Qwen2.5 2B e Gemma 2 2B. Os dois estão disponíveis em vários locais, incluindo a plataforma Ollama e Hugging Face. Ambos têm a vantagem de ter licenças permissivas e serem LLMs pequenos e facilmente executados localmente.

Gemma 2 com Ollama

Para usar Ollama, primeiro baixe o pacote para o seu sistema operacional e baixe o pacote para Python. Depois, baixe os modelos caso você não os possua:

				
					ollama pull gemma2:2b
ollama pull qwen2.5:2b
				
			
qwen2.5

LLMs para realizar análises de sentimentos

A maior vantagem dos LLMs é que eles entendem linguagem. Portanto, eles não precisam se restringir a fazer uma análise, mas podem explicar por que analisaram um texto de uma certa maneira. Partindo desse ponto, nosso código pode ser definido assim:

				
					import ollama

# Inicia o cliente Ollama 
client = ollama.Client()

# Função para realizar análise de sentimento
def analyze_sentiment(text, model):

    prompt = f"""
        Analise o sentimento do texto a seguir. 
        Responda com um objeto JSON contendo: 
        1. 'sentimento': O sentimento geral (positivo, negativo ou neutro) 
        2. 'pontuação': Uma pontuação de sentimento de -1 (muito negativa) a 1 (muito positiva) 
        3. 'Explicação': Uma breve explicação da análise do sentimento Texto: 
        "{text}"
    """
    response = client.generate(model=model, prompt=prompt)
    
    return response["response"]
				
			

No trecho acima, importamos o Ollama, iniciamos um cliente e escrevemos uma função com um prompt. O prompt instrui o modelo a classificar um texto em termos de polaridade (positivo, negativo, neutro), fornecer um valor numérico para ela e uma explicação sobre a classificação feita. Em seguida, alimentamos o modelo com o prompt e textos para classificação como mostrado abaixo:

				
					# Exemplos de textos
textos = [
    "Eu amo esse produto.",
    "Eu detestei esse produto.",
    "O filme foi bom, mas sem ser especial."
]

# Define os modelos para serem usado
modelos = ["qwen2.5:1.5b", "gemma2:2b"]

# Realiza a análise de sentimento
for texto in textos:
    for modelo in modelos:
        resultado = analyze_sentiment(texto, modelo)
        print(f"Modelo: {modelo}")
        print(f"Texto: {texto}")
        print(f"Sentimento: {resultado}\n")
				
			

Nesse trecho, definimos alguns textos como exemplos para alimentar os modelos. Também definimos ambos os modelos que serão testados. Em seguida, usamos dois for loop para alimentar os modelos com nosso prompt e imprimir os resultados.

Resultados

Para obter os resultados, execute o código normalmente no terminal. Veja os resultados excelentes que obtivemos abaixo. Note que usamos dois modelos mais de 100 vezes menores do que um LLM do porte do GPT4 do ChatGPT:

				
					Modelo: qwen2.5:1.5b
Texto: Eu amo esse produto.
Sentimento: ```json
{
    "sentimento": "positivo",
    "pontuação": 0.9,
    "explicação": "O texto 'Eu amo esse produto' é muito positivo, com claramente a palavra 'amo', indicando uma relação de amor pela coisa em questão."
}
```

Modelo: gemma2:2b
Texto: Eu amo esse produto.
Sentimento: ```json
{
 "sentimento": "positivo",
 "pontuação": 0.8,
 "Explicação": "O texto expressa uma forte apreciação pelo produto em questão, usando a expressão 'eu amo'. Isso indica um sentimento positivo e expressivo."
}
``` 


Modelo: qwen2.5:1.5b
Texto: Eu detestei esse produto.
Sentimento: ```json
{
    "sentimento": "negativo",
    "pontuação": -0.8,
    "explicacao": "O texto é direto e expressa claramente um sentimento negativo, utilizando a palavra 'detestei', que é o contrário de 'adorar' ou 'am'. A pontuação de -0.8 indica uma intensidade moderada da rejeição."
}
```

Modelo: gemma2:2b
Texto: Eu detestei esse produto.
Sentimento: ```json
{
  "sentimento": "negativo",
  "pontuação": -0.8,
  "Explicação": "O texto expressa uma forte desaprovação e negativa opinião sobre o produto em questão, utilizando a expressão 'detestei' que evidencia um sentimento de repulsa." 
}
``` 


Modelo: qwen2.5:1.5b
Texto: O filme foi bom, mas sem ser especial.
Sentimento: ```json
{
    "sentimento": "neutro",
    "pontuação": 0,
    "explicação": "O texto é neutro pois usa a palavra 'bom', que pode ser considerada positiva, mas também há o adjetivo 'sem ser especial', indicando uma insatisfativa semelhante à negatividade de um filme 'especial'. Portanto, não há pontuação clara para positivo ou negativo."
}
```

Modelo: gemma2:2b
Texto: O filme foi bom, mas sem ser especial.
Sentimento: ```json
{
  "sentimento": "neutro",
  "pontuação": 0.5,
  "Explicação": "O texto expressa uma avaliação moderada do filme, reconhecendo suas qualidades positivas (bom) mas também evidenciando a falta de algo extraordinário ou memorável (sem ser especial)." 
}
``` 
				
			

Conclusão

A análise de sentimentos com LLMs é uma maneira excelente para entender as emoções e preferências das pessoas. E a existência de modelos disponíveis com licença permissiva torna essa técnica muito mais acessível. Neste post, usamos Gemma 2 e Qwen2.5, mas poderíamos ter optado por outros. A escolha é pessoal.

Imagem com IA Generativa – Dia 274

IA generativa img 274

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial