とある院生の技術報告

とある大学院生による「言語処理とか画像処理とかを使ってみよう」というコンセプトで書いてみようと考えたブログ

#1 単語をベクトルに変換する? 【word2vec】

今回は、word2vecについて、そもそも何やねんというところを説明したいと思います。

研究室に入るまで、私は、言語処理の「げ」の字も知らなかったのですが、一番最初に「すげー」って思った技術です。

word2vec とは

word2vecとは、単語に対してベクトルを与える手法の一つのことです。

元論文:https://arxiv.org/pdf/1301.3781.pdf

「は?」と思う方が多いと思いますが、下のようなイメージです。

単語:私 → ベクトル:(0.8, 0.2, 0.4)

機械は文字を記号、単語は記号列としてしか理解することができません。

たとえば、「私」と「わたし」は機械内部では「id 10」と「id 100」のように扱われています。さらに、このidの近さには意味がありません。

それなら、似ている単語には似ている数値表現を与えるようにするようにすれば、機械に意味を理解させることができるんじゃねって言う試みが研究され続けています。


その数値表現を与える手法の一つがword2vecです。

具体的なベクトル表現の獲得方法の説明は割愛しますが、「単語の意味は、その周りに出現する単語によって定めることができる」という仮定に基づいています。

word2vecでは、周りの単語からある単語を予測する ということを機械に解かせて、その結果得られたベクトルを単語の表現として使っています。(注)

私 は 今日 公園 へ 行った 。

という文があったとすれば、「私」、「は」、「公園」、「へ」から「今日」を予測するという感じです。

(注)ある単語から周りの単語を予測するという手法もあります。


さて今回は、ここらへんで。

今日のまとめ

word2vecは、「ある単語の意味はその周りに出現する単語によって決定される」という考え方に基づいている

次回

さて、このword2vecで何ができんねんっていう話ですが、上で述べたように機械で「意味を扱える」ということができるようになります。

類義語を見つけたり、「王」−「男」+「女」=「?」といった意味の計算を行う事もできたりします。

そのあたりの話をできたらなと思います。