Node.js Schnittstelle zum Google Word2VEC -Tool
Dies ist eine Node.js-Schnittstelle zum Word2VEC -Tool, das bei Google Research entwickelt wurde, um "effiziente Implementierung der kontinuierlichen Wörterbeutel- und Skip-Gramm-Architekturen für die Berechnung von Wörtern von Vektoren zu überspringen, die in einer Vielzahl von NLP-Aufgaben verwendet werden können. Weitere Informationen zum Word2VEC -Projekt erhalten Sie unter https://code.google.com/p/word2vec/.
Derzeit wird node-word2vec nur für UNIX-Betriebssysteme unterstützt.
Installieren Sie es über NPM:
npm install word2vecUm es in Node.js zu verwenden, benötigen das Modul wie folgt:
var w2v = require ( 'word2vec' ) ;Für Anwendungen, bei denen es wichtig ist, dass bestimmte Wörterpaare als einzelner Begriff behandelt werden (z. B. "Barack Obama" oder "New York" als ein Wort behandelt werden sollten), sollte die für das Training verwendete Textkorpora über die Word2phras- Funktion vorverarbeitet werden. Wörter, die häufig nebeneinander auftreten, werden über einen Unterstrich verkettet, z.
Innen ruft diese Funktion die C -Befehlszeilenanwendung des Google Word2VEC -Projekts C auf. Dies ermöglicht es ihm, Multi-Threading zu verwenden und die Effizienz des ursprünglichen C-Codes zu erhalten. Es verarbeitet die vom Textdokument input Texte und schreibt die Ausgabe in eine Datei mit dem von output angegebenen Namen.
Der params Parameter erwartet ein JS -Objekt, das optional einige der folgenden Schlüssel und zugehörigen Werte enthält. Wenn sie nicht geliefert werden, werden die Standardwerte verwendet.
| Schlüssel | Beschreibung | Standardwert |
|---|---|---|
| mincount | Wörter wegwerfen, die weniger als die Mischungszeiten erscheinen | 5 |
| Schwelle | bestimmt die Anzahl der Phrasen, höherer Wert bedeutet weniger Phrasen | 100 |
| debuggen | Legt Debug -Modus fest | 2 |
| still | Legt fest, ob eine Ausgabe in die Konsole gedruckt werden sollte | FALSCH |
Nach erfolgreicher Ausführung wird die angegebene callback aufgerufen. Es empfängt die Anzahl des Exit -Code als erster Parameter.
Diese Funktion ruft die Word2VEC -Befehlszeilenanwendung von Google auf und findet Vektordarstellungen für die Wörter im input -Trainingskorpus und schreibt die Ergebnisse in die output . Der Ausgang kann dann über die loadModel -Funktion in Knoten geladen werden, die verschiedene Methoden zur Interaktion mit den gelernten Vektordarstellungen der Wörter freilegt.
Der params Parameter erwartet ein JS -Objekt, das optional einige der folgenden Schlüssel und zugehörigen Werte enthält. Für diejenigen, die fehlen, werden die Standardwerte verwendet:
| Schlüssel | Beschreibung | Standardwert |
|---|---|---|
| Größe | Legt die Größe der Wortvektoren fest | 100 |
| Fenster | legt die maximale Überspringen der Länge zwischen den Wörtern fest | 5 |
| Probe | Legt die Schwelle für das Auftreten von Wörtern fest. Diejenigen, die in den Trainingsdaten mit höherer Häufigkeit erscheinen, werden zufällig abgeschickt. Nützlicher Bereich ist (0, 1E-5) | 1e-3 |
| HS | 1 = Hierarchische Softmax verwenden | 0 |
| Negativ | Anzahl der negativen Beispiele; Gemeinsame Werte sind 3 - 10 (0 = nicht verwendet) | 5 |
| Themen | Anzahl der gebrauchten Threads | 12 |
| Iter | Anzahl der Trainings -Iterationen | 5 |
| mincount | Dadurch werden Wörter weggeworfen, die weniger als Mincount Times erscheinen | 5 |
| Alpha | Legt die Startlernrate fest | 0,025 für Skip-Gramm und 0,05 für CBOW |
| Klassen | Ausgabe von Wortklassen anstelle von Wortvektoren | 0 (Vektoren sind geschrieben) |
| debuggen | Legt Debug -Modus fest | 2 |
| binär | Speichern Sie die resultierenden Vektoren im Binärmodus | 0 (aus) |
| SaveVocab | Der Wortschatz wird gespeichert, um den Wert von SaveVocab zu erhalten | |
| Readvocab | Der Wortschatz wird aus dem ReadVocab -Wert gelesen, der nicht aus den Trainingsdaten entstanden ist | |
| CBOW | Verwenden Sie das kontinuierliche Modell mit Wörtern | 1 (Verwenden Sie 0 für Skip-Gramm-Modell) |
| still | Legt fest, ob eine Ausgabe in die Konsole gedruckt werden sollte | FALSCH |
Nach erfolgreicher Ausführung wird die angegebene callback aufgerufen. Es empfängt die Anzahl des Exit -Code als erster Parameter.
Dies ist die Hauptfunktion des Pakets, in dem eine gespeicherte Modelldatei mit Vektordarstellungen von Wörtern in den Speicher geladen wird. Eine solche Datei kann erstellt werden, indem die Funktion word2VEC verwendet wird. Nachdem die Datei erfolgreich geladen wurde, wird die mitgelieferte Rückruffunktion abgefeuert, wodurch die folgenden Konventionen zwei Parameter enthält: err und model . Wenn alles reibungslos läuft und kein Fehler auftritt, sollte das erste Argument null sein. Der model ist ein Modellobjekt, das alle Daten hält und die im Abschnitt Modellobjekt erläuterten Eigenschaften und Methoden freigibt.
Beispiel:
w2v . loadModel ( './vectors.txt' , function ( error , model ) {
console . log ( model ) ;
} ) ;Beispielausgabe:
{
getVectors : [ Function ] ,
distance : [ Function : distance ] ,
analogy : [ Function : analogy ] ,
words : '98331' ,
size : '200'
} Anzahl der eindeutigen Wörter im Trainingskorpus.
Länge der gelehrten Wortvektoren.
Berechnet die Wortähnlichkeit zwischen word1 und word2 .
Beispiel:
model . similarity ( 'ham' , 'cheese' ) ;Beispielausgabe:
0.4907762118841032 Berechnet den Kosinusabstand zwischen der mitgelieferten Phrase (einer string , die intern in ein Array von Wörtern umgewandelt wird, die zu einem Phrasevektor führen) und die anderen Wortvektoren des Wortschatzes. Zurückgegeben sind die number mit der höchsten Ähnlichkeit mit der mitgelieferten Phrase. Wenn number nicht geliefert wird, werden die 40 höchsten Bewertungswörter zurückgegeben. Wenn keines der Wörter in der Phrase im Wörterbuch erscheint, gibt die Funktion null zurück. In allen anderen Fällen werden unbekannte Wörter in die Berechnung der Kosinusentfernung fallen gelassen.
Beispiel:
model . mostSimilar ( 'switzerland' , 20 ) ;Beispielausgabe:
[
{ word : 'chur' , dist : 0.6070252929307018 } ,
{ word : 'ticino' , dist : 0.6049085549621765 } ,
{ word : 'bern' , dist : 0.6001648890419077 } ,
{ word : 'cantons' , dist : 0.5822226582323267 } ,
{ word : 'z_rich' , dist : 0.5671853621346818 } ,
{ word : 'iceland_norway' , dist : 0.5651901750812693 } ,
{ word : 'aargau' , dist : 0.5590524831511438 } ,
{ word : 'aarau' , dist : 0.555220055372284 } ,
{ word : 'zurich' , dist : 0.5401119092258485 } ,
{ word : 'berne' , dist : 0.5391358099043649 } ,
{ word : 'zug' , dist : 0.5375590160292268 } ,
{ word : 'swiss_confederation' , dist : 0.5365824598661265 } ,
{ word : 'germany' , dist : 0.5337325187293028 } ,
{ word : 'italy' , dist : 0.5309218588704736 } ,
{ word : 'alsace_lorraine' , dist : 0.5270204106304165 } ,
{ word : 'belgium_denmark' , dist : 0.5247942780963807 } ,
{ word : 'sweden_finland' , dist : 0.5241634037188426 } ,
{ word : 'canton' , dist : 0.5212495170066538 } ,
{ word : 'anterselva' , dist : 0.5186651140386938 } ,
{ word : 'belgium' , dist : 0.5150383129735169 }
] Für ein Paar Wörter in einer Beziehung wie man und king versucht diese Funktion, den Begriff zu finden, der in einer analogen Beziehung zum mitgelieferten word steht. Wenn number nicht geliefert wird, werden standardmäßig die 40 Ergebnisse mit der höchsten Punktzahl zurückgegeben.
Beispiel:
model . analogy ( 'woman' , [ 'man' , 'king' ] , 10 ) ;Beispielausgabe:
[
{ word : 'queen' , dist : 0.5607083309028658 } ,
{ word : 'queen_consort' , dist : 0.510974781496456 } ,
{ word : 'crowned_king' , dist : 0.5060923120115347 } ,
{ word : 'isabella' , dist : 0.49319425034513376 } ,
{ word : 'matilda' , dist : 0.4931204901924969 } ,
{ word : 'dagmar' , dist : 0.4910608716969606 } ,
{ word : 'sibylla' , dist : 0.4832698899279795 } ,
{ word : 'died_childless' , dist : 0.47957251302898396 } ,
{ word : 'charles_viii' , dist : 0.4775804990655765 } ,
{ word : 'melisende' , dist : 0.47663194967001704 }
] Gibt die erlernten Vektorrepräsentationen für das word zurück. Wenn im Wortschatz keine word vorliegt, gibt die Funktion null zurück.
Beispiel:
model . getVector ( 'king' ) ;Beispielausgabe:
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} Gibt die erlernten Vektor -Darstellungen für die gelieferten Wörter zurück. Wenn Wörter nicht definiert sind, wird dh die Funktion hervorgerufen, ohne dass es Argumente übergeben wird. Sie gibt die Vektoren für alle gelernten Wörter zurück. Der zurückgegebene Wert ist ein array von Objekten, die Instanzen der Klasse WordVec sind.
Beispiel:
model . getVectors ( [ 'king' , 'queen' , 'boy' , 'girl' ] ) ;Beispielausgabe:
[
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} ,
{
word : 'queen' ,
values : [
0.014399041122817985 ,
- 0.000026896638109750347 ,
0.20398248693190596 ,
...
- 0.05329081648586445 ,
- 0.012556868376422963
]
} ,
{
word : 'girl' ,
values : [
- 0.1247347144692245 ,
0.03834108759049417 ,
- 0.022911846734360187 ,
...
- 0.0798994867922872 ,
- 0.11387393949666696
]
} ,
{
word : 'boy' ,
values : [
- 0.05436531234037158 ,
0.008874993957578164 ,
- 0.06711992414442335 ,
...
0.05673998568026764 ,
- 0.04885347925837509
]
}
] Gibt das Wort zurück, das die engste Vektordarstellung in die Eingabe vec hat. Die Funktion erwartet einen Wortvektor, entweder eine Instanz des Konstruktor WordVector oder ein Array von Zahlenwerten der size . Es gibt das Wort im Wortschatz zurück, für den der Abstand zwischen seinem Vektor und dem gelieferten Eingangsvektor am niedrigsten ist.
Beispiel:
model . getNearestWord ( model . getVector ( 'empire' ) ) ;Beispielausgabe:
{ word : 'empire' , dist : 1.0000000000000002 } Gibt die Wörter zurück, deren Vektordarstellungen der Eingabe vec am nächsten stehen. Der erste Parameter der Funktion erwartet einen Wortvektor, entweder eine Instanz des Konstruktor WordVector oder ein Array von Zahlenwerten der size . Der zweite Parameter, number , ist optional und gibt die Anzahl der zurückgegebenen Wörter an. Wenn nicht geliefert, wird ein Standardwert von 10 verwendet.
Beispiel:
model . getNearestWords ( model . getVector ( 'man' ) , 3 )Beispielausgabe:
[
{ word : 'man' , dist : 1.0000000000000002 } ,
{ word : 'woman' , dist : 0.5731114915085445 } ,
{ word : 'boy' , dist : 0.49110060323870924 }
] Das Wort im Wortschatz.
Die erlernte Vektordarstellung für das Wort, ein Array von size .
Fügt den Vektor des Eingangs wordVector dem Vektor .values hinzu.
Subtrahiert den Vektor des Eingangs wordVector an den Vektor .values .
Führen Sie Tests über den Befehl npm test
Klonen Sie das Git -Repository mit dem Befehl
$ git clone https://github.com/Planeshifter/node-word2vec.gitWechseln Sie in das Projektverzeichnis und kompilieren Sie die C -Quelldateien über
$ cd node-word2vec
$ make --directory=srcApache v2.