0

私は数千の用語のリストを持っています。これらの用語にはかなりの重複がありますが、形式は異なります。たとえば、(ruby, a_ruby)、(triathlon、triathlete、triathletes)、(nonprofit、non_profit、non_profits) などです。

これらのほとんどは、かなりの数の文字が重複していますが、まったく同じ形式ではありません。例: (非営利および非営利)

これに最適な正規表現シーケンスは何ですか? ステミングも使用できることは知っていますが、それを正規表現とどのように組み合わせることができるか疑問に思っています。

4

3 に答える 3

2

数千項目の単一のリストについては、別のアプローチを検討します。

リストをアルファベット順に並べ替えてから、重複を手動で削除します。正規表現とその後の処理が何であれ、リストを手動で調べるのと同じくらいの時間がかかるでしょう。

もちろん、これは 1 回限りの提案だと思います。プログラムによる解決策については、正規表現の専門家に任せます。

于 2009-09-28T19:16:03.060 に答える
0

ボブ・カウフマンは、実際の重複を排除するために最初のパスを実行する必要があることに同意します。その後、正規表現では解決できない問題が発生します。編集距離の測定値を調べて、どこにでも移動できるようにする必要があります。

于 2009-09-28T19:53:43.997 に答える
0

この状況での私の通常の戦略は、完全に信頼できるわけではありませんが、次のとおりです。


1) 英数字以外の文字をすべて削除します。
2) すべての文字列を小文字にします。
3) すべての文字列を a に入れますHashSet(これにより重複が削除されます)。 4)との両方がセットに含まれている
場合を確認し、複数のものを削除します。 5) 文字列をアルファベット順に出力し、重複をすばやく手動で検索します。見つかった場合は、それに応じて新しいルールを定義します。wordword+"s"

必要なその他のルール:

  • & を and に置き換えます。
  • 「inc」のすべてのインスタンスを削除します
  • テレビのすべてのインスタンスを TV に置き換えます。
于 2009-09-28T20:04:34.163 に答える