Natural Language Understanding (NLU)
自然言語理解(NLU)は、音声アシスタントや検索などで、テキストから意味、意図、エンティティを抽出するNLPの分野です。
自然言語理解(NLU)は、自然言語処理(NLP)の一分野で、テキストの意味、つまり書き手の意図、言及されている事物、複数の解釈が可能な場合に意図された解釈を特定します。NLUシステムは「明日の7時に2人でテーブルを予約して」を、reserve_tableのような意図と人数、時刻、日付のスロットを含む構造化リクエストに変換し、ソフトウェアが処理できるようにします。バーチャルアシスタント、カスタマーサービス用のチャットボット、検索エンジンは、対応方法や回答を決める前に、すべてのリクエストに対してNLUを実行します。
言語の理解が難しい理由#
同じ単語でも、さまざまなレベルで異なる意味を持つことがあります。「bank」は金融機関にも川岸にもなり、「望遠鏡を持った男を見た」では望遠鏡を持っているのが誰なのか分かりません。また、「トロフィーは大きすぎるので茶色のスーツケースに入らない」では「それ」はトロフィーを指しますが、「大きすぎる」を「小さすぎる」に変えると、スーツケースを指します。Hector Levesqueは2011年、こうしたWinogradスキーマを機械理解のテストとして提案しました。解決には単語の統計ではなく、世界に関する知識が必要だからです。Terry WinogradのSHRDLU(1968~1970)など初期のルールベースシステムが理解できたのは、ルールですべてが記述されたブロックのシミュレーション環境内で入力されたコマンドだけでした。
NLUの主要タスク#
- 意図分類: リクエストを、残高照会やカード停止など、アプリケーションの目的のいずれかに分類します。
- 固有表現認識(NER): リクエストに含まれる人物、場所、製品、日付、金額を特定します。アシスタントはこれらを使って意図のスロットを埋めます。
- 意味解析: 文を、データベースクエリやAPI呼び出しなど、プログラムが実行できる形式表現に変換します。
- 照応解析: 代名詞やその他の指示表現を、それらが指すエンティティに結び付けます。
- 自然言語推論: ある文が別の文を含意するか、矛盾するか、または中立であるかを判定します。
- 感情分析: テキストが表す意見を特定します。
アシスタントは通常、ファインチューニングしたトランスフォーマーエンコーダーで意図を分類します。また、文エンコーダーを使えば、各意図につき1つの例だけでワンショット分類することもできます。リクエストと意味が最も近い例の意図を選択します。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# One labeled example per intent, as an assistant's training data would provide
intents = {
"check_balance": "What is my account balance?",
"block_card": "Please freeze my debit card",
"transfer_money": "Send money to another account",
}
utterances = ["my card was stolen", "how much cash do I have left", "pay Alex back 20 dollars"]
# Assign each utterance the intent whose example is closest in meaning
scores = model.similarity(model.encode(utterances), model.encode(list(intents.values())))
for text, row in zip(utterances, scores):
best = int(row.argmax())
print(f"{text!r} -> {list(intents)[best]} ({row[best]:.2f})")3つのリクエストすべてで意図を正しく判定しています。block_card(0.42)、check_balance(0.49)、transfer_money(0.28)です。「残りの現金はいくらありますか」と「Alexに20ドル返す」は、それぞれの意図の例と共通する単語がありません。そのため、キーワードではなく埋め込みによって照合されています。送金リクエストは、他の意図の0.17に対してわずか0.28のスコアで選ばれています。Rasaなどのフレームワークは、最高スコアが信頼度のしきい値を下回るリクエストを、ユーザーに言い換えを促すフォールバックに送ります。
ベンチマークとモデル#
GLUE(2018)は、感情分析、言い換え検出、自然言語推論など、文および文ペアの9つのタスクを1つのスコアにまとめました。BERTは2018年にスコアを80.5まで引き上げました。より難しい後継ベンチマークのSuperGLUE(2019)には、Winograd形式の照応解析が追加されました。2021年1月には、MicrosoftのDeBERTaとGoogleのT5 + Meenaが、89.8という人間のベースラインをともに上回りました。高スコアはショートカット学習に依存している場合があります。Suchin Gururanganらは2018年、推論ペアの2番目の文だけを読む分類器が、否定語などの手掛かりと「矛盾」ラベルが相関しているため、SNLIデータセットの約67%を正しく分類できることを示しました。現在、大規模言語モデル(LLM)はプロンプトから多くのNLUタスクを実行しており、レイテンシとリクエストあたりのコストが重要な場面では、小規模なエンコーダーモデルが引き続き広く使われています。
検索とビジョンにおけるNLU#
セマンティック検索はクエリの意味を照合することでNLUを適用し、正確な単語の一致を必要としません。ベクトル検索を使うと、何百万件もの項目を高速に検索できます。CLIPのようにテキストと画像が共通の埋め込み空間を持つ場合、同じ考え方をモダリティ間にも適用できます。Ultralytics Platform ExploreページのImagesタブでは、「ソファにいる猫」などのシーン説明を入力すると、ファイル名やタグではなく、画像の内容に基づいて公開データセットから画像が返されます。
NLUと関連用語の違い#
- NLP: 人間の言語をコンピューターで処理する分野全体を指します。NLUは入力を解釈し、自然言語生成(NLG)は出力を作成します。
- 音声認識: 音声をテキストに変換し、NLUがその文字起こしを解釈します。
- 光学文字認識(OCR): テキスト画像から文字を抽出し、NLUがその意味を読み取れるようにします。
- 質問応答: 自然言語による質問に回答します。そのためには、NLUで質問と回答の根拠となるテキストの両方を解釈する必要があります。










