Construir e treinar modelos de NLP
Introdução
Como vimos no episódio 1, bons conjuntos de dados são a base de qualquer inteligência artificial bem-sucedida, especialmente no caso de NLP. Uma vez que nosso banco de dados está devidamente implementado e estruturado, os próximos passos se tornam muito mais simples.
Hoje, veremos como nosso banco de dados nos permitirá construir conjuntos de consultas específicas, que poderemos então anotar e enriquecer a partir de outras fontes ou variações de exemplos conhecidos. Finalmente, veremos como treinar e refinar nosso modelo para aprimorá-lo.
Objetivo
Agora temos uma quantidade excepcionalmente grande de dados à nossa disposição, devidamente classificados e estruturados. O objetivo é usar esses dados para construir uma inteligência artificial capaz de analisar solicitações de negócios. Esses dados precisarão ser anotados, enriquecidos e integrados em um modelo que avaliaremos, ajustaremos e melhoraremos.
Construindo subconjuntos relevantes a partir de nosso banco de dados
Graças à classificação de nossos dados (descrita no episódio 1), podemos extrair dados relacionados a muitas áreas de negócios em uma consulta precisa. Isso, obviamente, exige conhecimento detalhado das áreas de negócios em questão. É necessário planejar suas solicitações de forma inteligente.
Por exemplo, no caso de RFQs (Request for Quotes), como solicitações de preços de ações, é provável encontrar em e-mails referências a termos relacionados, como “valor da ação” ou “ações”. Uma consulta rápida no Kibana pode encontrar exemplos relevantes. Graças à nossa estrutura, é extremamente fácil identificar o remetente, o destinatário ou a conversa em que o e-mail está, permitindo recuperar, com este método, muitos e-mails vinculados e, assim, vários outros exemplos.
Para criar um subconjunto relevante em um domínio específico, pelo menos dez exemplos diferentes são necessários. Quanto mais variados os exemplos, mais fácil será construir um modelo de alto desempenho e menor será a necessidade de enriquecê-lo. Portanto, é obrigatório examinar todas as fontes mencionadas para maximizar o potencial do nosso conjunto de dados.
Depois de extrair esses dados, eles devem ser anotados para permitir o treinamento da nossa IA. Essa etapa envolve separar os exemplos em diferentes “intenções”.
- Primeiro, separamos os e-mails recuperados em solicitações relevantes e partes “decorativas”. Estas últimas treinam a IA em frases introdutórias, cortesias, etc.
- Depois, as solicitações são organizadas em intenções, como: “solicitação de ações”, “solicitação de títulos”, etc.
- Então, dentro de cada intenção, determinamos “entidades”. Por exemplo, na intenção “solicitação de ações”, usamos entidades como “ativo”, “quantidade”, “livro”, etc.
- Finalmente, os dados são anotados usando ferramentas como: https://spacy.io/universe/project/prodigy. Depois disso, um script simples transforma as anotações para adequá-las à ferramenta de aprendizado escolhida.
A necessidade de enriquecer nossos subconjuntos
Com isso, você pode teoricamente treinar seus primeiros modelos. Contudo, alguns subconjuntos podem não ser completos. Mesmo exaurindo exemplos no dataset, ainda é possível criar variações dos exemplos existentes.
Por exemplo, em solicitações sobre ações:
Duplique exemplos, modifique entidades anotadas ou sua ordem, mantendo o significado geral. Esse método ajuda a definir melhor intenções específicas, sem introduzir vieses.
Treinar e ajustar nosso modelo
Construímos nosso modelo com base em modelos padrão, facilitando o reconhecimento de entidades e intenções. Por exemplo, diferenciamos a consulta “Qual o preço das ações da Microsoft?” da consulta “Qual o preço de uma guitarra?”.
Testamos o modelo gerando matrizes de confusão, uma ferramenta essencial para avaliar o desempenho da IA no terreno conhecido. Resultados perfeitos são esperados; ajustes são feitos para resolver confusões antes de testá-lo em condições reais.
Conclusão
Neste segundo episódio, vimos:
- Como preparar nosso modelo a partir do dataset
- Como enriquecê-lo
- Como treiná-lo e ajustá-lo
Esses passos são cruciais para garantir que o modelo possa responder eficientemente a solicitações de usuários humanos. O desenvolvimento exigiu trabalho rigoroso de mineração de dados, enriquecimento, anotação e ajuste antes do uso em produção.
No próximo episódio, abordaremos como testar sua IA em condições reais. Fique ligado para o episódio 3!