Dies ist eine Pytorch -Implementierung des ACL 2019 -Papiers "Einfache und effektive Textübereinstimmung mit reicheren Ausrichtungsfunktionen". Die ursprüngliche TensorFlow-Implementierung: https://github.com/alibaba-edu/simple-effective-text-matching.
RE2 ist eine schnelle und starke neuronale Architektur für allgemeine Textanwendungen. In einer textübergreifenden Aufgabe nimmt ein Modell zwei Textsequenzen als Eingabe auf und prognostiziert ihre Beziehung. Diese Methode zielt darauf ab, zu untersuchen, was für eine starke Leistung bei diesen Aufgaben ausreicht. Es vereinfacht viele langsame Komponenten, die zuvor als Kernbausteine in der Textanpassung angesehen werden, während drei wichtige Funktionen direkt zur Ausrichtung der Sequenz verfügbar sind: ursprüngliche Punktfunktionen, frühere ausgerichtete Funktionen und kontextbezogene Funktionen.
RE2 erreicht die Leistung mit dem Stand der Technik auf vier Benchmark-Datensätzen: SNLI, Scitail, Quora und Wikiqa über Aufgaben der Inferenz für natürliche Sprache, die Identifizierung und die Beantwortung der Auswahl ohne oder nur wenige aufgabenspezifische Anpassungen. Es hat mindestens 6 -mal schneller Inferenzgeschwindigkeit im Vergleich zu ähnlich durchgeführten Modellen.

In der folgenden Tabelle werden wichtige Experimentergebnisse aufgeführt. Das Papier meldet die Durchschnitts- und Standardabweichung von 10 Läufen. Die Inferenzzeit (in Sekunden) wird durch Verarbeitung einer Stapel von 8 Längepaaren 20 auf Intel i7 -CPUs gemessen. Die Berechnungszeit von POS -Funktionen, die von CSRAN und Diin verwendet werden, ist nicht enthalten.
| Modell | Snli | Scitail | Quora | Wikiqa | Inferenzzeit |
|---|---|---|---|---|---|
| Bimpm | 86,9 | - - | 88.2 | 0,731 | 0,05 |
| Essim | 88.0 | 70,6 | - - | - - | - - |
| Diin | 88.0 | - - | 89.1 | - - | 1.79 |
| CSRAN | 88.7 | 86,7 | 89,2 | - - | 0,28 |
| Re2 | 88,9 ± 0,1 | 86,0 ± 0,6 | 89,2 ± 0,2 | 0,7618 ± 0,0040 | 0,03 ~ 0,05 |
Weitere Informationen zu den Komponenten und Versuchsergebnissen finden Sie in der Arbeit.
pip install -r requirements.txtresources/Die im Papier verwendeten Daten werden wie folgt erstellt:
data/orig .cd data/orig/SNLI && gunzip *.gz )cd data && python prepare_snli.pydata/orig .cd data && python prepare_scitail.pydata/orig .cd data && python prepare_quora.pydata/orig .cd data && python prepare_wikiqa.pymake -B , um die Quelldateien in qg-emnlp07-data/eval/trec_eval-8.0 zu kompilieren. Verschieben Sie die Binärdatei "Trec_eval" in resources/ . Führen Sie den folgenden Befehl aus, um ein neues Text -Matching -Modell zu trainieren:
python train.py $config_file .json5 Beispielkonfigurationsdateien finden Sie in configs/ :
configs/main.json5 : replizieren Sie das Hauptexperiment resultieren im Papier.configs/robustness.json5 : Robustheitprüfungenconfigs/ablation.json5 : AblationsstudieDie Anweisungen zum Schreiben Ihrer eigenen Konfigurationsdateien:
[
{
name : 'exp1' , // name of your experiment, can be the same across different data
__parents__ : [
'default' , // always put the default on top
'data/quora' , // data specific configurations in `configs/data`
// 'debug', // use "debug" to quick debug your code
] ,
__repeat__ : 5 , // how may repetitions you want
blocks : 3 , // other configurations for this experiment
} ,
// multiple configurations are executed sequentially
{
name : 'exp2' , // results under the same name will be overwritten
__parents__ : [
'default' ,
'data/quora' ,
] ,
__repeat__ : 5 ,
blocks : 4 ,
}
]Verwenden Sie nur die Konfigurationen, um nur die Konfigurationen zu überprüfen
python train.py $config_file .json5 --dry Um ein existiertes Modell zu bewerten, verwenden Sie python evaluate.py $model_path $data_file , hier ein Beispiel:
python evaluate.py models/snli/benchmark/best.pt data/snli/train.txt
python evaluate.py models/snli/benchmark/best.pt data/snli/test.txt Beachten Sie, dass in der Pytorch-Implementierung noch nicht mehr GPU-Schulungen unterstützt werden. Eine einzelne 16G -GPU reicht für das Training aus, wenn Blöcke <5 mit versteckter Größe 200 und Stapelgröße 512. Alle im Papier angegebenen Ergebnisse außer den Robustheitsprüfungen können mit einer einzelnen 16G -GPU reproduziert werden.
Bitte zitieren Sie das ACL -Papier, wenn Sie RE2 in Ihrer Arbeit verwenden:
@inproceedings{yang2019simple,
title={Simple and Effective Text Matching with Richer Alignment Features},
author={Yang, Runqi and Zhang, Jianhai and Gao, Xing and Ji, Feng and Chen, Haiqing},
booktitle={Association for Computational Linguistics (ACL)},
year={2019}
}
Dieses Projekt befindet sich unter Apache -Lizenz 2.0.