Para a geração do sistema de diálogos (i.e. chatbots) são necessários dados, no entanto não basta que estes dados sejam coletados e/ou gerados. Estes devem, além disso, ser pré-processados para em seguida serem anotados. O pré-processamento contempla todas as ações realizadas para a configuração das conversas em um formato de arquivo estruturado e organizado. Isso inclui processamentos manuais e automáticos, desenvolvimento de scripts, conversão do formato de arquivos e padronização da estrutura de conversas. Todas estas ações são próprias de cada tipo de dado recebido como entrada, e são fundamentais para a posterior etapa de anotação das conversas.
A anotação de dados é importante para que se possa ensinar o modelo linguístico (i.e. bot) como identificar as tarefas a serem realizadas. Optou-se que a anotação utilizada segue o padrão empregado pelo MultiWOZ, que é um conjunto de dados da literatura já anotado para o treinamento de modelos de conversação orientada a tarefas. Para realizar a anotação dos dados é necessário identificar: (i) Intenções, o que identifica qual tarefa deve ser realizada; e (ii) Entidades, que define as especificações de cada tarefa identificada.
Usualmente, essa anotação de entidades e intenções em conversas de texto é feita de forma manual por pessoas com treinamento prévio. Para o caso do MultiWOZ, por exemplo, é utilizado o serviço de crowd work, o Amazon Mechanical Turk, através do qual foi possível anotar todos os mais de 10 mil diálogos do conjunto de dados com o custo de remuneração da mão de obra utilizada.
Visando facilitar e sistematizar essa tarefa, desenvolvemos uma método associado a uma ferramenta de anotação de diálogos. Este método estabelece etapas ordenadas que coordenam uma anotação eficiente de conjuntos de dados de diálogos, e a ferramenta possibilita essa anotação de forma rápida, online e padronizada.
Um dos grandes objetivos do projeto é desenvolver e aplicar um método para a anotação de conjuntos de dados conversacionais assistida por ferramenta online. Essa ferramenta para anotação, nomeada Assis, é de desenvolvimento próprio da equipe de pesquisadores. É uma ferramenta opensource totalmente web com interface frontend user friendly e com backend específico para acelerar a técnica por meio de anotação automática viabilizada por modelos de linguagem.
A metodologia desenvolvida leva em conta três principais estágios: a aquisição dos dados, a anotação padronizada das conversas e a aplicação destes dados na implementação do chatbot. A aquisição de dados pode advir de diferentes fontes como de backups de conversas de ferramentas de chat, de mineração de conversas da internet como fóruns e redes sociais e de datasets da literatura como o MultiWOZ. A anotação ocorre com a utilização da ferramenta anotadora nos dados adquiridos formatados no padrão JSON do MultiWOZ. Após a anotação assistida, os dados formatados são direcionados para implementação do chatbot, a qual ocorre por treinamento de modelo linguístico.
O processo todo até a geração dos conjuntos de dados anotados pode ser melhor detalhado em 5 fases: a entrada, a configuração, a importação, a anotação e a exportação dos dados. A entrada de dados ocorre após estes serem adquiridos - seja por mineração, geração ou apropriação. Estes dados entram sem uma estrutura adequada e, por isso, devem passar por uma etapa de configuração para que possam ser importados na ferramenta de anotação. Após estarem estruturados, já na primeira página da ferramenta estes dados são importados. Em seguida, um a um, os diálogos são anotados através da identificação e marcação de entidades e intenções. Por fim, depois de estruturados e anotados os dados são exportados em um documento unificado JSON.
Associados a ferramenta, há modelos de identificação de entidades e intenções em mensagens baseados no Transformer BERT.
O BERT foi escolhido, pois além de ser uma tecnologia estado-da-arte para modelagem de linguagem natural, possibilita a implementação complementar de algoritmos para otimização de seu treinamento, como por exemplo o Active Learning. Essa metodologia de otimização baseia-se no princípio de treinar o modelo com dados que forneçam a maior quantidade possível de informação, visando reduzir o tempo de treinamento e a quantidade total de dados para treino. Para tanto, são aplicadas funcionalidades específicas do BERT que possibilitam calcular a incerteza associada às suas anotações realizadas, permitindo a seleção de anotações imprecisas para correção manual e posterior realimentação de aprendizado.
Na figura, tem-se uma esquematização do funcionamento do BERT configurado e treinado para anotação de entidades. Nela, percebe-se que, inicialmente, o modelo recebe a mensagem a ser anotada. Posteriormente, ele a anota gerando em decorrência de sua arquitetura uma matriz de números associada a incerteza das múltiplas anotações realizadas na mensagem incorporada. Essa matriz é utilizada a posteriori para determinar a necessidade de correção da anotação gerada.
Há, ainda, a anotação de intenções, a qual necessita de uma atenção especial, uma vez que não existem trabalhos e código pregressos disponíveis para essa função. Trata-se de uma classificação multilabel, que, diferentemente da anotação de entidades, consiste na atribuição de múltiplas classes (intenções) a uma determinada mensagem de um diálogo. Enquanto, a anotação de entidades compreende uma classificação individual de cada token da sentença, a anotação de intenções compõe-se pela classificação da sentença inteira quanto às suas finalidades no diálogo, ou seja, suas diferentes intenções.
Levando em consideração as disparidades expostas para as anotações de entidades e intenções, optou-se pelo desenvolvimento de um método próprio de anotação de intenções distinto do empregado para a tarefa de NER. Gerou-se, portanto, uma metodologia de classificação baseada na integração de modelos de classificação genéricos, e.g. Logistic Regression, Decision Tree Classifier, etc. com o modelo de linguagem BERT.
A abordagem empregada foi a de utilizar o Transformer **BERT para obtenção de uma representação semântica da mensagem a ser classificada, utterance, em um espaço vetorial de 768 dimensões. Para tanto, utilizou-se os pesos referentes ao token padrão CLS da última camada do modelo de linguagem como um vetor de embbendig da mensagem inteira. Como há 768 neurônios na última camada do BERT referente a cada token, tem-se, portanto, a partir de seus pesos um vetor de embbeding de 768 dimensões.
Os vetores extraídos do BERT para cada mensagem com suas respectivas anotações de intenções foram aplicados no treinamento de modelos genéricos classificadores, os quais em essência realizam a tarefa de identificar quais intenções estão presentes em um dado vetor de embbeding obtido de uma mensagem.