見出し画像

生成AIって、なんで日本語の文字数がわからないんだ!

ChatGPTやClaudeなどの生成AIを使って日本語の文章を書かせるとき、一番苦労するのが文字数の指示を守らないこと
◯◯◯文字くらいで、と指示しても、たいてい半分以下くらいの文章量になってしまう
なんでそうなるのか、ChatGPTに尋ねてみました


ChatGPTに聞いてみた

ChatGPTに限らず、生成AIは日本語の文字数を数えることが苦手
「◯◯文字で文章を書いて」と指示をしても、たいてい文字数が足りない こうなる理由を教えて

私の入力

使ったChatGPTのモデルはo3-mini

生成AIの日本語文字数 数えづらい理由

トークナイゼーションの特性

生成AIモデルは、次のトークン確率を予測することで動いているんだ。日本語のトークナイゼーションは複雑で、正確な文字数を数えることが難しいんだね。

次のトークン予測

言語モデルは次の単語予測に特化していて、正確な文字数カウントを考慮していないため、カウントする際の制約を考慮していない。

なぜ難しいのかを理解する

生成AIが日本語の文字数を正確に数えられない理由は、トークンベースの処理、および予測生成の仕組みに起因している。これにより、指示された文字数の制御が不正確になる。モデルのトレーニング方法も影響している。

ChatGPTが推論中につぶやいていた内容

生成AIが日本語の文字数を正確に数えられない理由はいくつか考えられます。以下に主な理由を挙げます。

トークン単位での処理
 生成AI(例:ChatGPT)は、文章を「トークン」という単位で処理しています。英語の場合、1単語が1トークンに近いですが、日本語は単語の区切りが明確でない上、ひらがなや漢字、カタカナが混在するため、1文字が1トークンとは限らず、場合によっては1文字が2~3トークンとしてカウントされることもあります。そのため、ユーザーが「◯◯文字で」という指示を出しても、モデル内部ではトークン数で処理されるため、実際の文字数とずれが生じやすいのです。​
ai-marketcap.com
予測生成の仕組み
 生成AIは、次に来る語句や文字を確率的に予測して文章を生成します。これはあくまで「意味のある文章」を作るためのものであり、文字数を厳密に制御する設計ではありません。そのため、指定した文字数に対して「足りなくなる」または「余分になる」結果が出やすくなります。​
miralab.co.jp
トレーニングデータと目的
 これらのモデルは大量のテキストデータで訓練されており、正確な文字数管理を目的としていないため、ユーザーの細かい「文字数指定」の要望に対して、必ずしも精密に従う設計になっていません。文章の質や自然な対話を重視するため、結果として指定の文字数を厳密に守れないケースが発生します。​
aitechworld.info

まとめると、生成AIは内部処理がトークン単位で行われること、予測生成の仕組みによる不確実性、そして訓練目的が文字数の厳密な管理ではないことから、日本語の「◯◯文字で」という指示に対して、期待通りの文字数を常に生成できないという現状があります。

ChatGPTの出力

どうすれば文字数を守れるか?

それでは期待どおりの文字数で文章を書かせるには、どのように指示をしたらよいのだろうか

私の入力

指示の工夫を模索する
AIに期待する文字数で文章を書くよう指示する方法を探している。特定の範囲を指定し、出力をカウントして調整する。部分ごとに指示するなど、いくつかの工夫を試している。

具体的な指示の重要性
ChatGPTが文字数指定を守れない問題に対し、設定した下限と上限を設け、出力をカウントして修正を促す指示が効果的だとされています。

ChatGPTが推論中につぶやいていた内容

期待通りの文字数で文章を生成させるためには、以下のような工夫とプロンプト設計が有効です。
下限と上限を明確に指定する
 単に「◯◯文字以内」ではなく、「150文字以上200文字以内」といった具合に、下限と上限の範囲を指定することで、生成する文章がその範囲に収まりやすくなります。これは、AIが確率的に次の単語を予測する際の自由度をある程度制約できるためです。
生成前後の文字数チェックを促す
 プロンプトに「まず生成した文章の文字数をカウントしてください。もし指定した範囲から外れている場合は、追加または削除して調整してください」といった自己検証の指示を入れると、ユーザーとAIの間で文字数に対する認識のずれを修正しやすくなります。
段階的な生成とフィードバックの活用
 一度に全体の文章を生成させるのではなく、複数のパートに分割して生成させ、その都度文字数を確認しながら調整する方法も有効です。たとえば、まず「導入部分」を生成させ、文字数が目標に近いか確認し、次に「本文」や「結論」といった具合に段階的に指示を出すと、全体として精度の高い文字数制御が可能になります。
具体的なプロンプト例の提示
 例としては、
 「以下のテーマについて、150文字以上200文字以内で文章を作成してください。生成後、まず文章の文字数を確認し、もし指定範囲外であれば、必要な部分を追加または削除して、最終的にその範囲に収まるように調整してください。」
 このように、目的、範囲、そして自己チェックと修正のプロセスを明記することで、より期待に近い結果が得られる可能性が高まります。

これらの方法を組み合わせることで、生成AIが文字数の指定に対してより厳密に従うよう促すことができ、期待どおりの文章を得やすくなります。

ChatGPTの出力

というのがChatGPTの提案してきた結論だ

だけど、実際にこの方法を実行してみても、なかなか守られず
どないしたらええねん?

いいなと思ったら応援しよう!