Beschreibung
Das Skip-Thought Vektoren-Projekt bietet den Sent2Vec-Encoder und den zugehörigen Trainingscode, der direkt aus dem Forschungsartikel "Skip-Thought Vektoren" stammt. Dieses Werkzeug wurde entwickelt, um qualitativ hochwertige, dichte Vektorrepräsentationen für Sätze zu generieren. Diese Satz-Embeddings können dann in einer Vielzahl von Anwendungen zur Verarbeitung natürlicher Sprache (NLP) eingesetzt werden und deren Leistung erheblich verbessern.
Die Implementierung erfolgt hauptsächlich in Python und erfordert spezifische Abhängigkeiten wie Python 2.7, Theano 0.7, NumPy, SciPy, scikit-learn, NLTK 3 und optional Keras und gensim für spezifische Experimente. Benutzer müssen vortrainierte Modelldateien und Wort-Embeddings herunterladen, die erheblich groß sind und daher ausreichend Speicherplatz benötigen. Die Einrichtung umfasst die Konfiguration von Pfaden zu diesen heruntergeladenen Dateien im Skript `skipthoughts.py` und die Einstellung von Theano-Flags für die Gerätauswahl (CPU oder GPU).
Nach der Einrichtung kann der Encoder Listen von Sätzen verarbeiten, um numerische Vektoren zu erzeugen. Die Ausgabev vektoren sind 4800-dimensional und kombinieren Uni-Skip- und Bi-Skip-Modelle, wobei die kombinierten Vektoren für optimale Leistung empfohlen werden, wie in den Experimenten des Artikels gezeigt. Der Kodierungsprozess kann hinsichtlich der Ausführlichkeit gesteuert werden, wobei der Fortschritt basierend auf der Länge der verarbeiteten Sätze angezeigt wird.
Das Repository enthält auch Code zur Replikation von im Artikel beschriebenen Experimenten, die Aufgaben wie die Klassifizierung von Fragetypen (TREC), die Rangfolge von Bildern und Sätzen (unter Verwendung des COCO-Datensatzes), die semantische Verwandtschaft (SICK-Datensatz), die Erkennung von Paraphrasen (Microsoft Research Paraphrase Corpus) und verschiedene binäre Klassifizierungs-Benchmarks (MR, CR, SUBJ, MPQA) abdecken. Diese experimentellen Skripte leiten Benutzer bei der Datenvorbereitung und Ausführung an, um die berichteten Ergebnisse zu erzielen, was oft die Kreuzvalidierung zur Abstimmung von Hyperparametern beinhaltet.
Das Projekt betont die Bedeutung eines End-of-Sentence (EOS)-Tokens, das optional während der Kodierung verwendet werden kann, um die Leistung zu verbessern, insbesondere bei Sätzen ohne Standard-Satzzeichen. Der Code wird unter der Apache-Lizenz 2.0 veröffentlicht, und Benutzer werden ermutigt, die relevanten Forschungsarbeiten zu zitieren, wenn sie den Code nützlich finden.
Skip-Thought Vektoren im Überblick
Sent2Vec-Encoder-Implementierung
Trainingscode aus dem Paper "Skip-Thought Vectors"
Generiert dichte Satzvektor-Repräsentationen
Unterstützt Uni-Skip- und Bi-Skip-Modelle
Empfohlene Combine-Skip-Vektoren für beste Leistung
Enthält Code für TREC-Klassifizierungsexperimente
Enthält Code für Bild-Satz-Ranking-Experimente
Enthält Code für Experimente zur semantischen Verwandtschaft
Enthält Code für Experimente zur Paraphrasen-Erkennung
Enthält Code für binäre Klassifizierungs-Benchmarks
Optionale Verwendung des EOS-Tokens für die Kodierung
Python-basierte Implementierung
Erste Schritte mit Skip-Thought Vektoren
Modelldateien und Wort-Embeddings herunterladen
Pfade zu heruntergeladenen Dateien in skipthoughts.py konfigurieren
THEANO_FLAGS für die Gerätauswahl (CPU/GPU) setzen
skipthoughts importieren und das Modell laden
Encoder mit dem geladenen Modell initialisieren
Listen von Sätzen kodieren, um Vektoren zu erhalten
Bereitgestellte Skripte für spezifische NLP-Experimente ausführen
Skip-Thought Vektoren's Anwendungsfälle
- Generierung von Satz-Embeddings
- Textklassifizierung
- Bild-Satz-Ranking
- Semantische Ähnlichkeit
- Paraphrasen-Erkennung
- Binäre Klassifizierung







