自然言語処理
私たち人間は「言葉(自然言語)」を当たり前に使っていますが、コンピュータはそのままでは言葉を理解できません。コンピュータが扱えるのは「数値」だけだからです。
そのため、AIに言葉を教える最初のステップは、「言葉を数値(ベクトル)に変換すること」になります。
この章では、ディープラーニングが登場する前の、古典的ですがG検定で頻出の基礎技術について解説します。
形態素解析(Morphological Analysis)
文章を、意味を持つ最小の単位である「形態素」に分解する処理のことです。
英語は単語と単語の間にスペース(空白)があるため分解しやすいですが、日本語は「私は学生です」のように単語が連続しているため、この処理が非常に重要になります。
入力:「私はG検定を勉強します」
出力:「私 / は / G検定 / を / 勉強 / し / ます」
構文解析(Syntactic Analysis)
形態素解析で分解した単語たちが、文の中でどのように関係しているか(主語・述語・修飾語など)を解析する処理です。
「誰が」「何を」「どうした」という係り受けの関係を木構造(ツリー状)にして明らかにします。
- 形態素解析:単語にバラすだけ
- 構文解析:単語同士のつながりを解析する
ワンホットベクトル(One-hot Vector)
単語をコンピュータで扱うために、最も単純に数値化する方法です。
あらかじめ登録されている単語リストの長さだけ「0」を並べ、該当する単語の場所だけを「1」にします。
りんご = [1]
バナナ = [1]
みかん = [1]
メリットとデメリット
- メリット:シンプルでわかりやすい。
- デメリット:単語数が増えるとベクトルの桁数が膨大になり、ほとんどが「0」のデータになってしまう(これを「疎なベクトル」と言います)。また、「りんご」と「みかん」が似ているといった意味の類似性は表現できません。
局所表現(Local Representation)
ワンホットベクトルのように、「1つの単語を、独立した1つの要素(次元)で表現する方法」を指します。
後に出てくる「分散表現(単語の意味を複数の数値の組み合わせで表す)」の対義語として覚えておきましょう。
- 局所表現:単語同士の関連性を持たない、独立した表現。(例:ワンホットベクトル)
- 分散表現:単語の意味を分散させて表現する。(例:word2vecなど)
BoW(Bag-of-Words)
文章の中に「どの単語が、何回出てきたか」だけに着目して数値化する手法です。
その名の通り、単語を「袋(Bag)」にごちゃ混ぜに入れるイメージです。袋の中でシャッフルされるため、語順(文法)は無視されます。
文A:「私は りんご が 好き」
文B:「私は りんご と みかん が 好き」BoWによるカウント:
私:2, りんご:2, みかん:1, 好き:2 …
TF-IDF
BoWのように単に「何回出たか」を数えるだけではなく、「その単語がその文章にとってどれくらい重要か(特徴的か)」を評価するための手法です。
検索エンジンなどで、「数あるWebサイトの中から、この検索ワードに最もマッチする重要な記事はどれか?」を見つける際などの基礎として使われています。G検定では計算問題も出題されるため、式の意味を理解しておきましょう。
1. TF (Term Frequency):出現頻度
「その文書の中で、その単語がどれくらい頻繁に出てくるか」を表します。
- たくさん出てくる単語ほど、その文書のテーマである可能性が高い。
- 計算式: (その文書内のターゲット単語の出現数) ÷ (その文書の全単語数)
2. IDF (Inverse Document Frequency):逆文書頻度
「世の中の他の文書と比べて、その単語がどれくらいレアか」を表します。
- いろいろな文書に登場するありふれた単語(「私」「です」「の」など)は、IDF値が低くなります。
- 特定の文書にしか出てこないレアな単語(「ディープラーニング」「G検定」など)は、IDF値が高くなります。
- 計算式(概念): log( 全文書数 ÷ その単語が含まれる文書数 )
計算の具体例
わかりやすく、以下の2つの文書(全文書数 = 2)で考えてみましょう。
- 文書A:「AI は すごい」
- 文書B:「AI は G検定 で 学ぶ」
ここで文書Bにおける「AI」と「G検定」の重要度を比べてみます。
| 単語 | TF(文書B内での頻度) | IDF(レア度) | 結果 (TF×IDF) |
|---|---|---|---|
| AI | 文書Bに1回登場。 (1/5語 = 0.2) |
文書AとBの両方にある。 (レアじゃない = 低い) |
低い (重要度 小) |
| G検定 | 文書Bに1回登場。 (1/5語 = 0.2) |
文書Bにしかない。 (レアである = 高い) |
高い (重要度 大) |
このように、単純な出現回数(TF)は同じ「1回」でも、他の文書にもよく出る「AI」よりも、ここだけの固有ワードである「G検定」の方が、TF-IDF値(重要度)は高く算出されます。
これにより、「文書Bの特徴は『AI』というよりも『G検定』にある」とコンピュータが判断できるようになります。
N-gram(Nグラム)
BoWでは「語順」が無視されてしまう弱点がありました。それを少し補うのがN-gramです。
単語や文字を「N個のかたまり」として扱います。
- 1-gram (ユニグラム):「私」「は」「学生」「です」(単語単位)
- 2-gram (バイグラム):「私は」「は学生」「学生です」(隣り合う2語をセットにする)
- 3-gram (トライグラム):「私は学生」「は学生です」(3語セット)
こうすることで、「学生」の前に「は」がある、といった前後のつながりをある程度保持してデータ化することができます。
