Verschiedene Modelle und Code für die Paraphrase -Identifizierung, die in TensorFlow (1.1.0) implementiert ist.
Ich war sehr darauf geachtet, den Code zu dokumentieren und zu erklären, was ich in verschiedenen Schritten in den Modellen mache. Hoffentlich ist es didaktischer Beispielcode für diejenigen, die mit TensorFlow beginnen möchten!
Bisher hat dieses Repo implementiert:
Eine grundlegende siamesische LSTM -Grundlinie, die lose auf dem Modell in Müller, Jonas und Aditya Thyagarajan basiert. "Siamesische wiederkehrende Architekturen für die Lernung der Satz Ähnlichkeit." AAAI (2016).
Ein siamesisches LSTM -Modell mit einer zusätzlichen "Matching -Schicht", wie in Liu, Yang et al. "Inferenz der natürlichen Sprache mit bidirektionalem LSTM-Modell und innerer Einhaltung." Corr ABS/1605.09090 (2016).
Das bilaterale multiperspektive Matching-Modell von Wang von Wang, Zhiguo et al. "Bilaterales multi-Perspektive-Matching für Sätze für natürliche Sprache." Corr ABS/1702.03814 (2017).
PRs, um mehr Modelle / optimieren oder zu patchen vorhandenen hinzuzufügen, sind mehr als willkommen! Der Großteil des Modellcodes befindet sich in Duplicate_Questions/Models
Ein Großteil des Datenverarbeitungscodes stammt aus / inspiriert von Allenai / Deep_QA. Schauen Sie sich sie an, wenn Ihnen gefällt, wie dieses Projekt strukturiert ist!
Dieses Projekt wurde in Python 3.5 entwickelt und funktioniert wahrscheinlich nicht mit anderen Versionen von Python), und die Paketanforderungen sind in requirements.txt .
So installieren Sie die Anforderungen:
pip install -r requirements.txt
Beachten Sie, dass Sie nach der Installation der Anforderungen die erforderlichen NLTK -Daten durch Ausführen (in Ihrer Shell) herunterladen müssen:
python -m nltk.downloader punkt
Beachten Sie, dass die Datei requirements.txt Datei tensorflow als Abhängigkeit angeben, eine CPU-gebundene Version von TensorFlow. Wenn Sie eine GPU haben, sollten Sie diesen CPU -Tensorflow deinstallieren und die GPU -Version installieren, indem Sie ausgeführt werden:
pip uninstall tensorflow
pip install tensorflow-gpu
Führen Sie zunächst Folgendes aus, um die Hilfsverzeichnisse zum Speichern von Daten, geschultem Modellen und Protokollen zu generieren:
make aux_dirs
Wenn Sie vorgefertigte Handschuhvektoren verwenden möchten, rennen Sie außerdem:
make glove
Dadurch wird vorgezogene Handschuhvektoren zu data/external/ heruntergeladen. Extrahieren Sie die Dateien in demselben Verzeichnis.
Um die Quora -Fragepaare zu verwenden, laden Sie den Datensatz von Kaggle herunter (kann ein Konto erfordern). Platzieren Sie die heruntergeladenen Zip -Archive in data/raw/ und extrahieren Sie die Dateien in das gleiche Verzeichnis.
Dann rennen Sie:
make quora_data
Um die Daten automatisch zu reinigen und mit den Skripten in scripts/data/quora zu verarbeiten.
Um ein Modell zu trainieren oder mit einem Modell vorhersagen, führen Sie die Skripte in scripts/run_model/ mit python <script_path> aus. Sie können zusätzliche Dokumentation zu den Parametern erhalten, die sie durchführen, indem Sie python <script_path> -h ausführen
Hier ist ein Beispiel für den Basis -siamesischen Bilstm:
python scripts/run_model/run_siamese.py train --share_encoder_weights --model_name=baseline_siamese --run_id=0
Hier ist ein Beispiel für den siamesischen Bilstm mit passender Ebene:
python scripts/run_model/run_siamese_matching_bilstm.py train --share_encoder_weights --model_name=siamese_matching --run_id=0
Hier ist ein Beispiel für das BIMPM -Modell ein Beispiel für das BEIL -Lauf:
python scripts/run_model/run_bimpm.py train --early_stopping_patience=5 --model_name=biMPM --run_id=0
Beachten Sie, dass die Standardeinstellungen möglicherweise nicht ideal für Ihre Verwendung sind. Wenden Sie also die Knöpfe, wie Sie möchten.
Haben Sie Ideen, wie Sie dieses Repo verbessern können? Haben Sie eine Funktionsanforderung, einen Fehlerbericht oder ein Patch? Fühlen Sie sich frei, ein Problem oder eine PR zu eröffnen, da ich gerne Probleme anpasse und Pull -Anfragen anschaue.
├── LICENSE
├── Makefile <- Makefile with commands like `make data` or `make train`
├── README.md <- The top-level README for developers using this project.
├── data
│ ├── external <- Data from third party sources.
│ ├── interim <- Intermediate data that has been transformed.
│ ├── processed <- The final, canonical data sets for modeling.
│ └── raw <- Original immutable data (e.g. Quora Question Pairs).
|
├── logs <- Logs from training or prediction, including TF model summaries.
│
├── models <- Serialized models.
|
├── requirements.txt <- The requirements file for reproducing the analysis environment
│
├── duplicate_questions<- Module with source code for models and data.
│ ├── data <- Methods and classes for manipulating data.
│ │
│ ├── models <- Methods and classes for training models.
│ │
│ └── util <- Various helper methods and classes for use in models.
│
├── scripts <- Scripts for generating the data
│ ├── data <- Scripts to clean and split data
│ │
│ └── run_model <- Scripts to train and predict with models.
│
└── tests <- Directory with unit tests.