Google Word2Vecツールへのnode.jsインターフェイス
これは、さまざまなNLPタスクで使用できる「単語のベクトル表現を計算するための連続バッグとスキップグラムアーキテクチャの効率的な実装」のためにGoogle Researchで開発されたWord2Vecツールへのnode.jsインターフェイスです。 Word2Vecプロジェクトの詳細については、https://code.google.com/p/word2vec/に相談してください。
現在、 node-word2vecはUNIXオペレーティングシステムでのみサポートされています。
NPM経由でインストールします:
npm install word2vecnode.js内で使用するには、次のようにモジュールが必要です。
var w2v = require ( 'word2vec' ) ;特定の単語のペアが単一の用語として扱われることが重要であるアプリケーションの場合(例:「バラクオバマ」または「ニューヨーク」は1つの単語として扱う必要があります)、トレーニングに使用されるテキストコーパはWord2Phrase関数を介して前処理する必要があります。隣り合って頻繁に発生する単語は、アンダースコアを介して連結されます。たとえば、「new」と「York」という言葉は、隣をフォローしても1つの単語「new_york」に変換される可能性があります。
内部的には、この関数はGoogle Word2VECプロジェクトのCコマンドラインアプリケーションを呼び出します。これにより、マルチスレッドを使用し、元のCコードの効率を保持できます。 inputテキストドキュメントで指定されたテキストを処理し、 outputで出力を含むファイルに出力を書き込みます。
paramsパラメーターは、次のキーと関連する値の一部をオプションで含むJSオブジェクトを期待しています。それらが提供されていない場合、デフォルト値が使用されます。
| 鍵 | 説明 | デフォルト値 |
|---|---|---|
| ミンカウント | 廃棄単語は、数え切れないほどの時代に見えません | 5 |
| しきい値 | フレーズの数を決定すると、値が高いということはより少ないフレーズを意味します | 100 |
| デバッグ | デバッグモードを設定します | 2 |
| 静けさ | 出力をコンソールに印刷する必要があるかどうかを設定します | 間違い |
実行が成功した後、提供されたcallback関数が呼び出されます。出口コードの数を最初のパラメーターとして受信します。
この関数は、GoogleのWord2Vecコマンドラインアプリケーションを呼び出し、 inputトレーニングコーパス内の単語のベクトル表現を見つけ、結果をoutputファイルに書き込みます。その後、出力はloadModel関数を介してノードにロードできます。これにより、単語の学習ベクトル表現と相互作用するためのいくつかの方法が公開されます。
paramsパラメーターは、次のキーと関連する値の一部をオプションで含むJSオブジェクトを期待しています。欠落している人の場合、デフォルト値が使用されます。
| 鍵 | 説明 | デフォルト値 |
|---|---|---|
| サイズ | 単語ベクトルのサイズを設定します | 100 |
| ウィンドウ | 単語間に最大スキップ長を設定します | 5 |
| サンプル | 単語の発生のしきい値を設定します。トレーニングデータの頻度が高いと表示されるものは、ランダムにダウンサンプリングされます。有用な範囲は(0、1E-5)です | 1E-3 |
| HS | 1 =階層ソフトマックスを使用します | 0 |
| ネガティブ | 否定的な例の数;一般的な値は3-10(0 =使用されていません) | 5 |
| スレッド | 使用済みスレッドの数 | 12 |
| iter | トレーニングの数 | 5 |
| ミンカウント | これは、数え切れないほどのように見える言葉を破棄します | 5 |
| アルファ | 開始学習率を設定します | スキップグラムの場合は0.025、CBOWで0.05 |
| クラス | 単語ベクトルではなく出力ワードクラス | 0(ベクトルが書かれています) |
| デバッグ | デバッグモードを設定します | 2 |
| バイナリ | 結果のベクトルをバイナリモードで保存します | 0(オフ) |
| savevocab | 語彙は、 savevocab値に保存されます | |
| readvocab | 語彙は、トレーニングデータから構築されていないreadvocab値から読み取ります | |
| cbow | 単語の連続バッグモデルを使用します | 1(スキップグラムモデルに0を使用) |
| 静けさ | 出力をコンソールに印刷する必要があるかどうかを設定します | 間違い |
実行が成功した後、提供されたcallback関数が呼び出されます。出口コードの数を最初のパラメーターとして受信します。
これは、単語のベクトル表現をメモリに含む保存されたモデルファイルをロードするパッケージの主な機能です。このようなファイルは、 Word2Vec関数を使用して作成できます。ファイルが正常に読み込まれた後、提供されたコールバック関数が起動されます。これに続く規則には、 errとmodel 2つのパラメーターがあります。すべてがスムーズに実行され、エラーが発生しなかった場合、最初の引数はnullなければなりません。 modelパラメーターは、すべてのデータを保持し、モデルオブジェクトセクションで説明されているプロパティとメソッドを公開するモデルオブジェクトです。
例:
w2v . loadModel ( './vectors.txt' , function ( error , model ) {
console . log ( model ) ;
} ) ;サンプル出力:
{
getVectors : [ Function ] ,
distance : [ Function : distance ] ,
analogy : [ Function : analogy ] ,
words : '98331' ,
size : '200'
} トレーニングコーパスのユニークな単語の数。
学習された単語ベクトルの長さ。
word1とword2の間の単語の類似性を計算します。
例:
model . similarity ( 'ham' , 'cheese' ) ;サンプル出力:
0.4907762118841032 付属のstring (単語の配列に内部的に変換され、その結果」と語彙の他の単語ベクトルとの間のコサイン距離を計算します。返されるのは、提供されたフレーズと最も類似したnumberの単語です。 numberが提供されていない場合、デフォルトでは40の最高のスコアリングワードが返されます。フレーズ内の単語が辞書に表示されない場合、関数はnull返します。他のすべての場合において、コサイン距離の計算で不明な単語がドロップされます。
例:
model . mostSimilar ( 'switzerland' , 20 ) ;サンプル出力:
[
{ 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 }
] man and kingなどの関係にある一対の単語の場合、この関数は、提供されたwordと類似した関係にある用語を見つけようとします。 numberが提供されていない場合、デフォルトでは40の最高スコアリング結果が返されます。
例:
model . analogy ( 'woman' , [ 'man' , 'king' ] , 10 ) ;サンプル出力:
[
{ 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 }
] 入力wordの学習ベクトル表現を返します。語彙にwordが存在しない場合、関数はnull返します。
例:
model . getVector ( 'king' ) ;サンプル出力:
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} 提供された単語の学習ベクトル表現を返します。単語が未定義の場合、つまり関数が引数を渡さずに誘発される場合、すべての学習した単語のベクトルを返します。返された値は、クラスWordVecのインスタンスであるオブジェクトのarrayです。
例:
model . getVectors ( [ 'king' , 'queen' , 'boy' , 'girl' ] ) ;サンプル出力:
[
{
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
]
}
] 入力vecに最も近いベクトル表現を持つ単語を返します。この関数は、コンストラクターWordVectorのインスタンスまたは長さsizeの数値値の配列のいずれかの単語ベクトルを期待します。そのベクトルと供給された入力ベクトルの間の距離が最も低い語彙の単語を返します。
例:
model . getNearestWord ( model . getVector ( 'empire' ) ) ;サンプル出力:
{ word : 'empire' , dist : 1.0000000000000002 } ベクトル表現が入力vecに最も近い単語を返します。関数の最初のパラメーターは、コンストラクターWordVectorのインスタンスまたは長さsizeの数値値の配列のいずれかの単語ベクトルを期待します。 2番目のパラメーターでnumberはオプションであり、返された単語の数を指定します。供給されていない場合、 10のデフォルト値が使用されます。
例:
model . getNearestWords ( model . getVector ( 'man' ) , 3 )サンプル出力:
[
{ word : 'man' , dist : 1.0000000000000002 } ,
{ word : 'woman' , dist : 0.5731114915085445 } ,
{ word : 'boy' , dist : 0.49110060323870924 }
] 語彙の単語。
長さのsizeの配列である単語の学習ベクトル表現。
入力wordVectorのベクトルをベクトル.valuesに追加します。
入力wordVectorのベクトルをベクトル.valuesに減算します。
コマンドnpm testを介してテストを実行します
コマンドでgitリポジトリをクローンします
$ git clone https://github.com/Planeshifter/node-word2vec.gitプロジェクトディレクトリに変更し、Cソースファイルを介してコンパイルします
$ cd node-word2vec
$ make --directory=srcApache V2。