web戦略等の情報や、WEB構築に役立つ情報を発信

単語にベクトルをつけて利用する?「Word2Vec」について調べてみた

機械による応答システムが普及してきた

つい先日、Amazon Echo が招待制販売から一般販売に切り替わりましたね。
昨今はAI技術が進んできて、身近なところでも機械による応答システムに触れることができるようになってきました。
Appleのsiri Windowsのコルタナ Google Home などもその一部ですね。

AIによる自然な会話は難しい

自分も少しばかりチャットボットプログラムを作ろうと試みたことがあったのですが、自然な会話をさせることは非常に難しいことだな、と感じています。
人間の問いかけに対して、ランダムに意図しない面白い回答をさせることはできるのですが、それは単なる偶然の結果であり、機械が考えて編み出した文ではないのです。そしてできた文はあまりビジネスでは役に立たないものです。

ビジネスで利用する際には、問いかけをある程度理解して決まった答えを返してくれる方が役にたつ結果を得ることができます。
ランダムではなく、単語の意味を組みとらせるのはすごく難しいことだと思います。

機械に単語の意味を理解させるには、単語に何らかのパラメータを設定しておかなければならないとは考えていたのですが、そういった仕組みは、研究者レベルで言語の研究をしていなければむずかしいのではないか?と感じていました。

そんなことを思っていたところに、単語にパラメータをつける一つの方法が2013年にgoogleから発表されていたということを知りました!

「Word2Vec」で単語にベクトルを付与することができる

Word2Vecは、2013年にGoogleが開発&公開した技術です。
単語と単語の関係を数値で設定(自分で設定するわけではないが)することで、単語の関係性がベクトルで表現できるのだそうです。


つまり「機械」が「言葉の関係性」を理解できるということですね。
二次元で表現すると図のようになるみたいです。

  • 「兄」- 「男」+ 「女」= 「姉」
  • 「札幌市」- 「北海道」+ 「埼玉県」= 「さいたま市」

上記のような演算ができるようになるそうです。

 

「Word2Vec」を利用することの利点

単語を数値で定義できるということは、
ニューラルネットワーク、つまりディープラーニング技術に利用できるようになるというのです!
大量の会話情報を入力してあげれば、会話等に利用できるであろう「単語の関係性」のデータが出力できるようです。

類語は得意だが、対義語は苦手

そもそもの性質上、似た言葉は表現できるが、対義語はうまく理解できないようです。
対義語が重要になってくる使い方には応用できないようですね。

試してみたい!

実用性のある技術にすぐ使えるかというと、そうでもないような気がしますが
純粋に「機械と会話する」ということについてはものすごく影響を与える技術ではないでしょうか?

ゲームなどでもこの技術を利用し会話するキャラクターなどが近々出てくる可能性がありますね。
私も今回少しだけ調べて非常に興味を持ちましたので、必要な技術を身につけて試してみたいと思います!

参考

【Python】Word2Vecの使い方
https://qiita.com/kenta1984/items/93b64768494f971edf86

 

Word2Vec:発明した本人も驚く単語ベクトルの驚異的な力
https://deepage.net/bigdata/machine_learning/2016/09/02/word2vec_power_of_word_vector.html