Journal

長文を書かせると敬語から壊れる

ミニPCで軽い量子化モデルを回していると、遅さより先に気になるものがあります。長文を書かせたときの日本語です。最初の数段落はそこそこ整っているのに、途中から急に文末がほどけます。敬語で走っていたはずの文章に、素の動詞が一つだけ混ざります。それだけで私はかなり冷めます。

以前、Ryzen 7 5700UとRAM 12GBのミニPCで、Llama 3 8Bのq4_K_Mにブログの下書きを長めに書かせたことがあります。ブラウザを何枚か開いたままだと生成は1トークン1.5秒くらいまで落ちましたが、待つこと自体は別に平気でした。しんどかったのは速度ではありませんでした。五段落目あたりから敬語が崩れ、”進んでいます”の列に”進んでいる”が混ざり始めたことでした。

遅さより先に気になる崩れ

この崩れは、日本語の読者にはかなり目立ちます。内容が正しいかどうかより先に、書き手が途中で別人になった感じが出ます。英語だと多少の揺れは勢いで読めることがありますが、日本語の敬語はそうはいきません。文末の一文字二文字で、温度も距離感も全部ずれます。

しかも厄介なのは、モデルがまったく破綻しているようには見えないことです。漢字も語順もだいたい合っています。だから流し読みすると通ってしまいます。けれど、読んでいて手が止まる箇所はだいたい同じです。”かかる”、”増える”、”変わる”のような、素の形に戻りやすい動詞のところです。日本語が下手というより、集中が切れた人の文章に近いです。

私はこの癖を見るたびに、生成AIの文章が人間に勝てない理由は知識量ではなく文末にあるのではないかと思います。言いすぎかもしれませんが、少なくともブログではそうです。主張そのものより、どの距離感で読者に話しかけているかのほうが先に伝わります。そこが崩れると、中身まで雑に見えてしまいます。

文末だけは自分で握る

だから最近は、下書きを全部まかせるより、荒い材料だけ出させて文末は自分で触ります。構成や言い換え候補はAIに投げてもかまいませんが、最後の整えを渡しきる気にはなれません。あの部分は文章の仕上げというより、書き手の手つきそのものだからです。

雑に見るためのチェックなら、自動でも十分です。たとえば下のような短いPythonなら、です・ます調から外れた文をざっと拾えます。

docker run --rm -i python:3.12-alpine python - <<'PY'
import re, sys
text = sys.stdin.read()
polite = re.compile(r'(です|ます|でした|ました|ません|ましょう|でしょう)[。!?]?$')
for s in re.findall(r'[^。!?]+[。!?]?', text):
    s = s.strip()
    if s and not polite.search(s):
        print(s)
PY

もちろん、これで良い文章になるわけではありません。ですが、読者に最初にばれる雑さはかなり減ります。AIに本質を手伝わせるなら、まずこういうところからだと思います。フレームワークを増やすより、読む側が引っかかる一点を潰すほうが効きます。

バイブコーディングで見た目だけそれっぽいアプリを量産しても、最後は手元に壊れたものが残ります。文章も同じです。自分で直せない人が下書き生成だけを武器にしても、結局は自分の違和感すら読めません。逆に、どこが変か分かる人にとっては、AIは雑務を押し出す道具としてかなり便利です。

私はたぶん、これからもしばらくはそう使います。骨組みは借ります。けれど、読者と目が合う文末だけは、自分の指で戻します。

Previous