8
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?

Qiita株式会社Advent Calendar 2023

Day 8

textlintでtypo検出を賢くできないかを試してみている

Last updated at Posted at 2023-12-07

この記事は、Qiita株式会社のカレンダー | Advent Calendar 2023 - Qiitaの8日目の記事です。


textlintでtypo検出を賢くできないかを試しているので、それについて紹介します。

解決したい課題

textlintでtypoを検出できるルールの代表として以下があります。

いずれも、

abandonned->abandoned
aberation->aberration
abilityes->abilities
abilties->abilities
abilty->ability

のように正誤の辞書があり、それにマッチしなければtypoを検出することができません。

(もしかしたら、僕が見つけれていないだけで既にあるかもしれません)

また、新しいtypoが出てきた際に辞書に追加していく手間もあります。

そのため、未知のtypoがあったとしても正しい単語の辞書だけで検出したいと思いました。

やったこと

fuzzy finderのように正しい単語にある程度近い場合は、typoの恐れがあるとして検出するようにしてみました。

正しい単語と似ているかにはレーベンシュタイン距離を使い、一定の距離よりも近い場合はtypoとするようにしました。

そして、試しにつくったtextlint ruleは以下です。

現時点では、以下のように.textlintrc.jsonを設定することで使えます。

{
  "rules": {
    "typo-detection": {
      "dictionary": ["world", "word"]
    }
  }
}

ですが、日本語の単語より英単語のほうが1単語あたりの文字数が多いことがあるため、typoかどうかを決めるほどよい距離のしきい値を決めるのが難しいなと感じています。
また、文章を単語に区切るのにword boundaryを使っているため、複数単語をあわせたもの(例: Google Cloudなど)での検出ができないのが現状です。

最後に

もう少し改良ができそうとは思っているので、気長に改良していければと思います。
また、Pull Requestやコメント等いただけると嬉しいです!


記事を読んでいただきありがとうございます!
ぜひ、Qiita株式会社のカレンダー | Advent Calendar 2023 - Qiitaを購読設定して、明日の記事もご覧いただけると嬉しいです。

8
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
8
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?