Skip to content

DCOMP-UFS/PLN_QA_LLM_2025_CHAGAS_NAYLA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Guia sobre a avaliação de modelos de linguagem para tarefas de Pergunta e Resposta (QA) em português brasileiro.

Equipe:

CAMILLE SOUSA MENESES DE SANTANA
NAYLA SAHRA SANTOS DAS CHAGAS
TULIO SOUSA DE GOIS

Neste tutorial, vamos explorar um processo estruturado para testar e comparar o desempenho de modelos de código aberto, disponíveis gratuitamente na plataforma Hugging Face. Nosso principal objetivo é responder à pergunta: "Como é o desempenho de modelos gratuitos do Hugging Face na tarefa de QA em português brasileiro?"

Para isso, utilizaremos um notebook em Python, criado no ambiente do Google Colab, e dois documentos que servirão como nossa base de conhecimento: um sobre doenças respiratórias crônicas e um dicionário de dados do sus.

Processo de avaliação

Etapa 1: Configuração do ambiente de trabalho

O primeiro passo em qualquer projeto de processamento de linguagem natural é garantir que todas as ferramentas necessárias estejam instaladas. No ambiente do Google Colab, isso é feito de maneira simples, utilizando o comando:

!pip install -U --quiet transformers pypdf python-docx pandas
  • transformers: Esta é a biblioteca principal do Hugging Face. Ela nos dá acesso a milhares de modelos pré-treinados para diversas tarefas, incluindo a de Perguntas e Respostas.
  • pypdf: Utilizada para extrair o texto de documentos no formato PDF. No nosso caso, será usada para ler o arquivo doencas_respiratorias_cronicas.pdf.
  • python-docx: Permite a extração de texto de documentos do Microsoft Word (.docx), como o nosso DICIONARIO_DE_DADOS.docx.
  • pandas: Embora não seja central para a tarefa de QA em si, é uma ferramenta poderosa para manipulação e análise de dados, útil para organizar os resultados dos testes.

Após a instalação, importamos os módulos necessários para o nosso script.

import pypdf
import docx
import pandas as pd
from transformers import pipeline

Etapa 2: Construção da base de conhecimento

Um modelo de QA precisa de um contexto para encontrar as respostas. Nesta etapa, preparamos nossos dois documentos para que sirvam como essa base de conhecimento, extraindo o texto bruto e armazenando-o em variáveis.

doencas_respiratorias_cronicas.pdf

Utiliza-se a biblioteca pypdf para ler o arquivo PDF página por página e concatenar todo o texto em uma única variável chamada conteudo_doencas_cronicas.

doencas_cronicas = pypdf.PdfReader("doencas_respiratorias_cronicas.pdf")
conteudo_doencas_cronicas = "\\n".join([doencas_cronicas.pages[i].extract_text() for i in range(len(doencas_cronicas.pages))])

DICIONARIO_DE_DADOS.docx

De forma similar à pypdf, a biblioteca docx é percorre o documento do Word, extraindo o conteúdo de parágrafos e tabelas. O texto de cada célula da tabela é unido por um separador (|) para manter a estrutura, e o resultado final é armazenado na variável dict_dados.

doc = docx.Document("DICIONARIO_DE_DADOS.docx")
textos_completos = []
for para in doc.paragraphs:
    textos_completos.append(para.text)
for table in doc.tables:
    for row in table.rows:
        textos_completos.append(" | ".join(cell.text for cell in row.cells))
dict_dados = "\\n".join(textos_completos)

Etapa 3: Modularização da função de teste

Para organizar o processo de avaliação, foi criada uma função reutilizável chamada responder_pergunta. Esta função é o coração do nosso experimento. Ela recebe dois argumentos: qa_input e model_name.

def responder_pergunta(qa_input: dict, model_name: str) -> dict:
    """
    Carrega um modelo de Question Answering e retorna a resposta para uma pergunta.
    """
    qa_model = pipeline("question-answering", model=model_name, tokenizer=model_name)
    resultado = qa_model(qa_input)

    return resultado

Os argumentos da função possuem os seguintes papéis: * qa_input: Um dicionário contendo a pergunta (question) e o texto de referência (context). * model_name: O nome do modelo a ser baixado do Hugging Face.

Dentro dela, inicializamos o pipeline, executamos o modelo com a pergunta desejada e o contexto e retornamos a resposta gerada.

O pipeline do Hugging Face é uma abstração de alto nível que simplifica o uso de modelos. Ao especificar "question-answering", a biblioteca cuida de todo o pré-processamento do texto e da formatação da saída.

A saída da função é um dicionário que contém a resposta encontrada (answer), um índice de confiança (score) e a localização da resposta no texto original (start e end).

Etapa 4: Avaliação do desempenho

Com o ambiente e as funções prontos, o processo de avaliação pode começar. O objetivo é submeter três modelos diferentes às mesmas perguntas e comparar suas respostas.

1. Seleção dos modelos:

Para este teste, foram escolhidos três modelos gratuitos disponíveis no Hugging Face. A seleção levou em conta a popularidade e a adequação para a tarefa, mas também as limitações do ambiente (Google Colab gratuito), que restringe o uso de modelos muito grandes. Os modelos selecionados para o teste foram:

  • deepset/xlm-roberta-large-squad2
  • pierreguillou/bert-base-cased-squad-v1.1-portuguese
  • benjleite/ptt5-ptbr-qa

2. Escolha das perguntas:

Foram selecionadas manualmente três perguntas para cada documento, buscando cobrir diferentes tipos de extração de informação.

  • Para o documento doencas_respiratorias_cronicas.pdf:
    1. O que diferencia a hemoptise falsa da verdadeira?
    2. Quais os tratamentos e atos de prevenção para rinite persistente grave?
    3. Quais os cuidados ambientais necessários para o controle das crises asmáticas?
  • Para o documento DICIONARIO_DE_DADOS.docx:
    1. Quais são os possíveis tipos de serviço referenciado, de acordo com a tabela LFCES019?
    2. Que tabelas se relacionam com a tb_carga_horaria_sus?
    3. Recebi um arquivo de planilha via email, que alegava ser uma amostra da tabela rl_estab_serv_class. Ao investigar o arquivo, notei que a planilha apresentava a coluna codservico com alguns registros nulos. Posso considerar esse arquivo como uma amostra verídica?

3. Execução dos Testes:

Para cada uma das seis perguntas, o processo é o mesmo:

  • Monta-se o dicionário qa_input com a pergunta e o contexto apropriado.
  • Executa-se a função responder_pergunta três vezes, uma para cada model_name selecionado.
  • As respostas de cada modelo são armazenadas para análise posterior.

About

Testagem de modelos de LLM em ambientes de QA, como solicitado na AV2 da disciplina de PLN

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published