Word2Vec
自然言語処理では単語を扱いやすくするため、単語をベクトルで表現することが多いです。
最も代表的な手法として、ニューラルネットワークを用いた手法であるWords2Vecが知られています。
Word2VecにはCBoWとskip-gramの2種類のモデルがあります。
どちらも入力層、隠れ層、出力層で構成される3層の全結合のニューラルネットワークです。
その2種類のモデルの学習のためには、文章を単語毎に区切り、重複のないように整理した「ボキャブラリ」と呼ばれる形式に変換したものを利用します。
以下にボキャブラリへの変換の例を示します。
- 変換前
I want to eat apple. I like apple.
- 変換後
{apple eat I like to want .}
順序が関係なくなっていることがわかります。
このボキャブラリを単語毎にワンホットで表すことで、モデルの入力とすることができます。
CBoW
CBoWは、入力を複数の単語のワンホットベクトルとします。
この入力単語の個数を窓サイズといいます。
出力は、ボキャブラリ内の単語が、入力された複数の単語の間に入る確率です。
学習のためには、元の文章からある単語を抜き取り、その単語周辺の単語を入力として、抜き取った単語の確率が1となるように学習すれば良いです。
そのように学習させたモデルの隠れ層は入力した単語の特徴ベクトルとみなせるため、この隠れ層のベクトルを用いれば、単語をベクトルで表すことができます。
skip-gram
skip-gramは、CBoWの出力と入力を逆にしたモデルです。
一つの単語から、周辺に出てくる単語の確率を出力として学習させます。
skip-gramはCBoWよりも少ない学習データでも精度が出るとされています。
実際にWords2Vecはマーケティングに利用されています。
単語をベクトル化し、ベクトルのコサイン類似度を計算することによって顧客が購入した商品と類似する商品をサジェストしたり、
これまで顧客の購入した商品のベクトルを足し合わせることによって顧客の趣向情報をベクトル化したりできます。
Doc2Vec
Doc2Vecは単語よりも大きな集合をベクトル化するモデルです。
Doc2Vecは文書要約に用いられてきました。
文書を要約する上で重要な仮定として、複数の文章ベクトルによって作られた領域はその中に入るベクトルを内包するという点があります。
以下にリクルート式 自然言語処理技術の適応事例紹介から引用したイメージ図を示します。
まとめ
単語や文をベクトル化することで、自然言語に対して数学的アプローチができるようになること、ニューラルネットワークの入力として用いることができることが分かりました。
この「言語のベクトル化」を、次に行うことに役立てたいと思います。
参考文献
- https://qiita.com/g-k/items/69afa87c73654af49d36
- https://qiita.com/Hironsan/items/11b388575a058dc8a46a
- https://deepage.net/machine_learning/2017/01/08/doc2vec.html
- https://www.slideshare.net/recruitcojp/ss-56150629