Deepqa ist auf Keras gebaut. Wir haben beschlossen, dass Pytorch eine bessere Plattform für die NLP -Forschung ist. Wir haben DeepQA in eine Pytorch-Bibliothek namens Allennlp neu geschrieben. Es wird keine Entwicklung von DeepQA mehr geben. Aber wir freuen uns über Allennlp ziemlich aufgeregt - wenn Sie Deep Learning für die Verarbeitung natürlicher Sprache machen, sollten Sie es überprüfen!
DeepQA ist eine Bibliothek für hochrangige NLP-Aufgaben mit Deep Learning, das sich insbesondere auf verschiedene Arten der Beantwortung von Fragen konzentriert. DeepQA basiert auf Keras und Tensorflow und kann als Schnittstelle zu diesen Systemen betrachtet werden, die NLP erleichtert.
Insbesondere bietet diese Bibliothek die folgenden Vorteile gegenüber einfachen Keras / Tensorflow:
DeepQA wird mit Python gebaut. Die einfachste Möglichkeit, eine kompatible Umgebung einzurichten, besteht darin, Conda zu verwenden. Dadurch wird eine virtuelle Umgebung mit der genauen Version von Python eingerichtet, die für die Entwicklung verwendet wird, zusammen mit allen Abhängigkeiten, die für die Ausführung von DeepQA erforderlich sind.
Download und installieren Sie Conda.
Erstellen Sie eine Conda -Umgebung mit Python 3.
conda create -n deep_qa python=3.5
Aktivieren Sie nun die Conda -Umgebung.
source activate deep_qa
Installieren Sie die erforderlichen Abhängigkeiten.
./scripts/install_requirements.sh
Stellen Sie die PYTHONHASHSEED für wiederholbare Experimente ein.
export PYTHONHASHSEED=2157
Sie sollten jetzt in der Lage sein, Ihre Installation mit pytest -v zu testen. Glückwunsch! Sie haben jetzt eine Entwicklungsumgebung für Deep_QA, die TensorFlow mit CPU -Unterstützung verwendet. (Weitere Informationen zur Installation tensorflow-gpu finden Sie unter Anforderungen.
Um ein Modell mit einem Klon des DeepQA -Repositorys zu trainieren oder zu bewerten, besteht der empfohlene Einstiegspunkt darin, das Skript run_model.py zu verwenden. Das erste Argument für dieses Skript ist eine Parameterdatei, die weiter unten beschrieben wird. Das zweite Argument bestimmt das Verhalten, entweder ein Modell oder die Bewertung eines geschulten Modells gegen einen Testdatensatz. Aktuelle gültige Optionen für das zweite Argument sind train und test (das Auslassen des Arguments entspricht dem Zug train ).
Parameterdateien geben die Modellklasse an, die Sie verwenden, Modellhyperparameter, Schulungsdetails, Datendateien, Datengeneratordetails und viele andere Dinge. Sie können Beispielparameterdateien im Beispielverzeichnis sehen. Sie können eine Vorstellung davon erhalten, welche Parameter verfügbar sind, indem Sie die Dokumentation durchsuchen.
Tatsächlich erfordert ein Modell Eingabedateien, die Sie bereitstellen müssen. Wir haben eine Begleitbibliothek, DeepQA -Experimente, die ursprünglich zum Erstellen von Eingabedateien und zum Ausführen von Experimenten entwickelt wurde und zur Generierung der erforderlichen Datendateien für die meisten Aufgaben, für die wir Modelle haben, generiert werden können. Wir bewegen uns dazu, den Datenverarbeitungscode direkt in DeepQA zu bringen, so dass DeepQA -Experimente nicht erforderlich sind, aber im Moment ist das Erhalten von Trainingsdatendateien im richtigen Format mit DeepQA -Experimenten am einfachsten.
Wenn Sie DeepQA als Bibliothek in Ihrem eigenen Code verwenden, ist es immer noch einfach, Ihr Modell auszuführen. Anstatt das Skript run_model.py zu verwenden, um das Training/die Bewertung durchzuführen, können Sie es selbst wie folgt tun:
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"])
Die restlichen Nutzungsrichtlinien, Beispiele usw. sind die gleichen wie bei der Arbeit in einem Klon des Repositorys.
Um ein neues Modell in DeepQA zu implementieren, müssen Sie TextTrainer unterklassen. Es gibt Dokumentationen darüber, was dafür notwendig ist. Siehe insbesondere den Abschnitt "Abstract Methods". Ein einfaches Beispiel eines voll funktionsfähigen Modells finden Sie im einfachen Sequenz -Tagger, der etwa 20 Zeilen des tatsächlichen Implementierungscode enthält.
Um Modelle zu trainieren, zu laden und zu bewerten, die Sie selbst geschrieben haben, geben Sie einfach ein zusätzliches Argument an die oben genannten Funktionen weiter und entfernen Sie den Parameter model_class aus Ihrer JSON -Spezifikation. Zum Beispiel:
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)
Wenn Sie eine neue Aufgabe oder eine neue Variante einer Aufgabe mit einer anderen Eingabe-/Ausgangsspezifikation ausführen, müssen Sie wahrscheinlich auch einen Instance implementieren. Die Instance behandelt das Lesen von Daten aus einer Datei und konvertiert sie in Numpy -Arrays, die für das Training und die Bewertung verwendet werden können. Dies muss nur einmal für jede Eingangs-/Ausgangsspezifikation geschehen.
DeepQA verfügt über Implementierungen hochmoderner Methoden für eine Vielzahl von Aufgaben. Hier sind einige von ihnen:
Dieser Code ermöglicht ein einfaches Experimentieren mit den folgenden Datensätzen:
Beachten Sie jedoch, dass der Datenverarbeitungscode für die meisten dieser derzeit in DeepQA -Experimenten lebt.
Wenn Sie diesen Code verwenden und der Meinung sind, dass etwas verbessert werden könnte, sind die Anfragen von Zugang sehr willkommen. Das Öffnen eines Problems ist auch in Ordnung, aber wir können viel schneller reagieren, um Anfragen zu ziehen.
Dieser Code wird unter den Bestimmungen der Apache 2 -Lizenz veröffentlicht.