Web教科書

自然言語処理の基礎

自然言語処理

私たち人間は「言葉(自然言語)」を当たり前に使っていますが、コンピュータはそのままでは言葉を理解できません。コンピュータが扱えるのは「数値」だけだからです。

そのため、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検定では計算問題も出題されるため、式の意味を理解しておきましょう。

TF-IDF = TF(出現頻度)× IDF(逆文書頻度)

1. TF (Term Frequency):出現頻度

「その文書の中で、その単語がどれくらい頻繁に出てくるか」を表します。

  • たくさん出てくる単語ほど、その文書のテーマである可能性が高い。
  • 計算式: (その文書内のターゲット単語の出現数) ÷ (その文書の全単語数)

2. IDF (Inverse Document Frequency):逆文書頻度

「世の中の他の文書と比べて、その単語がどれくらいレアか」を表します。

  • いろいろな文書に登場するありふれた単語(「私」「です」「の」など)は、IDF値が低くなります。
  • 特定の文書にしか出てこないレアな単語(「ディープラーニング」「G検定」など)は、IDF値が高くなります。
  • 計算式(概念): log( 全文書数 ÷ その単語が含まれる文書数 )

計算の具体例

わかりやすく、以下の2つの文書(全文書数 = 2)で考えてみましょう。

  • 文書A:AI は すごい」
  • 文書B:AIG検定 で 学ぶ」

ここで文書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語セット)

こうすることで、「学生」の前に「は」がある、といった前後のつながりをある程度保持してデータ化することができます。

タイトルとURLをコピーしました