第7章 7-1 / 非構造化データとAI

自然言語処理と大規模言語モデル

このページで学ぶこと

私たちが日常的に使う文章や口コミ、問い合わせメールといった「テキストデータ」は、数値データと違って、そのままではコンピュータに扱えません。このページでは、テキストデータを分析可能な形に整えるクリーニング処理、文章の構造を分析する形態素解析・係り受け解析、そして自然言語処理(NLP)で解ける代表的なタスク、さらに近年急速に普及した大規模言語モデル(LLM)が抱える弱点であるHallucination(幻覚)という4つのテーマを扱います。

第7章では「非構造化データとAI」を扱います。ここまでの章で見てきた表形式のデータとは違い、テキスト・画像・音声・動画といった非構造化データをどう処理するかを学んでいきましょう。まずはテキストデータの扱い方からです。

1. テキストデータのクリーニング処理

SNSの投稿、顧客アンケートの自由記述、コールセンターの応対ログ。こうした非構造化データ※1としてのテキストは、表形式のデータのように整然と並んでいるわけではありません。人によって書き方の癖があり、表記のゆれもあれば、分析の邪魔になる記号や余計な情報も混ざっています。そこで最初に必要になるのが、目的に応じたテキストクリーニングです。

代表的なクリーニング処理には、次のようなものがあります。小文字化(英語の"Data"と"data"を同じ単語として扱えるようにする)、数値置換(「2024年」「35歳」のようにバラバラな数値を「年」「歳」といった共通のトークンに置き換え、数値のゆれによる影響を抑える)、半角変換(全角の「ABC」と半角の「ABC」の表記ゆれをそろえる)、記号除去(「!」「☆」「絵文字」など分析上不要な記号を取り除く)、そしてステミング※2(英語の"running"「走っている」や"ran"「走った」を語幹の"run"にそろえ、同じ意味の単語のゆれを吸収する)などです。

クリーニング処理 内容 目的の例
小文字化 英字をすべて小文字に統一する "Apple"と"apple"を同一語として扱う
数値置換 具体的な数字を汎用トークンに置き換える 「3個」「120個」を「個数」として一括処理する
半角変換 全角英数字・記号を半角にそろえる 表記ゆれをなくし、同じ単語として集計する
記号除去 句読点・絵文字・特殊記号を取り除く ノイズを減らし、単語の抽出精度を上げる
ステミング 語尾の変化を取り除き語幹にそろえる "studies"と"study"を同じ単語として扱う

重要なのは、これらのクリーニング処理を「目的に応じて」適切に選ぶという考え方です。たとえば感情分析をしたい場合、「!」や絵文字は感情の強さを表す重要な手がかりになることがあるため、安易に除去すると情報を失ってしまいます。逆に、単語の出現頻度だけを見たい場合は、記号を除去した方が集計がすっきりします。何を明らかにしたいのかによって、どのクリーニングを行うべきかは変わってくるのです。

EXAMPLE ― ECサイトのレビュー分析
  • 商品レビューの「よかった!!!」「よかった。」を同一の意味として集計したい → 記号を除去してから単語を数える
  • 「サイズが大きい」「サイズがデカい」を同じ意味として扱いたい → 表記ゆれの正規化(半角変換・表記統一)を行う
  • 「配送が早かった」「配送が早い」を同一語として扱いたい → ステミングや語尾処理で語幹をそろえる
POINT

テキストクリーニングは「とりあえず全部やればよい」ものではありません。分析の目的に照らして、どのクリーニングが必要で、どれが情報を損なうかを見極めることが試験でも実務でも問われるポイントです。

さえちゃん
さえ

テキストデータって数字と違って「表記のゆれ」がすごく多いんだよね。同じ意味の言葉がバラバラに書かれてると、コンピュータには別物に見えちゃう。だからこそクリーニングが大事なんだよ!

2. 形態素解析と係り受け解析 ― 文書構造をとらえる

クリーニングを終えたテキストを分析するには、文章を単語単位に分解し、その構造を理解する処理が必要です。ここで登場するのが形態素解析※3係り受け解析※4です。

日本語は英語と違って単語と単語の間にスペースがないため、「今日は良い天気です」という文章をそのままコンピュータに渡しても、どこからどこまでが1つの単語かを認識できません。形態素解析は、この文章を「今日/は/良い/天気/です」のように意味を持つ最小単位(形態素)に分割し、それぞれの品詞(名詞・動詞・形容詞など)を判定する処理です。日本語の自然言語処理ライブラリとしてはMeCab※5などが広く使われており、こうした形態素解析や係り受け解析のライブラリを適切に使い、基本的な文書構造解析を行うスキルが求められます。

形態素解析が「単語への分解」であるのに対し、係り受け解析は「単語同士の関係」を分析します。「太郎が花子にプレゼントを渡した」という文であれば、「太郎が」は「渡した」に係り、「花子に」も「渡した」に係る、というように、どの単語がどの単語を修飾・説明しているかの構造を明らかにします。この構造がわかると、「誰が」「誰に」「何を」「どうした」という文の骨組みを機械的に取り出せるようになります。

EXAMPLE ― 形態素解析の活用
  • 顧客アンケートの自由記述から名詞だけを抽出し、頻出する単語ランキングを作って話題を把握する
  • SNS投稿から動詞・形容詞を取り出し、「楽しい」「便利」といった評価語の出現傾向を追う
  • コールセンターの対応記録を係り受け解析にかけ、「〇〇が壊れた」のような故障報告の構文パターンを自動的に検出する
POINT

形態素解析は「単語に分ける・品詞を判定する」処理、係り受け解析は「単語同士のつながりを明らかにする」処理と役割を整理して覚えておきましょう。両者はセットで使われることも多い技術です。

3. 自然言語処理で解けるタスクを知る

自然言語処理は、単に文章を分解するだけでなく、さまざまな実用的なタスクを解くために使われます。DS検定では、自然言語処理を用いて解けるタスクを理解し、各タスクの入出力を説明できることが求められます。代表的なタスクを整理してみましょう。

タスク 入力 出力
固有名詞抽出(固有表現抽出) 文章 人名・地名・組織名などの固有表現とその種類
機械翻訳 ある言語の文章 別の言語に翻訳された文章
文書分類 文章 あらかじめ決めたカテゴリのラベル
感情分析 レビューやSNS投稿 ポジティブ・ネガティブなどの感情ラベル
要約 長文の文章 要点をまとめた短い文章
質問応答 質問文(と関連文書) 質問に対する回答

こうした自然言語処理のタスクの達成度を横断的に評価する枠組みとしてGLUEタスク※6と呼ばれるベンチマークが知られています。GLUEは、文法的な正しさの判定や、2つの文の意味が同じかどうかの判定、含意関係の判定など、複数の自然言語処理タスクを1つのセットにまとめたもので、モデルの言語理解力を比較する共通のものさしとして広く使われています。

また、固有表現抽出※9は、文章中から「人名」「地名」「組織名」「日付」「金額」といった意味のあるまとまり(固有表現)を検出し、その種類を分類するタスクです。「田中さんが2024年に東京で新会社を設立した」という文からは、「田中さん(人名)」「2024年(日付)」「東京(地名)」「新会社(組織名)」を抽出できます。ニュース記事から重要な情報を自動的に整理したり、契約書から日付や金額を自動抽出したりする実務に応用されています。

EXAMPLE ― 業務での自然言語処理タスク活用
  • 問い合わせメールを「クレーム」「質問」「要望」に自動分類する(文書分類)
  • 商品レビューが好意的か否定的かを自動判定し、ダッシュボードに表示する(感情分析)
  • 海外拠点からの英語のメールを日本語に自動翻訳して社内共有する(機械翻訳)
  • 大量の議事録から要点だけを抜き出して短い文章にする(要約)
さえちゃん
さえ

試験では「このタスクの入力と出力は何?」っていう聞かれ方をよくするよ。タスク名だけ覚えるんじゃなくて、「何を入れたら、何が出てくるか」までセットで覚えるのがコツ!

4. 大規模言語モデル(LLM)とHallucination(幻覚)

近年、自然言語処理の世界を大きく変えたのが大規模言語モデル(LLM)※7です。膨大な量のテキストデータを学習することで、まるで人間が書いたかのような自然な文章を生成できるようになりました。チャット形式で質問に答えたり、文章を要約したり、プログラムコードを書いたりと、これまで個別のタスクとして扱われていた自然言語処理の多くを、1つのモデルでこなせるようになった点がLLMの大きな特徴です。

一方で、LLMには見過ごせない弱点があります。それがHallucination(幻覚)※8と呼ばれる現象です。Hallucinationとは、LLMがもっともらしい口調で、事実とは異なる内容や、存在しない情報をあたかも真実であるかのように生成してしまう現象を指します。試験でも重視されるのは、この現象がなぜ起こるのかを、学習に使われているデータの観点から説明できることです。

Hallucinationが起こる主な理由は大きく2つあります。ひとつは、学習用データそのものが誤りや歪みを含んでいる場合です。LLMはインターネット上の大量のテキストを学習しますが、その中には誤った情報や偏った意見も含まれています。LLMは「正しいかどうか」を判断しているわけではなく、あくまで学習データに現れた言葉のパターンをもとに、統計的にもっともらしい文章を生成しているにすぎません。そのため、学習データに含まれる誤りをそのまま(あるいは組み合わせて)出力してしまうことがあります。

もうひとつの理由は、入力された問いに対応する学習用データが存在しない、あるいは乏しい場合です。LLMは、知らないことについて「わかりません」と正直に答えるとは限りません。学習データに答えが存在しない質問をされても、言語モデルとしての性質上、それらしい単語のつながりを生成しようとする力が働くため、存在しない事実やもっともらしい嘘を、自信満々な口調で生成してしまうことがあるのです。

Hallucinationの原因 データの観点からの説明
学習データ自体の誤り・歪み 誤情報や偏った内容を学習してしまい、それを事実であるかのように出力する
該当データの不足 問いに対応する情報が学習データに存在せず、それでも尤もらしい文章を生成しようとする
EXAMPLE ― Hallucinationの具体例
  • 存在しない論文のタイトルや著者名を、実在するかのように詳しく生成してしまう
  • マイナーな社内制度について尋ねたところ、学習データにその情報がないため、もっともらしいが誤った規定を作り出してしまう
  • 誤った情報が多く出回っている話題について質問すると、その誤情報に沿った回答を生成してしまう
POINT

Hallucinationは「LLMの性能が低いから起こる」だけの現象ではありません。学習データの誤り・歪み学習データの不足という2つのデータ起因の理由があることを整理して説明できるようにしておきましょう。業務で活用する際は、出力結果を鵜呑みにせず、重要な情報ほど一次情報で裏づける姿勢が欠かせません。

さえちゃん
さえ

LLMって自信満々に間違ったことを言ってくることがあるから怖いんだよね…。「知らないことは知らないと言う」わけじゃなくて、それらしい文章を作ろうとしちゃうのがポイント。試験でもよく問われるから要チェック!

まとめ

ここまで、DS検定の出題範囲である「非構造化データとAI/自然言語処理と大規模言語モデル」の内容を見てきました。テキストという非構造化データを扱うための土台となる考え方を振り返っておきましょう。

  1. テキストクリーニング ― 小文字化・数値置換・半角変換・記号除去・ステミングなどを目的に応じて適切に実施する
  2. 形態素解析・係り受け解析 ― ライブラリを用いて単語への分割と単語同士の関係をとらえ、基本的な文書構造解析を行う
  3. 自然言語処理のタスク ― GLUEタスクや固有表現抽出、機械翻訳など、各タスクの入出力を理解する
  4. LLMのHallucination ― 学習データの誤り・歪みや、該当データの不足という観点から、その発生理由を説明できる

次のレッスンでは、もうひとつの代表的な非構造化データである「画像」を扱います。画像のデジタル表現の仕組みから、画像認識の代表的なタスクまで見ていきましょう。

脚注 ─ 用語解説
  1. 非構造化データ … 表計算ソフトの行と列のように整理されていない、テキスト・画像・音声・動画などのデータのこと。数値や文字列が規則的に並ぶ「構造化データ」と対比される。
  2. ステミング … 単語の語尾変化を取り除き、共通する語幹(原形に近い部分)にそろえる処理のこと。英語の"running"→"run"のような変換が代表例。
  3. 形態素解析 … 文章を意味を持つ最小単位(形態素)に分割し、それぞれの品詞を判定する自然言語処理の基本技術。
  4. 係り受け解析 … 文章中の単語同士が、どの単語を修飾・説明しているかという関係性(係り受け関係)を分析する技術。
  5. MeCab … 日本語の形態素解析でよく使われるオープンソースのライブラリのひとつ。文章を単語に分割し、品詞などの情報を付与する。
  6. GLUEタスク … General Language Understanding Evaluationの略。文法判定や含意関係の判定など、複数の自然言語処理タスクをまとめて評価するベンチマークのこと。
  7. 大規模言語モデル(LLM) … Large Language Modelの略。膨大な量のテキストデータを学習し、自然な文章の生成や理解を行う大規模なAIモデルのこと。
  8. Hallucination(幻覚) … LLMがもっともらしい口調で、事実と異なる内容や存在しない情報をあたかも真実であるかのように生成してしまう現象のこと。
  9. 固有表現抽出 … 文章中から人名・地名・組織名・日付・金額といった固有表現を検出し、その種類を分類する自然言語処理のタスクのこと。