テキストの数値化と古典的手法:言葉を数に置きかえる
コンピュータが文章を扱うために、言葉を数に置きかえる古典的な手法を学びます。基礎層では、文章をまず単語に区切り、それを数のならびにする、という流れを身近な例でつかみます。深掘り層では、形態素解析と構文解析、ワンホットベクトル・BoW・n-gram・TF-IDF のしくみと、それぞれの限界までを説明できるようになります。
ねらい
このレッスンでは、コンピュータが文章を扱えるように、言葉を数に置きかえる古典的な手法を学びます。
基礎
文章をまず単語に区切り、それを数のならびにする、という流れを身近な例でつかみます。前提となる知識がなくても、ここは読み切れます。
1. 文章は、まず単語に区切ります
日本語の文章を数にする前に、越えなければならない関門があります。単語の区切りです。
英語の文章は、単語と単語の間に空白があります。「I have a pen」のように、区切りが目で見て分かります。ところが日本語は、「私はペンを持っています」のように、単語がつながっていて、空白がありません。まずどこで区切るのかを決めなければ、単語を数える作業にも進めません。
この、文章を意味の最小のまとまりに区切り、それぞれが名詞なのか動詞なのかを見分ける処理を形態素解析といいます。意味の最小のまとまりを形態素(けいたいそ)といいます。日本語を扱うとき、形態素解析は最初の大切な一歩になります。
身近な例でいうと、文章を単語のカードに切り分ける作業です。「私」「は」「ペン」「を」「持っ」「て」「い」「ます」のように、続いた文字列を意味のまとまりごとに切り分けます。このカードがそろって初めて、単語を数えたり、並べ替えたりできます。
ポイント
日本語は単語の間に空白がないため、まず文章を単語に区切る形態素解析が必要です。これがそろって初めて、言葉を数にする作業に進めます。
2. 区切った単語を数のならびにします
単語に区切れたら、次はそれを数のならび、つまりベクトルに置きかえます。
素直なやり方は、単語の出てくる回数を数えて並べることです。ある文章に「猫」が3回、「犬」が1回出てくるなら、そのことを数のならびで表します。文章の中にどんな単語がどれだけ含まれるかを数え上げれば、文章どうしの似ている度合いを数の比べ合わせで測れます。似た単語が多く含まれる文章どうしは、内容も近いだろう、という考え方です。
これが、文章を数にする古典的な手法の土台です。単語の意味そのものは扱わず、どんな単語がどれだけ出てくるかという、表面の情報だけを使います。
ここまでの要点
- コンピュータは数しか計算できないので、文章を数のならびに置きかえます。
- 日本語はまず形態素解析で単語に区切る必要があります。
- 区切った単語の出てくる回数などを数えて、文章を数のならびにします。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「文章はまず単語に区切り、その出方を数にして扱う」と押さえられていれば、この先の深掘りに進む土台はできています。
発展
ここからは、単語を数にする代表的な手法をしくみのレベルで見ます。ワンホットベクトル、BoW、n-gram、TF-IDF と続き、最後に構文解析と、これら古典的な手法の限界にふれます。
3. 単語を1つの位置で表す:ワンホットベクトル
まず、単語1つを数のならびにする、いちばん素直な方法から見ます。
ワンホットベクトルは、あらかじめ扱うすべての単語に背番号をふり、その単語の背番号の位置だけを1、残りをすべて0にした、数のならびです。扱う単語が1万語あれば、長さ1万の数のならびになり、そのうち1か所だけが1になります。
この方法は、単語をきちんと区別できます。しかし、単語どうしの意味の近さは、まったく表せません。どの単語も、たった1か所だけが違う形で並ぶため、猫と犬の近さと、猫と自動車の近さが、同じだけ離れて見えてしまいます。意味の関係を数のならびに写し取れない、という弱点があります。単語の意味の近さをベクトルで表す方法は、単語の分散表現を学ぶレッスンで扱います。
理解の確認
ワンホットベクトルは、単語ごとに1か所だけを1にした数のならびで、単語を区別できます。ただし、どの単語どうしも同じだけ離れて見えるため、意味の近さは表せません。
4. 文章を単語の集まりで表す:BoW と n-gram
ワンホットベクトルは単語1つの表し方でした。今度は、文章1つを数のならびにする方法を見ます。
BoW(Bag-of-Words)は、文章を「単語の入った袋」とみなす方法です。読みはバッグオブワーズです。文章に含まれる単語を順番を気にせず、ただ何がいくつ入っているかだけで表します。「猫が犬を追う」と「犬が猫を追う」は、含まれる単語が同じなので、BoW では同じ数のならびになります。単語の出方を手早くつかめる一方で、語順が消えてしまうという割り切りがあります。
語順が消える弱点をいくらか補うのが n-gram(エヌグラム)です。n-gram は、連続する n 個のまとまりを1つの単位として扱う方法です。単語を単位にする場合、n が2なら「猫が」「が犬」「犬を」のように、隣り合う2語の組を数えます。連続した組を単位にすると、単語をばらばらに数えるより、前後のつながりをいくらか捉えられます。n を大きくするほど長いつながりを見られますが、組の種類が急に増えて、数え上げが重くなります。
理解の確認
BoW は、文章を単語の入った袋とみなし、順番を気にせず単語の出方だけで表します。n-gram は、連続する n 個のまとまりを単位にして、失われがちな語順のつながりをいくらか捉えます。
5. 大事な単語を重く見る:TF-IDF
BoW では、単に出てくる回数を数えました。しかし、回数が多い単語が、そのまま大事な単語とは限りません。「です」「ます」「する」のような単語は、どんな文章にもたくさん出てきますが、内容を言い当てる手がかりにはなりにくいからです。
そこで、単語ごとの大切さに重みを付ける方法が TF-IDF(ティーエフ・アイディーエフ)です。TF-IDF は、2つの見方を掛け合わせて重みを決めます。
1つ目の見方は、その単語が、その文章の中にどれだけ多く出てくるかです。ある文章によく出る単語は、その文章を特徴づけている、と考えます。これを単語の頻度(ひんど)と呼びます。
2つ目の見方は、その単語が、世の中の多くの文章に広く出回っているかどうかです。どの文章にも出てくるありふれた単語は、内容を見分ける役に立たないので、重みを小さくします。逆に、限られた文章にしか出てこない珍しい単語は、内容を強く特徴づけるので、重みを大きくします。
式で書くと、次のようになります。
TF-IDF = その文章での出やすさ × 世の中での珍しさ その文章での出やすさ = その単語が出た回数 ÷ その文章の単語の総数 世の中での珍しさ = 全文書の数 ÷ その単語が出てくる文書の数
読み下すと、下の2行がそれぞれ上の2つの見方にあたります。ありふれた単語は多くの文書に出てくるので、割り算の分母が大きくなり、珍しさの値は小さくなります。珍しい単語は分母が小さいので、値は大きくなります。なお実際には、この珍しさに対数を取って、値が極端に大きくならないようにします。対数は、数理のレッスンで扱います。
この2つを掛け合わせると、その文章によく出て、かつ世の中では珍しい単語ほど、大きな重みを受けます。ありふれた単語の影響を抑え、内容を特徴づける単語を目立たせることができ、検索や文書の分類で長く使われてきました。
理解の確認
TF-IDF は、その文章での出やすさと、世の中での珍しさを掛け合わせて、単語に重みを付けます。ありふれた単語を軽く、珍しく内容を特徴づける単語を重くすることで、大事な単語を目立たせます。
6. 文の組み立てを調べる構文解析と、古典的手法の限界
ここまでは、単語をどう数えるかの話でした。文章には、単語の並び方が作る文法の構造もあります。
構文解析は、文の中で、どの語がどの語に係るのかといった、文法の組み立てを調べる処理です。たとえば「赤い花を持つ少女」で、「赤い」が「花」に係り、「花を持つ」が「少女」に係る、といった関係を明らかにします。形態素解析が単語への区切りを担うのに対し、構文解析は、区切った単語どうしの文法上のつながりを担います。
もっとも、このレッスンで見てきた古典的な手法には、共通の限界があります。単語の出方や並びは扱えても、単語の意味そのものは扱えないことです。ワンホットベクトルでは、意味の近い単語も遠い単語も同じだけ離れて見えました。BoW や TF-IDF でも、「医者」と「医師」のように意味の近い別の単語は、まったく別のものとして数えられてしまいます。
この限界を越えるには、単語の意味を近さの分かる数のならびで表すしくみが要ります。意味の近い単語を近い場所に置く分散表現は、単語の分散表現を学ぶレッスンで扱います。ここでは、「古典的な手法は単語の意味までは捉えられない」という限界をつかんでおいてください。
注意
ワンホットベクトル・BoW・n-gram・TF-IDF は、単語の出方や並びは扱えますが、単語の意味の近さは扱えません。意味の近さを数のならびで表す方法は、後のレッスンで学びます。
理解の確認
構文解析は、単語どうしの文法上のつながりを調べる処理です。ここまでの古典的な手法は、単語の出方や並びは扱えますが、意味の近さは扱えないという共通の限界を持ち、その先で意味を数のならびで表すしくみへとつながっていきます。
7. 単語より細かい区切りへ
ここからは、文章を数にするときの、単語の区切り方の現在の潮流を手法を軸に短く触れます。
形態素解析では、文章を単語という単位で区切りました。近年の言語モデルでは、単語をさらに細かい部分に割る、サブワード分割という区切り方が広く使われます。よく出る文字のつながりをひとまとまりとして扱い、まれな単語や見たことのない単語は、より小さな部品に分けて表します。こうすると、扱う語の種類を抑えつつ、未知の単語にも対応できます。代表的なやり方に、BPE(ビーピーイー、バイト対符号化)、WordPiece(ワードピース)、SentencePiece(センテンスピース)があります。この区切り方が、後の言語モデルのレッスンで学ぶしくみの入り口になります。
日本語の形態素解析には、それを行うための道具、いわゆる形態素解析器があります。MeCab(メカブ)や Kuromoji(クロモジ)といった道具が広く使われてきました。日本語を扱う多くの処理が、こうした道具の上に成り立っています。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。