Bag of wordsとGPTによる文章分析の違いと文脈理解の比較

こんにちは。ゆうせいです。

自然言語処理の分野において、コンピューターに文章を読み込ませる手法には複数の種類が存在します。本記事では、「私は猫が好き」「私は猫舌である」「熱い食べ物が苦手」という3つの文章を例に挙げ、出現する単語を数えるBag of wordsと、大規模言語モデルであるGPTを用いた分析手法の違いについて解説します。

Bag of wordsによる分析結果と特徴

Bag of wordsは、文章の中にどの単語が何回出現したかを数える手法です。Bag of wordsの仕組みは、料理の味を確かめずに、パッケージに記載された食材のリストだけを見て料理の種類を分類する作業に似ています。

3つの文章をBag of wordsで分析すると、コンピューターは単語の文字面だけを比較します。「私は猫が好き」と「私は猫舌である」という2つの文章には、「私」「は」「猫」という共通の文字が含まれる可能性が高くなります。そのため、コンピューターは「私は猫が好き」と「私は猫舌である」の関連性が高いと判定します。

一方で、「私は猫舌である」と「熱い食べ物が苦手」という文章の間には、共通する単語が一つも存在しません。したがって、Bag of wordsの分析では、「私は猫舌である」と「熱い食べ物が苦手」の文章間には全く関係がないという結果が出力されます。

GPTによる分析結果と特徴

GPTは、膨大なテキストデータを事前に学習し、単語の意味や前後の文脈、さらには比喩表現までを含めて文章を理解する手法です。GPTの仕組みは、熟練した料理人が実際に料理を味わい、使われている食材だけでなく、完成した料理の風味やジャンルを総合的に判断する作業に似ています。

3つの文章をGPTで分析すると、コンピューターは「猫舌」という言葉が単なる動物の部位ではなく、「熱い食べ物を食べることが苦手な体質」を意味する慣用句であることを理解します。

結果として、GPTは「私は猫舌である」と「熱い食べ物が苦手」という文章が、使われている単語は完全に異なっていても、文章全体の意味としては非常に近い内容であると判定します。反対に、「私は猫が好き」という文章は動物に対する好みを述べているため、他の2つの文章とは意味が異なるという正確な分析結果を出力します。

比較用のPythonプログラムの構造

以下のプログラムは、Bag of wordsの手法を用いて単語の出現回数を数える処理と、GPTを提供するOpenAI社のシステムを呼び出して文脈を計算する処理を並べて記述したものです。

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

sentences_divided = [
    "私 は 猫 が 好き",
    "私 は 猫舌 で ある",
    "熱い 食べ物 が 苦手"
]

vectorizer = CountVectorizer(token_pattern=u"(?u)\\b\\w+\\b")
bow_vectors = vectorizer.fit_transform(sentences_divided).toarray()

bow_sim_1_2 = cosine_similarity([bow_vectors[0]], [bow_vectors[1]])[0][0]
bow_sim_2_3 = cosine_similarity([bow_vectors[1]], [bow_vectors[2]])[0][0]

print("Bag of wordsの類似度")
print("文章1と文章2:", bow_sim_1_2)
print("文章2と文章3:", bow_sim_2_3)

def calculate_gpt_similarity(sentence_a, sentence_b):
    pass

<>

プログラムの前半部分では、単語を数える専用の道具を用いてBag of wordsの計算を行っています。プログラムの後半部分は、GPTのシステムへ文章を送信する処理の枠組みを示しており、実際には通信を行う記述が入ります。

プログラムから読み解く分析結果の違い

Bag of wordsの出力結果

プログラムの前半部分を実行すると、文章1(私は猫が好き)と文章2(私は猫舌である)の類似度は0より大きい数値として出力されます。文章1と文章2には「私」と「は」という共通の単語が含まれているため、コンピューターは2つの文章に関連性があると判定します。一方で、文章2(私は猫舌である)と文章3(熱い食べ物が苦手)の間には共通する単語が存在しないため、類似度は完全に0として出力されます。Bag of wordsのプログラムは、単語の文字面が一致するかどうかという事実のみを基準に計算を実行します。

GPTの処理から想定される出力結果

プログラムの後半部分にGPTから情報を取得する通信処理を実装して実行した場合、全く異なる結果が得られます。GPTはインターネットを経由して接続される高度な専門家のような役割を果たし、「猫舌」という文字列を単なる動物の部位としてではなく、熱いものが苦手な性質という文脈として評価します。したがって、GPTの計算結果では、使われている単語が全く異なる文章2(私は猫舌である)と文章3(熱い食べ物が苦手)の類似度が非常に高い数値として出力されます。

2つの手法のメリットとデメリット

Bag of wordsとGPTの2つの分析手法についてのメリットとデメリットは以下の通りです。

メリット

  • Bag of words:仕組みが単純であるため、計算速度が非常に速く、少ないコンピューターの資源で動作させることができる。
  • GPT:慣用句や文脈の裏にある意味を正確に捉えることができるため、人間が文章を読む感覚に近い高度な分析が可能である。

デメリット

  • Bag of words:単語の文字面だけを追うため、例文のように意味が同じでも使われる単語が異なる文章を同じ意味のグループとして認識できない。
  • GPT:文章の文脈を計算するために複雑な処理を行うため、非常に高い処理能力を持つコンピューターが必要となる。

まとめ

Bag of wordsは単語の出現という表面的なデータで文章を判断し、GPTは学習済みの知識を用いて文章の奥にある文脈や慣用句の意味を判断するという明確な違いが存在します。

学習のステップとして、まずはご自身でいくつかの短い文章を単語に分割し、共通する単語の数を数えるというBag of wordsの基礎的な作業を体験してみてください。次に、インターネット上で公開されているGPTのサービスに例文を入力し、「3つの文章の意味の類似度を判定してください」と指示を出して回答結果を観察し、文脈を理解する最新技術の正確さを確認するという順序で学習を進めることをお勧めします。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。