Dieses Repository enthält Code für das Training und die Verwendung des Deep SRL
Wenn Sie unseren Code verwenden, zitieren Sie bitte unser Papier wie folgt:
@inproceedings {HE2017DEEP,
title = {Deep Semantic Rollenkennzeichnung: Was funktioniert und was als nächstes},,
Autor = {er, Luheng und Lee, Kenton und Lewis, Mike und Zettlemoyer, Luke},
boottitle = {Proceedings der Jahresversammlung des Vereins für Computer -Linguistik},
Jahr = {2017}
}
./scripts/fetch_required_data.sh Dekomprimieren Sie die Modelle (in Ressourcen) unter dem Verzeichnis neural_srl. Zum Beispiel unter dem Codebasis -Verzeichnis:
tar -zxvf resources/conll05_model.tar.gz
Hier ist eine Liste von vorbereiteten Modellen:
conll05_model.tar.gz : Einzelmodell, das auf CONLL-2005-Datensatz trainiert wurde.conll05_ensemble.tar.gz : 5 Modell Ensemble, das auf dem Datensatz von Conll-2005 trainiert wurde.conll05_propid_model.tar.gz : Prädikat-Identifikationsmodellzug auf Conll-2005.conll2012_model.tar.gz : Einzelmodell, das auf CONLL-2012-Datensatz trainiert wird.conll2012_ensemble.tar.gz : 5 Modell Ensemble, das auf dem Datensatz von Conll-2012 trainiert wurde.conll2012_propid_model.tar.gz : Prädikat-Identifikationsmodellzug auf Conll-2012. python python/interactive.py --model conll05_model/ --pidmodel conll05_propid_model
Laufen:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out (auf cpu) oder:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out ${gpu_id} (auf gpu)
Beachten Sie, dass das Skript /usr/local/cuda/... zu PATH und CUDA_LD_LIBRARY_PATH hinzugefügt wird und vorgezogene Modelle von ./conll05_propid_model und ./conll05_ensemble geladen werden. Passen Sie bitte die Konfigurationen nach Ihrem eigenen Setup an.
Die Eingabedatei enthält tokenisierte Sätze, einen Satz pro Zeile.
Die Ausgabedatei enthält so etwas wie:
John sagte Pat, den Baum abzuschneiden.
Prädikat: erzählt (1)
A0: John
V: erzählt
A2: Pat
A1: den Baum abschneiden
John sagte Pat, den Baum abzuschneiden.
Prädikat: Schnitt (4)
A0: Pat
V: abschneiden
A1: Der Baum
predict.py lädt die gesamte Eingabedatei in den Speicher, daher wäre es besser, die Anzahl der Sätze in jeder Datei unter 50.000 zu halten. Für die Replikation von Ergebnissen auf den Datensätzen von CONLL-2005 und CONLL-2012 Befolgen Sie die folgenden Schritte.
Die Daten werden von: CONLL-2005 Shared Task bereitgestellt, die ursprünglichen Wörter stammen jedoch aus dem Penn Treebank-Datensatz, der nicht öffentlich verfügbar ist. Wenn Sie den PTB Corpus haben, können Sie ausführen:
./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
Sie müssen die folgenden Anweisungen befolgen, um Conll-2012 Data Conll-2012 zu erhalten. Dies würde zu einem Verzeichnis namens /path/to/conll-formatted-ontonotes-5.0 führen. Laufen:
./scripts/make_conll2012_data.sh /path/to/conll-formatted-ontonotes-5.0
Siehe Verwendung von python/train.py ::
python python/predict.py -h
Oder als kurzer Start, laufen Sie trainiertes Modell (erfordert conll05_ensemble):
./scripts/run_predict_conll05.sh ${gpu_id} oder:
./scripts/run_predict_conll05.sh für das Ausführen auf CPU.
Führen Sie das Modell von End-to-End mit vorhergesagt aus (erfordert conll05_ensemble und conll05_propid_model):
./scripts/run_end_to_end_conll05.sh ${gpu_id}
Das Ausführen des CONLL-2012-Modells funktioniert ähnlich.
Siehe Verwendung von python/train.py ::
python python/train.py -h
Trainieren Sie ein SRL-Modell (mit Goldprädikaten) mit vordefinierten Konfigurationsdateien: ./scripts/run_train.sh ${gpu_id}
Trainieren Sie ein Prädikat -Kenner: ./scripts/run_propid_train.sh ${gpu_id}
Beachten Sie, dass bei Trainingszeit train.py im FAST_RUN -Modell läuft, was zu einem riesigen Aufwand der Modellkompilierung führt. Für ein 2 -Layer -Modell und bis zu 8 Stunden für ein 8 -Schicht -Modell mit Variationsabfall kann es bis zu einige Minuten dauern.
Weitere Informationen finden Sie in den Dateien in sample_data und die folgenden Erklärungen, um die Modelleingabe zu formatieren.
Jede Zeile enthält genau eine Trainingsmuster, die die Prädikatinformationen (Index in den Sätzen ab 0), den tokenisierten Satz und eine Abfolge von Tags enthält. Wenn keine Gold -Tags vorhanden sind, verwenden Sie einfach eine Abfolge von Betriebssystem. Der Satz und die Tag -Sequenz sind mit einem ||| getrennt Symbol. Wir verwenden das IOB2 -Format. Alle Token und Symbole werden durch eine willkürliche Whitespace getrennt.
Beispielzeilen:
2 Meine Katzen lieben Hüte. ||| B-A0 I-A0 BV B-A1 O.
Das Format ähnelt dem oben definierten, außer dass jede Zeile einem Eingabegestand entspricht und keine Prädikatinformationen bereitgestellt werden. Die Prediaten entsprechen den V -Tags und alle anderen Wörter sind mit O -Tags gekennzeichnet.
Beispielzeilen:
Meine Katzen lieben Hüte, sagen sie. ||| Oovooovo
config enthält einige Konfigurationsdateien für das Training Das SRL-Modell ( srl_config.json und srl_small_config.json ) sowie für das Training des Prädikat-ID-Modells ( propid_config.json )
Wenden Sie sich an Luheng er, wenn Sie Fragen haben!