DeepQa é construído em cima de Keras. Decidimos que a Pytorch é uma plataforma melhor para a pesquisa da PNL. Reescrevemos o DeepQa em uma biblioteca Pytorch chamada Allennlp. Não haverá mais desenvolvimento de DeepQa. Mas estamos muito empolgados com a Allennlp - se você estiver aprendendo profundamente para o processamento de linguagem natural, verifique isso!
O DeepQa é uma biblioteca para realizar tarefas de PNL de alto nível com aprendizado profundo, particularmente focado em vários tipos de resposta a perguntas. O DeepQA é construído sobre o Keras e o Tensorflow e pode ser considerado uma interface para esses sistemas que facilita a PNL.
Especificamente, esta biblioteca fornece os seguintes benefícios sobre as keras / tensorflow simples:
O DeepQA é construído usando o Python 3. A maneira mais fácil de configurar um ambiente compatível é usar o CONDA. Isso configurará um ambiente virtual com a versão exata do Python usada para desenvolvimento, juntamente com todas as dependências necessárias para executar o DeepQA.
Baixe e instale o conda.
Crie um ambiente de conda com o Python 3.
conda create -n deep_qa python=3.5
Agora ative o ambiente do CONDA.
source activate deep_qa
Instalar as dependências necessárias.
./scripts/install_requirements.sh
Defina o PYTHONHASHSEED para experimentos repetíveis.
export PYTHONHASHSEED=2157
Agora você deve poder testar sua instalação com pytest -v . Parabéns! Agora você tem um ambiente de desenvolvimento para Deep_QA que usa o TensorFlow com suporte à CPU. (Para suporte à GPU, consulte requisitos.txt para obter informações sobre como instalar tensorflow-gpu ).
Para treinar ou avaliar um modelo usando um clone do repositório DeepQA, o ponto de entrada recomendado é usar o script run_model.py . O primeiro argumento para esse script é um arquivo de parâmetro, descrito mais abaixo. O segundo argumento determina o comportamento, treinando um modelo ou avaliando um modelo treinado em relação a um conjunto de dados de teste. As opções válidas atuais para o segundo argumento são train e test (omitir o argumento é o mesmo que train de passagem).
Os arquivos de parâmetros especificam a classe Model Class que você está usando, model hyperparameters, detalhes de treinamento, arquivos de dados, detalhes do gerador de dados e muitas outras coisas. Você pode ver arquivos de parâmetro de exemplo no diretório Exemplos. Você pode obter alguma noção de quais parâmetros estão disponíveis analisando a documentação.
Na verdade, o treinamento de um modelo exigirá arquivos de entrada, que você precisa fornecer. Temos uma biblioteca complementar, as experiências DeepQa, que foram originalmente projetadas para produzir arquivos de entrada e executar experimentos, e podem ser usados para gerar arquivos de dados necessários para a maioria das tarefas para as quais temos modelos. Estamos avançando para colocar o código de processamento de dados diretamente em DeepQA, para que as experiências de DeepQA não sejam necessárias, mas por enquanto, obtendo arquivos de dados de treinamento no formato certo é mais facilmente feito com experimentos DeepQA.
Se você estiver usando o DeepQA como uma biblioteca em seu próprio código, ainda é simples executar seu modelo. Em vez de usar o script run_model.py para fazer o treinamento/avaliação, você pode fazê -lo da seguinte forma:
from deep_qa import run_model, evaluate_model, load_model, score_dataset
# Train a model given a json specification
run_model("/path/to/json/parameter/file")
# Load a model given a json specification
loaded_model = load_model("/path/to/json/parameter/file")
# Do some more exciting things with your model here!
# Get predictions from a pre-trained model on some test data specified in the json parameters.
predictions = score_dataset("/path/to/json/parameter/file")
# Compute your own metrics, or do beam search, or whatever you want with the predictions here.
# Compute Keras' metrics on a test dataset, using a pre-trained model.
evaluate_model("/path/to/json/parameter/file", ["/path/to/data/file"])
O restante das diretrizes de uso, exemplos, etc., são os mesmos ao trabalhar em um clone do repositório.
Para implementar um novo modelo em DeepQA, você precisa subclassem TextTrainer . Há documentação sobre o que é necessário para isso; Veja em particular a seção de métodos abstratos. Para um exemplo simples de um modelo totalmente funcional, consulte o tagger de sequência simples, que possui cerca de 20 linhas de código de implementação real.
Para treinar, carregar e avaliar modelos que você escreveu, basta passar um argumento adicional para as funções acima e remover o parâmetro model_class da sua especificação JSON. Por exemplo:
from deep_qa import run_model
from .local_project import MyGreatModel
# Train a model given a json specification (without a "model_class" attribute).
run_model("/path/to/json/parameter/file", model_class=MyGreatModel)
Se você estiver fazendo uma nova tarefa ou uma nova variante de uma tarefa com uma especificação diferente de entrada/saída, provavelmente também precisará implementar um tipo de Instance . A Instance lida com os dados de ler de um arquivo e convertê -los em matrizes Numpy que podem ser usadas para treinamento e avaliação. Isso só precisa acontecer uma vez para cada especificação de entrada/saída.
O DeepQA possui implementações de métodos de última geração para uma variedade de tarefas. Aqui estão alguns deles:
Este código permite fácil experimentação com os seguintes conjuntos de dados:
Observe que o código de processamento de dados para a maior parte disso atualmente vive em experimentos de DeepQA, no entanto.
Se você usar esse código e pensar que algo pode ser melhorado, as solicitações de tração são muito bem -vindas. Abrir um problema também é bom, mas podemos responder muito mais rapidamente para obter solicitações.
Este código é divulgado nos termos da licença Apache 2.