単語分散表現とは、単語の意味をベクトルで表現することです。単語埋め込み(Word Embedding)とも呼ばれます。単語を100~300の次元数で表現することが多いです。

単語分散表現の手法には、Word2Vec(2013年)やfastText(2016年)があります。これらの手法は、ある前提を置いて学習されています。

分散表現の大前提:分布仮説

分散表現(自然言語処理の主な手法も)は、単語の意味は周囲の単語で形成されるという分布仮説を前提にしています。

なので、Wikipediaなど大量のテキストデータ(コーパス)を学習させれば、単語の意味が表現できるということです。
例えばWord2Vecは、周辺の単語から中心語を推論する(逆に中心語から周辺の単語を推論する方法もあり)ことで、単語をベクトル表現しています。

コーパスを読み込ませるだけで学習できるので、実務的にも利便性の高い手法です。単語分散表現の学習済みモデルを公開している団体も多数あります。

単語分散表現の利用例:単語間の類似度計算

単語分散表現は、単語の意味をベクトル(数値)で表現できます。代表的な利用ケースでは、単語間の類似度計算が挙げられます。

単語間の類似度が計算できるため、例えば類似単語の分布図を作成することができます。例えば、300次元の単語分散表現を、2次元に次元圧縮した後にグラフ作成することで、上位の類似単語を可視化することが可能です。

※下記画像は、fastTextで、"副業"の類似単語の上位40件をグラフ化Figure_2
参考記事:Python(gensim)と日本語Word2Vecで単語ベクトル可視化

文書分散表現の利用例:文書分類、類似文書検索、質問応答システム

文書分散表現では、文書の意味をベクトルで表現します。表現手法としては、Doc2Vec(2014年)や、WRD(Word Rotator's Distance)(2020年)があります。

また、文書中に含まれる単語の単語分散表現を平均化することでも、文書をベクトル化できます。

文書分散表現の利用例としては、文書分類、類似文書検索、質問応答システムなどが挙げられます。機械学習の特徴量として利用できるため、利用範囲は広いです。

従来の文書ベクトルは、BoW(Bag-of-Words)という、文書内に含まれる単語の出現回数で表現したものが主流でした。しかし、単語の並び順が保持されないため、情報が一部失われてしまう欠点があります。

分散表現が登場して以降、実務でBoWの利用事例は減少したと思われますが、シンプルなBoWならではの良さもあるため、今後も細く長く利用されていくと思われます。

単語分散表現の課題

汎用的に利用可能で、追加学習も容易な分散表現は大変便利です。しかしいくつか注意点と課題があります。

<課題の大枠の整理>
・コーパスから統計的に学習されたことの課題 →課題①、②、③
・日本語の曖昧性に基づく課題 →課題④、⑤

※なお、文中にあるfastTextの類似度は、下記の学習済みモデルを利用して算出しました。

利用した日本語fastTextのモデル:fastTextの学習済みモデルを公開しました


①対義語を区分けしていない

「長い」と「短い」は、ほぼ同じような文脈で出現するため、当然ながらほぼ同じベクトルになる。そのため、分散表現は対義語を区別していない。

※「長い」と「短い」のfastTextでの類似度:0.83
→意味は逆だが類似度は高い

②語の関連性を把握できない

単語分散表現は、単語の周辺文脈で判断するので、「チョーク」と文脈が類似する「鉛筆」や「ボールペン」は類似度が高いと表現する。

一方、「チョーク」と同時出現しやすい「教室」は、品詞などの文法的性質や意味的な性質が類似しているわけではない。
つまり、前後の文脈で判断する類義語と、同時出現で判断する関連語は包含関係にない。

fastTextでの類似度
 「チョーク」と「鉛筆」:0.38
 「チョーク」と「ボールペン」:0.33
 「チョーク」と「教室」:0.18
→「チョーク」と「教室」は関連語だが類似度は低め

③低頻度語に対処できない

コーパス中に1,2回しかない単語は、学習事例が少なく適切なベクトル化が難しい。

コーパス中には出現頻度が1回の単語が大量に存在しており、コーパスを20%程度増やしても、あまり効果がなく、10倍程度の規模拡大が必要。また仮に、10倍100倍のコーパスを用意しても、さらに出現頻度1の単語が大量に増えてしまう。

④表記ゆれに対処できない

「マネージャー」と「マネージャ」、「りんご」と「リンゴ」など、日本語には、同じ単語なのに複数の表記が存在する単語がある。
表記ゆれの単語は異なる単語として学習されるため、学習事例が少数となり、高い性能が得られにくい。

※fastTextでの類似度
 「りんご」と「リンゴ」の類似度:0.63
 「マネージャー」と「マネージャ」類似度:0.62
→本来同じ言葉なので、もっと高い類似度になって欲しい

⑤多義語を分離できない

「ドライブ」という単語は、車と運転するという意味と、CDやDVDを読み込むコンピュータ装置の意味など複数の語義を持つ。
それぞれの語義で周辺文脈は異なるが、全て同じ単語として学習されてしまう。そのため、一定程度の性能劣化が存在する。

多義語の課題は、「語義曖昧性解消(Word Sense Disambiguation)」という、自然言語処理の重要な要素技術で古くから研究されている分野。

※下記画像は、fastTextで、"ドライブ"の類似単語の上位40件をグラフ化。
 左側にコンピュータ装置としての類義語、右側に車の運転としての類義語が表示されている。
ドライブの類似語
参考書籍:山本 和英「第4章 似た単語を探す」『テキスト処理の要素技術 実践・自然言語処理シリーズ』近代科学社、2021年3月31日、60-63頁。

「テキスト処理の要素技術」はこれから実務に関わる方におすすめ

本記事は、「テキスト処理の要素技術」という書籍を参考しました。これから実務で自然言語処理に関わる方におすすめです。

残念ながら、実務の現場で世の中に公開されている学習済みモデルを利用すれば、高精度が出て問題が解決されるというケースはまれです。前章の課題に加え、文字コード統一や外字削除など前処理が必要になるからです。

本書は実践的であることに主眼を置いており、実務で落とし穴になりそうな前処理のやり方、品詞の選び方、語義曖昧性解消の方法などが解説されています。

また、これから実務で自然言語処理を携わる人にとって、単に最先端の手法を学ぶだけでは、効果的な学習に繋がらないように思います。断片的な知識が増えても、体系的に理解できず、使いこなせないからです。

実務で重要なことは、様々な手法の背景を理解し、問題に合わせて適切な手法を選択し、精度改善していくことです。
本書は、様々ある手法からどれを選択すれば良いかの考え方が示されているため、自然言語処理の”はじめの一歩”を踏み出せる書籍だと感じます。