DeepQa는 Keras 위에 지어졌습니다. 우리는 Pytorch가 NLP 연구를위한 더 나은 플랫폼이라고 결정했습니다. 우리는 DeepQa를 Allennlp라는 Pytorch 라이브러리로 다시 작성했습니다. 더 이상 DeepQa의 발전은 없을 것입니다. 그러나 우리는 Allennlp에 대해 매우 기쁘게 생각합니다. 자연어 처리를 위해 딥 러닝을하고 있다면 확인해야합니다!
DeepQA는 딥 러닝을 통해 높은 수준의 NLP 작업을 수행하는 도서관입니다. 특히 다양한 종류의 질문 답변에 중점을 둡니다. DeepQA는 Keras 및 Tensorflow 위에 구축되었으며 NLP를 더 쉽게 만드는 이러한 시스템의 인터페이스로 생각할 수 있습니다.
구체적 으로이 라이브러리는 일반 keras / tensorflow에 대한 다음과 같은 이점을 제공합니다.
DeepQa는 Python 3을 사용하여 구축되었습니다. 호환 환경을 설정하는 가장 쉬운 방법은 Conda를 사용하는 것입니다. 이것은 DeepQA를 실행하는 데 필요한 모든 종속성과 함께 개발에 사용되는 정확한 버전의 Python 버전으로 가상 환경을 설정합니다.
Conda를 다운로드하여 설치하십시오.
파이썬 3으로 콘다 환경을 만듭니다.
conda create -n deep_qa python=3.5
이제 콘다 환경을 활성화하십시오.
source activate deep_qa
필요한 종속성을 설치하십시오.
./scripts/install_requirements.sh
반복 가능한 실험을 위해 PYTHONHASHSEED 설정하십시오.
export PYTHONHASHSEED=2157
이제 pytest -v 로 설치를 테스트 할 수 있어야합니다. 축하해요! 이제 CPU 지원과 함께 텐서 플로우를 사용하는 Deep_QA를위한 개발 환경이 있습니다. (GPU 지원은 tensorflow-gpu 설치하는 방법에 대한 정보는 요구 사항을 참조하십시오).
DeepQA 저장소의 클론을 사용하여 모델을 교육하거나 평가하려면 권장되는 진입 점은 run_model.py 스크립트를 사용하는 것입니다. 이 스크립트에 대한 첫 번째 주장은 아래에 설명 된 매개 변수 파일입니다. 두 번째 인수는 모델을 훈련 시키거나 시험 데이터 세트에 대한 훈련 된 모델을 평가하는 동작을 결정합니다. 두 번째 인수에 대한 현재의 유효한 옵션은 train 및 test 입니다 (인수를 생략하는 것은 train 통과하는 것과 동일합니다).
매개 변수 파일 사용중인 모델 클래스, 모델 하이퍼 파라미터, 교육 세부 정보, 데이터 파일, 데이터 생성기 세부 사항 및 기타 여러 가지를 지정합니다. 예제 디렉토리에서 예제 매개 변수 파일을 볼 수 있습니다. 문서를 살펴보면 사용할 수있는 매개 변수에 대한 개념을 얻을 수 있습니다.
실제로 모델을 교육하려면 제공 해야하는 입력 파일이 필요합니다. 우리는 원래 입력 파일을 생성하고 실험을 실행하도록 설계된 동반자 라이브러리 인 DeepQA 실험을 보유하고 있으며 모델이있는 대부분의 작업에 필요한 데이터 파일을 생성하는 데 사용할 수 있습니다. 우리는 데이터 처리 코드를 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 줄이있는 간단한 시퀀스 타거를 참조하십시오.
스스로 작성한 모델을 교육,로드 및 평가하려면 위의 기능에 대한 추가 인수를 전달하고 JSON 사양에서 model_class 매개 변수를 제거하십시오. 예를 들어:
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 Array로 변환합니다. 이는 각 입력/출력 사양에 대해 한 번만 발생하면됩니다.
DeepQA는 다양한 작업을위한 최첨단 방법을 구현하고 있습니다. 그중 몇 가지가 있습니다.
이 코드는 다음 데이터 세트를 쉽게 실험 할 수 있습니다.
그러나이 대부분의 데이터 처리 코드는 현재 DeepQA 실험에 남아 있습니다.
이 코드를 사용하고 무언가가 개선 될 수 있다고 생각하면 풀 요청을 매우 환영합니다. 문제를 여는 것도 괜찮지 만 요청을 가져 오기 위해 훨씬 더 빨리 응답 할 수 있습니다.
이 코드는 Apache 2 라이센스의 조건에 따라 릴리스됩니다.