1

単語が辞書に存在するかどうかをフィルタリングしてチェックするプログラムを作成しています。問題は、単語に繰り返し文字があるかどうかを知る方法です。

例えば:

string string1 = "sorrrrrrry";

その文字列は辞書に存在しませんが、繰り返しの r を削除すると「申し訳ありません」になります。

hunspell を使用して、単語が辞書に存在するかどうかを確認しています。解決策を教えてください。前もって感謝します

4

3 に答える 3

2

あなたの場合、あなたができることは次のとおりです。

  • 繰り返される文字を置き換えますが、2 =>「申し訳ありません
  • その単語が辞書にあるかどうかを調べる
  • そうでない場合は、繰り返される 2 文字を 1 文字に置き換えます => " sory " (たとえば " caat " がある場合)
  • その単語が辞書にあるかどうかを調べる

正規表現(\w)\1+(繰り返し文字に一致)を使用し、最初に$1$1(2つの繰り返し一致した文字)と$1

string input = "sorrrrrrry";
Regex regex = new Regex(@"(\w)\1+");

string replacement = "$1$1";
string res = regex.Replace(input, replacement);
Console.WriteLine(res);
//will output => sorry

replacement = "$1";
res = regex.Replace(input, replacement);
Console.WriteLine(res);
//will output => sory

警告 これにより、いくつかの結果が得られる可能性がありますが、いくつかの制限があり、予期しない結果が生じる可能性があります

  • 2 つ以上の文字が繰り返される場合は、すべての組み合わせを処理する必要があります。「 soooorrrry 」がある場合は、1.「soorry」と 2.「sory 」が返されるため、アルゴリズムは機能しません
  • "goooood" の場合はどうすればよいですか。それは "good" または "god" ですか?
于 2013-06-06T14:42:36.907 に答える
0

いくつかのファジー論理法によって、どの単語が辞書に一致するかを推測することしかできず、複数が見つかった場合はリストが表示されます。

おそらく、スマートフォンのキーボードがどのようにあなたを助けようとしているのかご存知でしょう。

この方法は、後ではなく、多かれ少なかれ適切な方法です(入力中)。

しかし、後も可能ですが、より多くの努力が必要です。

于 2013-06-06T14:13:31.090 に答える
0

辞書を Lucene.Net に保存し、その緩やかな一致機能を使用して単語を一致させることを検討することをお勧めします。

于 2013-06-06T14:48:51.633 に答える