Word2Vecとは | 分散表現・Skip-gram法とCBOWの仕組み・ツールや活用事例まで徹底解説

このエントリーをはてなブックマークに追加

翻訳サービスから動画サイトのレコメンドまで、生活のさまざまな場面に実装されつつある「自然言語処理」。数年前と比べてGoogle翻訳の精度が飛躍的に上がっているのを実感した方も多いかと思います。その技術の向上に大きな貢献を果たしたのが、今回解説する「Word2Vec」です。

この記事では、Word2Vecの仕組み、活用事例、そして実装方法に至るまでを、どこよりもわかりやすく解説します。

Word2Vecとは?

Word2Vecとは、当時Googleに在籍していた研究者であるトマス・ミコロフ氏らにより提案され、自然言語処理に大きな技術的進展をもたらしたツールです。それまでの自然言語処理手法が抱えていたさまざまな課題を乗り越え、大規模データによる自然言語処理学習を可能にし、Googleのみならずさまざまな企業でも活用が始まっています。

この記事ではWord2Vecを解説する前段階として、まず人間が作り出した「言語」を処理することのむずかしさを解説します。

「言語」を処理するむずかしさ

自然言語処理(Natural Language Processing, NLP)とは、人間の言語(自然言語)を統計的に解析できる形に変換し、機械で処理することです。

2012年に登場した深層学習(ディープラーニング)は、画像認識音声認識、そして自然言語処理にも飛躍的な技術進展をもたらしました。「seq2seq(sequence to sequence)」と呼ばれる手法に代表される、さまざまな自然言語処理技術の登場は、オンライン翻訳サービスの性能向上などに貢献しています。

しかし画像認識や音声認識と違い、自然言語処理の領域への深層学習の応用には、超えるべき大きな障壁がありました。それは、言語が「物理的な実数値」ではなく、人間が恣意的に定義した「記号」であり、そのままの形では深層学習で処理できない、という障壁です。

「物理的な実数値」とは、物理的に明確に異なる情報を、数値で表現したものです。画像認識において処理対象となる画像は、赤と緑と青の3色(RGBと呼ばれる)の画素情報を基準に、対応する整数値で表すことができます。音声認識において対象となる音声も、音声信号の振れ幅を数値化することで、整数値として扱えます。


Photo by Pixabay※図版はLedge編集部で作成

一方で、「記号」とは、人間が恣意的に定義したものであり、音声や画像とは違い、物理的な現象に基づくものではありません。たとえば、「あ」「い」「う」という3つの文字は、あいうえお順では連続しているものの、数値である「1」「2」「3」のように、連続する順番に大きさが定まるものではありません。同じことが、文字を繋げたものである単語や文章にも言えます。


Photo by Pixabay※図版はLedge編集部で作成

言語を機械的に処理するためには、言語を単語や文字などの「記号」の世界から、ベクトルや行列で計算処理できる「数値」の世界に変換する必要がありました。

One-hotベクトル表現とその限界

文字や単語を、記号の世界から数値の世界に変換する手法として用いられるのが、「One-hotベクトル表現」です。One-hotベクトルとは、ベクトルのすべての要素のうちひとつだけが1であり、残りはすべて0であるベクトルを意味します。One-hotベクトル表現の言語処理への応用では、世の中に存在するすべての単語を、(0,0……,0,1,0,……0,0)のベクトルで表現します。これにより、単語とベクトルが一対一の関係になり、プログラムで処理できるようになります。このように、各概念を一対一対応で表現する手法は「局所表現」と呼ばれます。

カレー(1,0,0,0,0)
ペペロンチーノ(0,1,0,0,0)
ナポリタン(0,0,1,0,0)
牛丼(0,0,0,1,0)
ステーキ(0,0,0,0,1)

局所表現の例。単語ごとにOne-hotベクトルを割り振っており、単語同士の概念の繋がり(この例では「麺料理」「洋風」「ご飯」などでの関連性)に関しては捨象されている。

しかしこの手法では、単語同士が関連していないため、同一単語であるかどうかの判定以外の処理を行うことは難しく、また世界に存在する数多くの言語のすべての単語を網羅するとなると、ベクトル数が膨大になり、計算時間が激増するという問題点がありました。

分散表現の登場

局所表現による言語処理の計算時間の膨大さという問題点を解決したのが、2000年に提案された、「分散表現」の言語処理への応用である単語分散表現の登場です。

単語分散表現とは、「文字・単語をベクトル空間に埋め込み、その空間上のひとつの点として捉える」ことを指します。単語分散表現は、単語埋め込み(Word Embedding)とも呼ばれます。

局所表現では、ある概念をほかの概念から完全に独立したものとして表現しています。一方、分散表現では、ある概念を表現する際に、ほかの概念との共通点や類似性と紐づけながら、ベクトル空間上に表現します。以下の例のベクトルの各要素は我々が理解できる食べ物に関連した概念ですが、ベクトルの各要素はアルゴリズムが勝手に作り出すものであり、人間に解釈できるものとは限りません。

分散表現の例。「Paris」や「London」といった国名、「man」や「woman」といった性別など、単語の概念が近いもの同士は近い位置に埋め込まれている。また、「London-England」と「Paris-France」とような、「首都と国名」という関係が同じ単語同士は、距離や角度などの位置関係が同じことがわかる。
出典:NLP with gensim (Word2Vec)

更に、それぞれの概念同士が関連し合っている故に、分散表現では異なる概念を表現するベクトル同士での計算が可能です。以下の図の「”king”-”man”+”woman”=”queen”」などは有名な例です。


出典:Why does King – Man + Woman = Queen? Understanding Word Analogies

以上の図はベクトル空間が「性別」と「王族」の二つの特徴量のみからなる2次元の場合での例ですが、実際はベクトル空間の次元は200~1000次元ほど設定されることが多いです。

この分散表現は、人間が新しいことを記憶する際に、既に知っていることと関連させて記憶することや、あらゆる事象はさまざまな特徴で表現されうるといった、認知心理学や神経科学が人間の脳に関して持つ知見を応用し生まれたものでした。

補足:Word2Vecの自然言語処理以外への応用
Word2Vecは、「連続値」でかつ「相互に関連がある」ものであれば、あらゆる領域へ応用が可能です。
・遺伝子ゲノム解析(ATGCの4種類の塩基の連続)
・ネットユーザーのwebページ訪問履歴(リンク経由で連続して回遊)
などがそのほかの応用領域として注目されています。

Word2Vecの仕組み

分散表現の登場などの進展はあったものの、その処理の難しさや膨大な計算量を理由に、なお実践が難しいままだった自然言語処理。そこに更なる技術的進展をもたらし、自然言語処理を現実のものとしたツールが、当時Googleに在籍していたトマス・ミコロフ氏により提案された「Word2Vec」でした。

Word2Vecの特徴は、2層のニューラルネットワークのみで構成されるシンプルな構造をとっている点にあります。この構造のシンプルさにより、大規模データによる分散表現学習が現実的な計算量で可能となり、分散表現での自然言語処理が飛躍的に進む契機となりました。


左図がCBOW、右図がSkip-gramのニューラルネットワーク(NN)の構造。入力層(Input layer)、隠れ層(Hidden layer)、出力層(Output layer)の2層NN構造であることがわかる。
出典:Demographic Prediction Based on User Reviews about Medications

Word2Vecには、skip-gram法(Continuous Skip-Gram Model)CBOW(Continuous Bag-of-Words Model)のふたつのモデルが内包されています。以下ではそれぞれの手法を解説していきます。

Skip-Gram法(Continuous Skip-Gram Model)

skip-gram法は、中心のある単語から周辺の単語を予測する手法です。


出典:Extending Thesauri Using Word Embeddings and the Intersection Method, Technical University of Munich

skip-gram法で行われる学習は教師あり学習です。入力として中心語を与え、その周辺語の予測を出力します。この学習を通じて、ネットワークにある単語の周囲に、どのような単語が現れる可能性が高いのかを学習させます。

CBOW(Continuous Bag-of-Words Model)

skip-gram法が中心語から周辺語を予測するのに対し、CBOWは周辺の単語から中心語を予測するという逆の手法をとります。

CBOWもskip-gramと同様に、学習手法は教師あり学習です。この場合の入力は周辺語、出力は中心語となります。


Word2Vecの発展形ツール

この章では、Word2Vecをベースに開発されたいくつかのツールと、その活用可能領域を紹介します。

fastText


出典:Library for efficient text classification and representation learning
Word2Vecを考案したトマス・ミコロフが、GoogleからFacebookの人工知能研究所「Facebook AI Research」に移籍し、Word2Vecを発展させる形で生み出したのがfastTextです。その特徴は、圧倒的な単語学習スピードの速さにあります。Facebookは、標準的なCPUを用いた場合でも、10分以内で10億語を学習でき、5分以内で50万もの文を30万のカテゴリーに分類できると公式発表で述べています。
参考:Faster, better text classification!(Facebook research)Library for efficient text classification and representation learning

Doc2Vec

Doc2Vecは、文章間の類似度やベクトル計算を可能にする手法であり、Paragraph2Vecとも呼ばれます。Googleの研究者であるクオーク・リーが2014年に考案しました。Word2Vecは各単語をベクトルとして処理するのに対し、Doc2Vecでは単語の集合である文章・文書単位でベクトルを割り当てるのが特徴です。

たとえば、ニュース記事同士の類似度、レジュメ同士の類似度、本同士の類似度、もちろん人のプロフィールと本の類似度なども算出することができます。テキストで表されているもの同士であれば解析可能です。

Word2Vecの活用事例

ネットメディアやSNS上で急激に増加する、テキストデータの大規模解析を可能にしたWord2Vec、そしてその派生形であるDoc2VecやfastTextは、既にビジネスや社会のさまざまな側面で活用が進んでいます。

Q&A・チャットボット


2015年8月にLINEに登場した、日本マイクロソフトが開発したチャットボット「りんな」。テキストチャットのみならず、2018年9月には音声通話まで可能となりました。人間の会話の文脈を理解し、自然な会話を続けることができる最新の会話エンジン「共感チャットモデル(Empathy chat model)」を採用しています。そのりんなの会話エンジンにおいても、Word2Vecは活用されています。

感情分析


LINEなどで使われるような、くだけた表現や口語混じりの言語は「不自然言語」とも呼ばれます。明治大学の「Word2Vecを用いた顔文字の感情分類」という研究では、不自然言語のひとつでもある「顔文字」に話者が込める感情を分析しています。ツイッターのツイートから、顔文字と感情表現の単語を抽出しベクトル化し、顔文字のベクトルと近い感情表現単語のベクトルを照合することで、顔文字に込められる感情を分析しています。
出典:Word2Vecを用いた顔文字の感情分類, 明治大学

文章要約


株式会社リクルートテクノロジーズが開発したAIのAPI群である「A3RT」シリーズ。そのAPI群のひとつに、文章要約を行ってくれる「Text Summarization API」があります。機能としては、文章の意味を読み取り、分類、特徴的な文章の抽出を備えており、Doc2Vecがベースの技術として活用されています。A3RTのAPIは無料で試せます。

IBM Watsonを用いた試合結果予測でのDoc2Vec活用


あらゆるデータ活用において大きな課題となるのは、そのままの形ではAIが読み取ることができない「非構造化データ」の処理です。米スポーツメディアESPNは、非構造化データである新聞やブログの過去の記事を、Doc2Vecによる文章解析とIBM Watsonによる学習を組み合わせ、ルールや環境条件が複雑なアメフトの試合結果予測を90%以上の確率で的中させています。

企業のESGスコア算出へのfastText応用


株式会社日本総合研究所と株式会社Laboro.AIは共同で、企業のESG活動に関する情報を自動収集・評価するシステムを開発しました。さまざまな企業のwebページからすべての文章を抽出し、教師データであるESG評価項目との関連が高い、あるいは低い文章との関連性をfastText技術を用いて照合することで、企業のESG貢献度評価の自動化を可能にしています。

Word2Vecの課題と未来

Web2.0時代において、ネット空間上に激増したテキストデータの解析を可能にしたWord2Vec。さまざまな派生形も誕生し応用範囲は広がり、今後も更に自然言語処理分野の発展に貢献していくと思われます。

また、同じ分散表現をベースとした更に新しい自然言語処理モデルである、BERTやDNNなども登場しつつあります。人工知能の応用がもっとも難しかったとも言われる自然言語処理領域も、今後更なる進展が期待されると言って良いでしょう。SFアニメの世界の自動翻訳機が、現実のものとなる日も近いのかもしれません。