0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GPT-4.1でアンケート自由記述を自動分類してみたら、制約違反が発生した話

0
Last updated at Posted at 2026-06-02

はじめに

あるプロジェクトで大量ドキュメントの分析のためにLLMによるテキストの分類・集計の検証を行いました。
プロンプトエンジニアリングガイドのWEBサイトでは、"テキスト分類"という例で紹介されているケースを少し応用した形式になります。参考:Prompt Engineering Guide - Text Classification
LLMによるテキスト分類は例えばアンケート結果の分析・集計など様々なケースに有効と考えられます。しかし、分類対象データの件数が多いとプロンプトで指示した制約を守らないように見える事象も確認できました。
実際の検証結果を踏まえてご紹介します。

この記事でわかること

  • GPT-4.1でテキスト分類を行った際に発生する制約違反の具体例
  • 分類対象データの件数が精度に与える影響
  • 実務での回避策の方向性

検証環境

LLM
AzureのMicrosoft FoundryにデプロイしたLLMを使用しました。
モデルはgpt-4.1(バージョン2025-04-14)です。
※現時点(2026/6)で最新モデルではありませんが、実際のプロジェクトで使用したモデルに合わせて検証しています。

プロンプト実行環境
クライアント端末:Windows 11 Pro 24H2
Pythonで簡易スクリプトを作成、APIキーを使用してLLMに対してプロンプト実行・結果確認を行いました。明示的に指定したLLMのパラメータは以下のとおりです。

  • temperature:0 ※応答のランダム性を最小化するために設定
  • max_tokens:32768 ※出力トークン数は念のためにgpt-4.1の最大値を設定した

検証用スクリプトは、下記の Microsoft 公式ドキュメントに掲載されているREST API のサンプルコードを参考に作成しました。
Azure OpenAI Service REST API クイックスタート

検証に使用したプロンプト

社内で開催したプロンプトエンジニアリング勉強会の感想を分析して今後の企画の参考にする、というケースを想定して以下のようなプロンプトを実行しました。

実際に使ったプロンプト
# 命令文
プロンプトエンジニアリング勉強会を実施した際のアンケートを分析して、今後の勉強会の改善の参考にしようとしています。
アンケートの結果は # 感想一覧 にまとめています。 # 感想一覧 を分類して件数を集計ください。# 制約一覧 の内容を厳守してください。

# 制約一覧
- # 感想一覧 を全件対象としてください。1件も漏らさず分類してください。
- # 感想一覧 の1件に対して、必ず1つの分類のみに整理してください。複数の分類にまたがる場合は、最も適切と思われる分類に整理してください。
- 分類はポジティブな感想とネガティブな感想が明確に区別できるようにしてください。各分類名の先頭に【ポジティブ】または【ネガティブ】を付与してください。
- # 出力形式 の指示に従って分類してください。

# 感想一覧
1. プロンプトの書き方によって回答品質が大きく変わることを実感でき、とても参考になりました。
2. 基本的な内容が中心だったので、もう少し応用的なテクニックも扱ってほしかったです。
3. 実際に手を動かす演習があったことで、説明だけよりも理解しやすかったです。
4. 演習時間が短く、試行錯誤する前に終わってしまったのが少し残念でした。
5. プロンプトテンプレートの例が業務に近く、すぐに使えそうだと感じました。
6. 生成AIの仕組みに関する説明がやや難しく、初心者には少しハードルが高かったです。
7. チーム内のナレッジ共有や議事録作成に活用できそうなヒントが得られました。
8. もう少し失敗例や悪いプロンプトの改善プロセスを見たかったです。
9. 講師の説明がわかりやすく、プロンプト設計の考え方を整理できました。
10. 内容は有益でしたが、スライドの情報量が多く、途中で追いきれない場面がありました。
11. 実案件での活用事例が紹介されていて、業務への適用イメージが持てました。
12. 参加者同士でプロンプトを比較する時間があると、さらに学びが深まると思いました。
13. 生成AIを使う際の注意点や情報漏えいリスクについて学べたのが良かったです。
14. もう少しセキュリティや社内利用ルールに踏み込んだ説明があると安心です。
15. 演習課題が実務寄りで、普段の作業に置き換えて考えやすかったです。
16. 初心者向けとしては良かったですが、経験者には少し物足りない内容でした。
17. プロンプトに役割や制約条件を入れる重要性が理解できました。
18. 時間配分として座学が長かったです。演習や質疑応答の時間を増やしてほしいです。
19. 具体例が多く、抽象的な説明だけで終わらなかった点が良かったです。
20. 勉強会後に復習できる資料やプロンプト集があるとありがたいです。
21. AIへの指示を明確にすることで、レビューや調査業務にも活用できそうだと思いました。
22. 参加者のレベル差が大きかったため、基礎編と応用編に分けてもよいと感じました。
23. 実際に自分の業務課題を題材にしてプロンプトを作る時間があれば、さらに有意義だと思います。
24. プロンプトエンジニアリングという言葉に難しさを感じていましたが、身近な技術だとわかりました。
25. デモの内容は面白かったものの、ネットワークや環境の都合で進行が少し止まったのが気になりました。
26. 生成AIを使ったドキュメント作成の効率化について、具体的な方法を知ることができました。
27. 講義中心だったため、もう少し双方向のやり取りがあると集中しやすいと思いました。
28. 悪い回答が出たときに、どのようにプロンプトを修正するかの考え方が参考になりました。
29. もっと開発工程ごとの活用例、例えば要件定義やテスト設計での使い方を知りたいです。
30. 内容のレベル感がちょうどよく、初めて参加する人にも理解しやすい勉強会でした。

# 出力形式
分類別の件数が分かるように以下のように出力してください。
##出力例
| 分類 | 内容             |     件数 | 該当番号                     |
| -- | --------------- | -----: | ------------------------ |
| A  | 【ポジティブ】※ここに分類の詳細内容を記載 | **6** | 1, 9, 17, 19, 24, 30     |
| B  | 【ポジティブ】・・・   | **7** | 5, 7, 11, 15, 21, 26, 29 |
| C  | 【ネガティブ】・・・    | **6** | 3, 4, 12, 18, 23, 27     |
| D  | 【ネガティブ】・・・    | **1** | 20                       |

※勉強会の感想はLLMを使用して作成した架空の内容です。
※上記はユーザープロンプトの内容です。システムプロンプトでは「あなたは社内勉強会の感想を分類・整理する役割を担うアシスタントです。」という役割を指定しています。

プロンプト実行結果と考察

プロンプトの実行結果

分類 内容 件数 該当番号
A 【ポジティブ】プロンプトエンジニアリングや生成AIの知識・考え方が理解できて参考になった 6 1, 9, 17, 19, 24, 30
B 【ポジティブ】業務や実務への応用・活用イメージが得られた 7 5, 7, 11, 15, 21, 26, 29★
C 【ポジティブ】演習や具体例、実践的な内容が理解しやすかった 3 3, 13, 28
D 【ネガティブ】内容が基礎的・初心者向けで物足りなかった、応用や発展的内容を希望 3 2, 16, 22
E 【ネガティブ】演習や双方向の時間が短い・少ない、時間配分に不満 4 4, 12, 18, 27
F 【ネガティブ】説明や資料が難しい・情報量が多い、初心者にはハードルが高い 2 6, 10
G 【ネガティブ】失敗例や改善プロセス、開発工程ごとの活用例など、より具体的な事例を希望 2 8, 29★
H 【ネガティブ】セキュリティや社内利用ルールの説明が不足 1 14
I 【ネガティブ】実務課題を題材にした演習や復習資料など、追加サポートを希望 2 20, 23
J 【ネガティブ】デモ進行のトラブル(ネットワーク・環境) 1 25

※プロンプトを複数回実行した場合の結果のばらつきは考慮していません。
※分類が重複している該当番号は'29★'のように★を付けています。

考察

※出力結果の精度向上のために制約を明記するなどプロンプト作成には試行錯誤しています。
自由記述形式の感想を分類・集計してくれました。一見すると的確にまとめてくれているように見えます。
しかし、よく見ると以下のような問題が確認できます。
※①は実際のプロジェクトの検証でも確認できた事象です。

①制約を守らずに複数の分類にカウントしているケースがある

感想29が複数分類に集計されています。その結果、感想は30件ですが分類した件数の合計が31件となってしまいます。プロンプトで「必ず1つの分類のみに整理してください」と指示していますが守っていません。
感想「29. もっと開発工程ごとの活用例、例えば要件定義やテスト設計での使い方を知りたいです。」は「B【ポジティブ】業務や実務への応用・活用イメージが得られた」と「G【ネガティブ】失敗例や改善プロセス、開発工程ごとの活用例など、より具体的な事例を希望」に分類されています。人の判断でも分類が悩ましい内容である事の影響のようにも見えますが、集計件数にも影響するので制約に従って1つの分類に集計してほしいところです。

②疑問の残る分類がある

例えば感想「23. 実際に自分の業務課題を題材にしてプロンプトを作る時間があれば、さらに有意義だと思います。」は「I【ネガティブ】実務課題を題材にした演習や復習資料など、追加サポートを希望 」に分類されていますが、ネガティブな感想かは疑問が残ります。分類については人の判断で行っても疑問の残る結果は出てくると考えられるので仕方のない面もありますが、LLMによる分類は妥当でないように見えるケースも確認できました。
※この問題はFew-Shotプロンプティングなどのテクニックを活用すれば改善できる見込みはあるかもしれません。

追加検証

30件あった感想一覧を15件(重複したNo.29の感想が入るようにNo.16~30を対象)に減らしてプロンプトを実行したところ、以下のような出力結果になりました。
プロンプトの実行結果

分類 内容 件数 該当番号
A 【ポジティブ】内容・説明が分かりやすい/理解が深まった/具体例や実用性が高い 6 17, 19, 21, 24, 26, 30
B 【ネガティブ】内容のレベル・対象者設定に関する不満(初心者向けすぎる/レベル差) 2 16, 22
C 【ネガティブ】進行・構成(座学が長い/双方向性不足/演習・質疑応答不足) 3 18, 23, 27
D 【ネガティブ】資料・復習環境の不足 1 20
E 【ネガティブ】デモ・進行上のトラブル 1 25
F 【ネガティブ】活用例・応用範囲の説明不足 1 29
G 【ポジティブ】プロンプト修正・改善の考え方が参考になった 1 28

感想が30件だった時に重複して分類されたNo.29は意図したとおり1件としてカウントされています。
分類の内容については感想が30件の時と一部異なります。また、感想23の分類については30件の時と同様で、疑問の残る分類があることには変わりありません。
しかし、複数分類に集計されるケースは無くなったので、集計件数などの精度としては感想が15件の場合が望ましいと言えます。
※感想No.1~15でプロンプトを実行しても、複数の分類に集計されるケースは確認できませんでした。検証結果は割愛しています。

まとめ

確認できた事象

  1. 制約違反による重複カウント:「1件につき1分類」と指示しても、複数分類にカウントされるケースがあった
  2. データ件数と精度の関係:分類対象を30件→15件に減らすと重複カウントが解消された

※実際のプロジェクトで確認できた事象と同様でした。
検証のサンプル数が少ないので、あくまで「そのような傾向がある」程度に留めておく事象と考えています。

注意すべき事項

  • LLMによるテキスト分類の結果は、必ず人間によるレビューが必要
  • 件数が多い場合はバッチ分割(例:15件ずつ)での処理を検討すべき

今後の検証予定

  • GPT-5シリーズやClaude等の別モデルでの比較検証
    プロンプトの改善で回答精度の向上を図る方針もあると思いますが、別モデルで今回と同じプロンプトを実行してどのような回答が出力されるかを検証したいと思います。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?