web-dev-qa-db-ja.com

編集距離を簡単な方法で使用して、編集をスペルミスのみに制限できますか?

小さな趣味のプロジェクトでは、ユーザーが提出物を編集できるようにすることを考えましたが、提出物は他のユーザーによって投票されるため、編集を制限して(マイナーな)スペルミスのみを修正し、できれば自然言語に依存しないようにします。

主題の暫定的な調査中に、私はこれに 距離の編集 および(ダメラウ-)レベンシュテイン距離などの関連する主題を利用するかもしれないと思いました。

これまでのところ、元の提出物全体またはのいずれかに特定の編集距離のしきい値を個々の単語に設定することについて考えました(これが理にかなっている言語の場合)。さて、私は確かに複雑な自然言語処理アルゴリズムを作成したくありませんが、特に日本語や中国語など、単一の記号を置き換えることが変更される可能性がある言語を考えると、これはあまりにも単純なアプローチだと感じています文の全体的な意味。

したがって、これらの編集距離の主題を深く掘り下げる前に、このようなものの合理的に信頼できる手段として、上記のようなかなり単純な方法で、単に編集距離を使用することさえ可能かどうかをコミュニティに尋ねたいと思いました。それは...ですか?それとも、これはあまりにも素朴で、複雑な自然言語処理アルゴリズムを作成したり、辞書全体を使用して合理的に信頼できるアプローチをとったりする必要がありますか(この場合、おそらくアイデア全体を完全に捨てます;-))?

考えてみてください。投票システムを備えた主要なサイトでこの種の機能に出くわしたことは今まで覚えていないので、おそらく自分で答えを推測できますが、念のためにとにかくお願いしたいと思いました。

4
Codifier

スペルの変更のみを編集する場合は、単語ごとに編集するため、テキスト全体に対してレーベンシュタインをチェックすることはおそらく機能しません(特に、IIRCの場合、事前に小さな変更を加えると、大きなドキュメントでの大きなノックオン効果)。

すべてのWordをsoundex(またはより良いのはダブルメタフォン)コードでエンコードし、そこで変更を許可する方がおそらく良いでしょう-ただし、コードが変更されない場合(つまり、Wordは変更される可能性がありますが、サウンドは変更されない場合のみ)元の意味から変更されていないことを合理的に確信できます。スペルだけです)。

ASpell(スペルチェッカー)プロジェクトは、メタフォンを使用して置換の提案を提供するため、スペルの変更にのみ非常に適しています。

1
gbjbaanb