textlintのルールを色々書いていて自然言語のマッチの問題がいくつかありました。 textlint-ja/textlint-rule-preset-JTF-style: JTF日本語標準スタイルガイド for textlint.は基本的に正規表現をベースに実装していました。 正規表現で自然言語に対してマッチするのは簡単でいいのですが、意図しない範囲にマッチすることもあるためfalse-positiveになりやすい問題がありました。 一方、ですます or である調の混在をチェックするtextlint-rule-no-mix-dearu-desumasuでは、kuromoji.jsなどで形態素解析した結果を使っています。 形態素解析をすることで(正しい日本語なら)より正確にマッチできます。 しかし、形態素解析のトークンに対してマッチする処理やその情報を元に置換するのは結構面倒です。 kur