knagaiml5.jsのWord2vecサンプルは「ml5-examples/p5js/Word2Vec」にあります。以下はサンプルで使用されているデータ(wordvecs10000.json)を使用した、ml5.word2vecの詳しい検証です。ml5.word2vec()メソッドml5.jsのWord2vecオブジェクトは、ml5.word2vec()メソッドに単語ベクトルを記述したJSONファイルへのパスを指定して作成します。ml5.word2vec('data/wordvecs10000.json');JSONファイルが読み込まれ、モデルの準備が整うと、Word2vecオブジェクトのreadyプロパティ(これはPromise)のthen()メソッドが呼び出されます。then()メソッドの引数である関数にはWord2vecオブジェクトが渡されます。300個});Word2vecオブジェクトのmodelプロパティは使用しているモデルです。これにJSONファイルに書かれた単語名(in、for、thatなど)をドットでつなげ、さらにそこからTensorFlow.jsのdataSync()メソッドを呼び出すと、その単語のベクトルが参照できます。下図は”in”の出力結果です。これは配列で300個の要素を持っていることが分かります。ml5.word2vec()にはまた、第2引数としてコールバック関数を渡すことができます。これはモデルの準備が整ったタイミングで呼び出されます。modelLoaded);modelLoaded()関数では、Word2vecオブジェクトの準備が整っているので、Word2vecの機能を使用することができます(nearest()やadd()、subtract()など)。?callback)Word2vecの機能として最も分かりやすいのがnearest()メソッドです。これは第1引数として渡されたinputに最も似ている単語を、max分(デフォルトは10)だけ探し求め、その結果の配列をコールバック関数の引数に渡します。以下はword2Vec.nearest()に単語’evening’を渡して、これに最も近い単語を10個探し出すnearest()関数の例です。console.log('単語ベクトルは見つからなかった。});}ここでは、p5.jsのtext()関数を使っているので、p5.jsのキャンバスに下図の左が描かれ、コンソールに下図の右が出力されます。nearest()メソッドのコールバック関数には、max個の要素を持つ配列が渡されるので、これを調べます。要素のオブジェクトはwordとdistanceというプロパティを持っています。wordはnearest()メソッドが探し出した単語で、distanceはその距離、つまり近さ、隔たりを意味する数値です。50を指定しているので、nearest()が近い意味だと判断した単語ほど左に描画されます。似ていないか?」で述べたような方法で計算して、最も似ているベクトルを求め、その単語を特定します。?callback)add()メソッドは、配列の形で渡された単語を加算します。計算が終わると、max個分の結果の配列を、callbackに渡して呼び出します。結果の配列には、加算した合計に最も近いベクトルを持つ単語がmax個だけ含まれます。要領はnearest()と同じです。inputsには加算したい単語を配列に入れて渡します。次のコードでは’bicycle’と’engine’を足しています。console.log('単語ベクトルは見つからなかった。});}なおここで、bicycleの代わりに複数形のbicyclesを指定すると、次のようなエラーがコンソールに表示されます。これは、入力に指定された’bicycles’のベクトルが見つからないというエラーです。これは次に示す方法で回避できます。t2])の場合、t1からt2を引きます。後はadd()と同じです。console.log(error.message));}bikesからengineを引くとbicycleとはお見事です。単数形のbikeでは違う結果が出ます。前出のコンソールのエラー表示はpromise.then().catch()で回避することができます(「Promiseを使う」)。?callback)使い方はadd()などと同じで、渡された単語ベクトルの平均を計算します。2つの単語を渡す場合、これは”その中間”と考えることができます。console.log(error.message));}humanとmonkeyの中間はape(類人猿)とかgorilla(ゴリラ)と言っています。getRandomWord(?callback)1単語がランダムに得られます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。WAAPIに関する注意WAAPIを利用するにはブラウザに特別な設定が必要です。ブラウザの実験的な機能を有効化する方法に書いているので、必ずお読みください。楕円(円)、円弧を描く。APIやTensorFlow.jsについて調べたことを書いています。freebiescafe.com。