Esta é a implementação de Keras para a tarefa de classificação de frases usando CNNs.
O conjunto de dados para a tarefa acima foi obtido do benchmark do projeto Natural Language Understanding
O texto usado para o treinamento se enquadra em seis categorias, a saber, AddToPlaylist, BookRestaurant, GetWeather, RateBook, SearchCreativeWork, SearchScreeningEvent, cada uma com quase 2.000 frases.
Para preparar o conjunto de dados, no diretório principal do projeto, abra o terminal e digite:
$ python prepare_data.py
Verifique Intent_Classification_Keras_Glove.ipynb para a parte de construção e treinamento do modelo. Abaixo está a visão geral do modelo.
Embora RNNs como LSTM e GRU sejam amplamente usados para tarefas de modelagem de linguagem, os CNNs também provaram ser muito mais rápidos para treinar devido à paralelização de dados durante o treinamento e fornecem melhores resultados do que os LSTM. Aqui está uma breve comparação entre os diferentes métodos para resolver a classificação de frases, como pode ser visto que o TextCNN oferece o melhor resultado de todos e também treina mais rápido. Consegui atingir 99% de precisão no conjunto de dados de treinamento e validação em um minuto após 3 épocas quando treinado em uma CPU i7 normal.
A classificação da intenção e o reconhecimento da entidade nomeada são as duas partes mais importantes ao criar um chatbot orientado a objetivos.
Existem muitos pacotes python de código aberto para fazer um chatbot, Rasa é um deles. O legal do Rasa é que cada parte da pilha é totalmente personalizável e facilmente intercambiável. Embora o Rasa tenha um excelente suporte integrado para tarefas de classificação de intenções, também podemos especificar nosso próprio modelo para a tarefa, verifique Processing Pipeline para obter mais informações sobre ele.
Usando incorporações de palavras pré-treinadas em um modelo Keras
Redes Neurais Convolucionais para Classificação de Frases
Uma análise de sensibilidade de (e guia prático para) redes neurais convolucionais para classificação de frases
Uma avaliação empírica de redes convolucionais e recorrentes genéricas para modelagem de sequências