Java
WebAPI
自然言語処理
word2vec
Apitore

日本語Word2Vecを作って公開した

More than 1 year has passed since last update.

はじめに

Word2VecをApitoreで公開しました。日本語WikipediaにNeologdの辞書を使いました。無料で使えるWeb APIなので、ハッカソン等で使えると思います。今回公開したWord2Vecは、日本語WikipediaをKuromoji+Neologdで形態素解析したものを学習データに使っています。Neologdを用いているので、最近の単語(e.g. 「とある魔術の禁書目録」)も扱えるのがおもしろいところです。

公開

APIのページはこちら

関連記事

特徴

Word2Vecの関数は2つあります。

  1. Distance
  2. Analogy

それぞれについて特徴を見ていきましょう。

Distance

ひとことで言えば、入力した単語の類義語や同義語を返します。もう少し正確に言うならば、入力した単語と同じようなシーンで用いられる単語を返します。例を見ましょう。「アディダス」を入力すると、以下の結果を返します。競合会社と製品が出てきましたね。

単語 コサイン距離(≒類似度)
ニューバランス 0.753
アシックス 0.751
アディダスジャパン 0.713
ナイキ 0.706
シューズ 0.705

このように、同義語っぽいものが出てきます。Distanceの使い道としては、検索クエリの拡張があります。質問応答サイトで導入すると役に経ちそうです。例えば、入力された質問文を自動的に同義語展開して検索を実行すれば、検索結果は取りこぼしが少なくなるでしょう。(網羅性の改善)

さて、Word2Vecですが、学習データを変えれば、より面白いことができそうです。例えば、特許文書を対象に学習すれば、「特許のときに使われやすい同義語表現」が出てくると思います。近年ではWord2Vecを拡張してDoc2Vecが出ています。Doc2Vecはドキュメント版のWord2Vecです。つまり、例えば「作成途中の自分の研究論文を入力すると、先行研究の論文を見つけてくれる」みたいな使い方ができそうです。商品レビューで学習すれば、商品名を入力すると類似したコンセプトや評価の商品を提案してくれるとかできそうです。

Analogy

ひとことで言えば、単語の足し引きができます。これは例を見たほうが早いので例を見ましょう。「日本」+「パリ」-「フランス」の結果は以下になります。なんとなく東京っぽい結果が出ていますね。

単語
日本
東京
都内
東京都内
日本国内

単語の概念を足し引きして、その結果に近い概念の単語を示す、という感じです。コンセプトづくりに役立ちそうです。例えば、「巣鴨」+「高級」→「テレジアヌム」や「世田谷区成城」が出てきました。テレジアヌムは、オーストリアのホテルの名前のようです。ぐぐってみましたが、それっぽい気もします。世田谷区成城は言わずと知れたセレブの町。それっぽいですね。

悪ふざけ

せっかくなので「とある魔術の禁書目録」の同義語を調べてみた。

単語 コサイン距離(≒類似度)
とある魔術の禁書目録ii 0.785
とある科学の超電磁砲 0.761
灼眼のシャナ 0.752
とある魔術と科学の郡奏活劇 0.720
とある科学の一方通行 0.705

「とある〇〇」が多い!シリーズモノは抑制したほうがいいかも?