tech.guitarrapc.cóm

Technical updates

textlintでAI的な文章になっていないかチェックする

以前、GitHubとはてなブログを連動させる話を書きました。この時からtextlintを使って文章のチェックを行っています。 先日、AIが生成したような文章を避けるためのルールセットが公開されていることを知ったので適用してみました。

textlint-rule-preset-ai-writing

textlintのルールセットに、textlint-ja/textlint-rule-preset-ai-writingがあります。これを使うと、AIがよく使う表現をチェックできます。例えば、絵文字の多用、大げさな表現、不必要に丁寧な表現がある場合、警告になります。

利用するには、npmでインストールしてからtextlintのコンフィグ.textlintrcpreset-ai-writingルールを追加します。

{
  "rules": {
    "preset-ai-writing": true
  }
}

VSCodeのtextlint拡張を入れていると、リアルタイムに文章をチェックしてくれてオススメです。

適用してみた結果

このブログは2012年~2025年まで記事があるのですが、すべてに対してtextlintが効いています。ということで、全記事に対してルールを適用したところ200記事以上でヒットしました。自分の文章の癖が出てて面白い反面、AIじゃなくても冗長な表現をしているようです。私は自分で文章を書いているのですが、読んだ本や記事で絵文字を使って表現するの分かりやすいと思って取り入れた部分が判定引っかかったりしていて、なるほどでした。

私の文章で特に多かった指摘内容は次の通りです。

〇〇の必要がありますのような冗長な義務表現

一番多く引っかかったのがこれです。

私は「〇〇の必要があります」という表現をよく使う癖があるようです。確かに冗長なので必要がありますしますに変えています。 直しながら読み返していたんですが、どの文章でも必要が...という表現は無駄でした。もう使わない。

# 【簡潔性】冗長な義務表現が検出されました。「してください」または「します」への直接的な表現を検討してください。 (ai-writing/ai-tech-writing-guideline)textlint(ai-writing/ai-tech-writing-guideline)

- 操作する必要があります
+ 操作します

必要に応じてのようなあいまいな条件表現

次に多かったのがこれです。

「こうしたほうがいいですよ。でも事情があってやらないケースもあるだろう」と考えたとき、必要に応じて適切にという表現を使いがちです。ただ、このあいまいさは伝えたいことには不要だったので消しました。必要に応じるかどうかは、読者が判断することなのでいちいち書く必要ないんですね。

# 【具体性】曖昧な条件表現が検出されました。どのような状況で必要なのか、具体的な判断基準の明示を検討してください。 (ai-writing/ai-tech-writing-guideline)textlint(ai-writing/ai-tech-writing-guideline)

- 必要に応じてグループ化します。
+ グループ化します。

大幅に完全にのような誇張表現

大量に引っかかりました。いわれてみたらAIって本当に誇張表現が多いのでたしかに。GPT 5.2で性格が導入されたので、シンプルな表現をする性格を選ぶとこういう表現は減っている気がします。

副作用で完全に理解したという表現も引っかかりました。当時のミームを思い返しつつ、素直に消しています。

# 「大幅に」という表現は誇張的である可能性があります。具体的な数値や割合を示すことを検討してください。 (ai-writing/no-ai-hype-expressions)textlint(ai-writing/no-ai-hype-expressions)

- 大幅に所要時間が短縮
+ 所要時間が短縮

- 完全に制御下における
+ 制御下における

リストを絵文字でプレフィックス表現

.NETのクラスライブラリ設計では、DOやAVOIDなどを絵文字で表現しています。これが好きで真似をしていたのですが引っかかりました。確かにAIが作る文章でよく見かけるのでしょうがない。

# リストアイテムでの絵文字「📝」の使用は、読み手によっては機械的な印象を与える場合があります。テキストベースの表現も検討してみてください。 (ai-writing/no-ai-list-formatting)textlint(ai-writing/no-ai-list-formatting)

- * 📝: 機能としてのメモ項目
- * 👍: Wiki機能に対してよいと感じた項目
- * 🙅: 触った感触が微妙な項目

+ * MEMO: 機能としてのメモ項目
+ * GOOD: Wiki機能に対してよいと感じた項目
+ * BAD: 触った感触が微妙な項目

boldな語句だけの行

2,3か所引っかかりました。確かにAIがよく作る文章でも同じ表現をよく見ます。文章を書いててまとめきれず表現に悩んで使ったのですが、文章にするよう変更しました。

# 「**例**」のような太字の情報プレフィックスは機械的な印象を与える可能性があります。より自然な表現を検討してください。 (ai-writing/no-ai-emphasis-patterns)textlint(ai-writing/no-ai-emphasis-patterns)

- **例**
- 以下文章は...
+ 例えば、以下文章...

受動的で抽象的な表現

〇〇が行われていたようように、適当な文章を書いてしまう癖があるようです。確かにやっていた、という表現で十分なので直しました。 日本語むずすぎる。

# 【明確性】受動的で抽象的な表現が検出されました。具体的な動詞を使った能動態への変更を検討してください(例:「実行する」「処理する」)。 (ai-writing/ai-tech-writing-guideline)textlint(ai-writing/ai-tech-writing-guideline)

- が行われていたようです。
+ がありました。

まとめ

警告がなくなるまで粛々と直しました。気づいていなかったので指摘されて嬉しいです。これからもtextlintで自分の文章をチェックして、より良い文章を書けるようにしていきます。

ところで、2023年以降、AIっぽいと感じる記事をたびたび見かけますが、自分の文章はAI使っていないのに変な文章でした。日本語をうまくなりたいです。

参考