9_5:king – man + woman = queen ml5.js JavaScript

Word2vecの有能性を物語る有名な例として、king – man + woman = queenがあります。これは、(単語の意味の上で)kingからmanを引いて、それにwomanを足したものはqueenだ、ということです。別の言い方をすると、kingのmanに対する関係はqueenのwomanに対する関係に似ている、ということです。英語では、「A is to B as (what) C is to D」という構文で表されます。

A is to B what C is to D | 例文で覚える英文法」には次の例があげられています。

Air is to us what water is to fish.
空気と人間の関係は、水と魚の関係と同じである。

Reading is to the mind what food is to the body.
読書の精神に対する関係は、食物の肉体に対する関係と同じである。

Words are to language what notes are to music.
単語と言語の関係は、音符と音楽の関係と同じだ。

Personality is to a man what perfume is to a flower.
人間にとって個性とは、花に対する香りのようなものである。

Wit is to conversation what salt is to food.
会話にとって機知は、食物に対する塩のようなものである。

Perfume is to a woman what bait is to a trapper.
女性にとって香水とは、狩人にとってのわなのようなものだ。

ml5.word2vec()では、次のように行います。

const subtractAndAdd = () => {
  const t1 = 'humans';
  const t2 = 'pizza';
  const t3 = 'fish'
  text(t1 + 'にとっての' + t2 + 'は、' + '\n' + '以下にとっての' + t3 + 'のようなもの', 10, 20);

  word2Vec.subtract([t1, t2], 10)
    .then((resArray) => {
      return word2Vec.add([t3, resArray[0].word]);
    })
    .then((results) => {
      console.log(results);
      results.forEach((elm, index) => {
        console.log(elm.word);
        console.log(elm.distance);
        text(index + ': ' + elm.word, elm.distance * index * 10 + 50, index * 20 + 80);
      });
    }).catch(error => console.log(error.message));
}

ベクトルを引いて足すとはどういうことか?

Explore word analogies(単語の類似性を探る)」で紹介されている単語の座標を参考に、「king – man + woman = queen」をグラフ上で見ていきます。ただしこれは、単語をわずか2つの数値で表したもの(2次元)にすぎず、実際のものとは異なります。

まずking、man、womanのベクトルは下図のように表せます。

kingからmanを引きます。(king – man)はmanの終点からkingの終点へのベクトルになります(下図の赤い矢印線)。

(king – man)の始点が原点と重なるように平行移動します。そしてwomanのベクトルを足すので、womanの始点が(king – man)の終点に重なるように平行移動します。

最後に、(king – man)の始点からwomanの終点までを結ぶと、(king – man + woman)のベクトルになります(茶色の矢印線)。これは、「Explore word analogies(単語の類似性を探る)」のqueenによく似たベクトルです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA