Deepqa строится на вершине кера. Мы решили, что Pytorch - лучшая платформа для исследований НЛП. Мы переписываем Deepqa в библиотеку Pytorch под названием Allennlp. Там больше не будет развития Deepqa. Но мы очень взволнованы Allennlp - если вы делаете глубокое обучение для обработки естественного языка, вы должны проверить это!
Deepqa-это библиотека для выполнения задач NLP высокого уровня с глубоким обучением, особенно сфокусированным на различных видах ответа на вопросы. Deepqa строится на вершине керас и Tensorflow и может рассматриваться как интерфейс для этих систем, который облегчает NLP.
В частности, эта библиотека предоставляет следующие преимущества по сравнению с простыми керами / Tensorflow:
Deepqa построен с использованием Python 3. Самый простой способ настроить совместимую среду - использовать Conda. Это создаст виртуальную среду с точной версией Python, используемой для разработки, а также все зависимости, необходимые для запуска Deepqa.
Скачать и установить Conda.
Создайте среду Conda с Python 3.
conda create -n deep_qa python=3.5
Теперь активируйте среду Conda.
source activate deep_qa
Установите требуемые зависимости.
./scripts/install_requirements.sh
Установите PYTHONHASHSEED для повторяемых экспериментов.
export PYTHONHASHSEED=2157
Теперь вы должны иметь возможность проверить свою установку с помощью pytest -v . Поздравляю! Теперь у вас есть среда разработки для Deep_QA, которая использует TensorFlow с поддержкой процессора. (Для поддержки графического процессора см. Tepend.txt для получения информации о том, как установить tensorflow-gpu ).
Чтобы обучить или оценить модель, используя клон репозитория DeepQA, рекомендуемой точкой входа является использование сценария run_model.py . Первым аргументом этого скрипта является файл параметров, описанный ниже ниже. Второй аргумент определяет поведение, либо обучение модели, либо оценивая обученную модель с тестовым набором данных. Текущие достоверные варианты для второго аргумента являются train и test (пропуск аргумента - это то же самое, что и проезжающий train ).
Файлы параметров указывают используемый класс модели, модели гиперпараметров, сведения об обучении, файлы данных, детали генератора данных и многие другие вещи. Вы можете увидеть пример файлов параметров в каталоге примеров. Вы можете получить некоторое представление о том, какие параметры доступны, просмотрев документацию.
На самом деле обучение модели потребует входных файлов, которые вам необходимо предоставить. У нас есть библиотека компаньонов, Deepqa Experiments, которая изначально была разработана для производства входных файлов и запуска экспериментов, и может использоваться для создания необходимых файлов данных для большинства задач, для которых у нас есть модели. Мы движемся к тому, чтобы поместить код обработки данных непосредственно в DeepQA, так что эксперименты DeepQA не являются необходимыми, но на данный момент получение файлов обучающих данных в правильном формате наиболее легко выполнять с экспериментами DeepQA.
Если вы используете Deepqa в качестве библиотеки в своем собственном коде, все равно будет простым запускать вашу модель. Вместо использования сценария run_model.py для проведения обучения/оценки, вы можете сделать это самостоятельно:
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"])
Остальные руководящие принципы использования, примеры и т. Д. Составляют такие же, как при работе в клоне репозитория.
Чтобы реализовать новую модель в Deepqa, вам необходимо подключить TextTrainer . Есть документация о том, что необходимо для этого; См. В частности, раздел абстрактных методов. Для простого примера полнофункциональной модели см. Простой теги последовательности, который имеет около 20 строк реального кода реализации.
Чтобы тренировать, загружать и оценить модели, которые вы написали сами, просто передайте дополнительный аргумент в области вышеуказанных функций и удалите параметр model_class из вашей спецификации JSON. Например:
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)
Если вы выполняете новую задачу или новый вариант задачи с другой спецификацией ввода/вывода, вам, вероятно, также необходимо реализовать тип Instance . Instance обрабатывает чтение данных из файла и преобразование их в массивы Numpy, которые можно использовать для обучения и оценки. Это должно произойти только один раз для каждой спецификации ввода/вывода.
Deepqa имеет реализацию современных методов для различных задач. Вот несколько из них:
Этот код обеспечивает легкие эксперименты со следующими наборами данных:
Обратите внимание, что код обработки данных для большей части этого в настоящее время живет в экспериментах Deepqa.
Если вы используете этот код и думаете, что что -то может быть улучшено, запросы на вытягивание очень приветствуются. Открытие проблемы тоже в порядке, но мы можем ответить гораздо быстрее, чтобы привлечь запросы.
Этот код выпускается в соответствии с условиями лицензии Apache 2.