デジタルゲームのための自然言語処理 第3回 「ことば」を数値化する(前編)

2023年6月14日 00:00

・「ことば」の数値化

 コンピュータは「0と1」で物事を扱っている、という話があります。コンピュータは「0か1か」を最小の単位(1 bit)として、様々な情報を表現し、処理します。このようなことにいまさら触れるのは、まさにこの点が、「ことば」をコンピュータで扱う上での、大きな障壁となっているからです。
 今回は、コンピュータで「ことば」を扱う、すなわち自然言語処理を行うために必要な、「ことば」の数値化についてお話ししたいと思います。


・AIで「ことば」を扱うために

 前回は、ディープラーニング(DL)を用いた自然言語処理(NLP)の、この10年の歴史を概観し、2013年に登場したWord2vec を重要な研究の一つに挙げました。
 Word2vec は、その名(Word To Vector)の通り、単語をベクトルに変換する手法です。たとえば、以下の図のイメージのように、Paris という単語(のベクトル)から、France という単語を引き算し、そこに Italy という単語を足すと、Rome という単語のベクトルに近くなります(この例は、文献 [1] に掲載されているものです)。
 

 このベクトルの足し算・引き算は、以下のように解釈することができます。Parisという単語に、「フランスの首都」という意味が関連付けられており、そこから「フランス」という意味を引き算すると、「首都」という意味が残ります。そこに「イタリア」を足すことで、「イタリアの首都」の意味となり、Romeという単語が持つ情報に近づくことになります。
「その程度のことの、何が凄いんだ」と思われるかもしれません。しかし、当時は、「単語を、足し算や引き算ができるようなベクトルに変換できる」というのは、画期的なこととして受け止められました。

 冒頭で挙げたように、コンピュータは「0と1」で物事を扱います。つまり、数値化しやすい事象ほどコンピュータで扱いやすく、数値化しにくい事象はコンピュータで扱いにくい、ということになります。
 「自然言語」という言葉とは一見矛盾するように見えるかもしれませんが、言語というのは結局、自然界に元来はないものを人間が作り出したものであり、ある種の人工的な取り決めです。たとえば、「リンゴ」という記号があったときに、赤くて丸いあの果物のことを指すことにしよう、というルールなのです。こうしたルールの存在については、「近代言語学の父」フェルディナン・ド・ソシュールが提唱したシニフィアンやシニフィエといった用語がしばしば引き合いに出されます。
 では、このような「ことば」を、数値に変換するには、どうすればよいでしょうか? たとえば、「リンゴ」という記号があったとき、それはどんな数値で表現できるでしょうか? 我々がリンゴと呼んでいる物体の色は、RGB (光の三原色)の値で表現することができます。しかし、「リンゴ」の概念を数値で表現するのは難しいのです。
 この点においてブレイクスルーとなったのが、Word2vec であったと言えます。



・Word2vec によって切り開かれた道

 ここまで、「Word2vec」とまとめて書いてきましたが、実はこの実装には二種類の異なるアーキテクチャが含まれています。Continuous Bag-of-Words (CBOW)とSkip-gramです。これらの構造はよく似ており、文中に含まれる「現在の単語(t番目の単語)」と、その周辺の単語(下図では、前後2単語ずつ)とを使って学習を行います。CBOW では、周辺の単語から現在の単語を予測するように学習を行います。Skip-gramでは、ある単語から、周辺の単語を予測するように学習を行います。いずれもシンプルなネットワークで、単語間の関係性などを考慮した単語ベクトルを学習することができます。


 このような工夫を凝らすことで、単語ベクトルの学習を効果的に行えることを示した Word2vec を先駆として、言葉の意味を扱う研究が加速していくこととなります。
 その後、GloVe [2]という単語ベクトルが発表され、多くの研究で利用されるようになりました。「サブワード」という概念を用いた fastText [3] も、その後の研究に大きな影響を与えています。
 さらに、「ある文の中に出てくる単語が、特にその文ではどんな意味を持っているのか」という、文脈を考慮した単語ベクトルの研究が、ELMo [4] の登場を機に注目されるようになりました。こうした流れが、「事前学習済みモデル」の代表例である BERT の登場にも大きく影響し、現在の大規模言語モデルに繋がっていくことになります。
 また、「単語の意味を表すベクトル」があれば、「文の意味」や「文章全体の意味」を表すベクトルが作れるのではないか、というのも自然な思考の流れです。我々が「SQUARE ENIX AI Tech Preview: THE PORTOPIA SERIAL MURDER CASE」の自然言語理解に使用したのは、こうした流れの中で登場した「文レベルの意味ベクトル」です。

 第3回では、ことばをベクトルとして扱うことについて、Word2vec を中心にご紹介しました。ことばの数値化についてはまだまだご説明したりないところがあるのですが、分量も多くなってきましたので、今回はここで筆をおき、次回は引き続き意味ベクトルについてお話ししたいと思います。



・References
[1] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. "Efficient Estimation of Word Representations in Vector Space." In Proceedings of Workshop at ICLR, 2013.
[2] Jeffrey Pennington, Richard Socher, and Christopher D. Manning. "GloVe: Global Vectors for Word Representation." In Proceedings of EMNLP, 2014.
[3] Piotr Bojanowski, Edouard Grave, Armand Joulin, and Tomas Mikolov. "Enriching Word Vectors with Subword Information." TACL, 2017.
[4] Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, and Luke Zettlemoyer. "Deep Contextualized Word Representations", In Proceedings of NAACL-HLT, 2018.

関連する記事

2023年7月12日 15:00
デジタルゲームのための自然言語処理 第4回 「ことば」を数値化する(後編)
2023年5月29日 23:00
デジタルゲームのための自然言語処理 第2回 ディープラーニングと NLP
2023年5月22日 21:00
デジタルゲームのための自然言語処理 第1回 自然言語処理(NLP)とは