Webvectors ist ein Toolkit zur Bereitstellung vektorsemantischer Modelle (insbesondere vorhersagebasierte Worteinbettungen wie in word2vec oder ELMo ) über das Web, wodurch es einfach wird, der breiten Öffentlichkeit ihre Fähigkeiten zu demonstrieren. Es erfordert Python >= 3.6 und verwendet unter der Haube Flask , Gensim und simple_elmo .
Arbeitsdemos:
Der Dienst kann entweder als WSGI-Anwendung in den Apache -Webserver integriert oder als eigenständiger Server mit Gunicorn ausgeführt werden (wir empfehlen die letztere Option).
Fügen Sie der Apache-Konfigurationsdatei die folgende Zeile hinzu:
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
, wobei WEBNAME der Alias für Ihren Dienst relativ zum Serverstamm ist (webvectors für http://example.com/webvectors
) und PATH Ihr Dateisystempfad zum WebVectors -Verzeichnis ist.
Ersetzen Sie in allen *.wsgi
und *.py
Dateien in Ihrem WebVectors -Verzeichnis webvectors.cfg
in der Zeichenfolge config.read('webvectors.cfg')
durch den absoluten Pfad zur Datei webvectors.cfg
.
Richten Sie Ihren Dienst mithilfe der Konfigurationsdatei webvectors.cfg
ein. Die wichtigsten Einstellungen sind:
Schlagworte
Modelle können beliebige Tags verwenden, die Wörtern zugewiesen sind (z. B. Wortart-Tags, wie in boot_NOUN ). Wenn Ihre Modelle auf Wörter mit Tags trainiert werden, sollten Sie dies in webvectors.cfg
(Variable use_tags
) aktivieren. Anschließend können Benutzer mit WebVectors ihre Abfragen nach Tags filtern. Sie sollten auch die Liste der zulässigen Tags (Variable tags_list
in webvectors.cfg
) und die Liste der Tags angeben, die dem Benutzer angezeigt werden (Datei tags.tsv
).
Models-Daemon
WebVectors verwendet einen Daemon, der im Hintergrund läuft und tatsächlich alle einbettungsbezogenen Aufgaben verarbeitet. Wenn Sie möchten, kann es auch auf einem anderen Computer ausgeführt werden. Daher sollten Sie in webvectors.cfg
host
und port
angeben, an denen dieser Daemon lauscht. Starten Sie anschließend das eigentliche Daemon-Skript word2vec_server.py
. Es lädt die Modelle und öffnet einen Listening-Socket. Dieser Daemon muss permanent aktiv sein, daher können Sie ihn über „screen“ oder ähnliches starten.
Modelle
Die Liste der Modelle, die Sie verwenden möchten, ist in der Datei models.tsv
definiert. Es besteht aus durch Tabulatoren getrennten Feldern:
Der Modellbezeichner wird als Name für Kontrollkästchen auf den Webseiten verwendet. Außerdem ist es wichtig, dass in der Datei strings.csv
derselbe Bezeichner für die Bezeichnung von Modellnamen verwendet wird. Die Sprache des Modells wird als Argument verwendet, das an die Lemmatisierungsfunktion übergeben wird. Dabei handelt es sich um eine einfache Zeichenfolge mit dem Namen der Sprache (z. B. „Englisch“, „Russisch“, „Französisch“).
Modelle können derzeit in 4 Formaten vorliegen:
WebVectors erkennt automatisch das Format der Modelle und lädt sie alle in den Speicher. Die Benutzer können zwischen geladenen Modellen wählen.
Lokalisierung
WebVectors verwendet die Datei strings.csv
als Quelle lokalisierter Zeichenfolgen. Es handelt sich um eine durch Kommas getrennte Datei mit drei Feldern:
Standardmäßig ist Sprache 1 Englisch und Sprache 2 Russisch. Dies kann in webvectors.cfg
geändert werden.
Vorlagen
Die dem Benutzer tatsächlich angezeigten Webseiten werden in den Dateien templates/*.html
definiert. Stimmen Sie sie nach Ihren Wünschen ab. Das Hauptmenü ist unter base.html
definiert.
Statistikdateien
Wenn Ihre Anwendung die statischen Dateien (Bootstrap- und JS-Skripte) nicht findet, bearbeiten Sie die Variable static_url_path
in run_syn.py
. Dort sollten Sie den absoluten Pfad zum data
angeben.
Abfragehinweise
Wenn Sie möchten, dass Abfragehinweise funktionieren, vergessen Sie nicht, Ihre eigene Liste mit Hinweisen (JSON-Format) zu erstellen. Ein Beispiel für eine solche Liste finden Sie in data/example_vocab.json
. Die tatsächliche URL dieser Liste sollte in data/hint.js
angegeben werden.
Ausführen von WebVectors
Sobald Sie alle Einstellungen entsprechend Ihrem Arbeitsablauf geändert, sichergestellt haben, dass die Vorlagen für Sie in Ordnung sind, und den Models-Daemon gestartet haben, können Sie den Dienst tatsächlich starten. Wenn Sie die Apache- Integration verwenden, starten/laden Sie Apache einfach neu. Wenn Sie die Standalone-Option bevorzugen, führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:
gunicorn run_syn:app_syn -b address:port
Dabei ist „Adresse“ die Adresse, an der der Dienst aktiv sein soll (kann „localhost“ sein), und „Port“ ist der zu überwachende Port (z. B. 9999).
Unterstützung für kontextualisierte Einbettungen Sie können die Unterstützung für kontextualisierte Einbettungsmodelle aktivieren (derzeit wird ELMo unterstützt). Um das zu tun:
Installieren Sie das simple_elmo-Paket
Laden Sie ein ELMo-Modell Ihrer Wahl herunter (zum Beispiel hier).
Erstellen Sie anhand des ELMo-Modells und eines Referenzkorpus eine typbasierte Projektion im word2vec
Format für eine begrenzte Menge von Wörtern (z. B. 10.000). Verwenden Sie dazu das von uns bereitgestellte Skript extract_elmo.py
:
python3 extract_elmo.py --input CORPUS --elmo PATH_TO_ELMO --outfile TYPE_EMBEDDING_FILE --vocab WORD_SET_FILE
Es führt das ELMo-Modell über den bereitgestellten Korpus aus und generiert statische gemittelte Typeinbettungen für jedes Wort im Wortsatz. Sie werden als lexikalische Substitute verwendet.
Bereiten Sie ein Häufigkeitswörterbuch zur Verwendung mit den kontextualisierten Visualisierungen als durch Tabulatoren getrennte Nur-Text-Datei vor, wobei die erste Spalte Wörter und die zweite Spalte ihre Häufigkeiten im Referenzwörterbuch Ihrer Wahl enthält. Die erste Zeile dieser Datei sollte eine Ganzzahl enthalten, die der Größe des Korpus in Wort-Tokens entspricht.
Setzen Sie im Abschnitt [Token]
der Konfigurationsdatei webvectors.cfg
den Wert use_contextualized
auf True und geben Sie die Pfade zu Ihrem token_model
(vorab trainiertes ELMo), type_model
(der typbasierten Projektion, die Sie mit unserem Skript erstellt haben) und freq_file
, die Ihnen gehört Frequenzwörterbuch.
Geben Sie im Feld ref_static_model
eines Ihrer statischen Wörterinbettungsmodelle (nur den Namen) an, das Sie als Ziel für Hyperlinks von Wörtern auf den kontextualisierten Visualisierungsseiten verwenden möchten.
Die Seite mit den lexikalischen ELMo-Ersatzwörtern wird unter http://YOUR_ROOT_URL/contextual/ verfügbar sein.
Bei Problemen können Sie sich gerne an uns wenden:
http://www.aclweb.org/anthology/E17-3025
http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
http://flask.pocoo.org/
http://radimrehurek.com/gensim/
http://gunicorn.org/