5

膨大なデータを含むデータベース テーブルを指定する場合、次のようなノイズ テキストを削除するベスト プラクティスは何ですか。

  • フフフフフフグ
  • qsdqsdqsd
  • ちびちび

そのノイズは「名前」フィールドに保存されます。

私は Java 標準構造のデータに取り組んでいます。

4

9 に答える 9

8

そのようなものを取り除くことは、思ったほど簡単ではありません。

私たち人間にとって、「djkhfkjh」が意味をなさないことは簡単にわかります。しかし、コンピューターはこの種のノイズをどのように検出するのでしょうか? 「Eyjafjallajökull」が誰かがキーボードを叩いているだけだとか、ここ数年で最も騒がれている山だとどうしてわかるでしょうか?

多くの偽陽性がなければ、これを確実に行うことはできないため、結局のところ、偽陽性と真陽性を手動で再度フィルタリングしています。

于 2010-05-13T13:33:25.270 に答える
7

さて、NLP メソッドを使用して分類器を構築し、ノイズとノイズ以外の例でトレーニングすることができます。その一例として、Apache Tika の言語検出機能があります。言語検出器が「私を打ち負かす」と言うなら、それで十分かもしれません。

于 2010-05-13T13:29:02.147 に答える
3

見つけられる限り多くの名前を持つ辞書を取得し、データをフィルタリングして、辞書にないものを表示します。次に、有効なデータを削除しないように、それらを 1 つずつ削除する必要があります。リストを名前で並べ替えると、一度により多くの行を削除するのに役立ちます。

于 2010-05-13T13:28:15.360 に答える
2

残りのテキストが英語の場合は、単語リストを使用できます。テキスト内の特定のパーセンテージ (たとえば 50%) を超える単語が単語リストにない場合、それはおそらくノイズです。

「LOL」のような投稿を削除しないように、たとえば 5 単語のしきい値を設定するとよいでしょう。

aspellほとんどの Linux インストールでは、次のようにスペル チェッカーから単語リストを抽出できます。

aspell --lang en dump master
于 2010-05-13T13:30:57.803 に答える
2

「ノイズ テキスト」をより効果的に定義することから始める必要があります。ここで問題を定義するのは難しい部分です。「_____ のような文字列を取り除く」というようなコードを書くことはできません。あなたが特定したパターンは、「連続した 3 つの文字の一貫したセットであり、セットは少なくとも 1 回繰り返されますが、きれいに終了しない可能性があります (セットの途中の文字で終了する可能性があります)」のようです。

次に、そのパターンに一致する正規表現を作成してテストします。

でも、他にもお探しのパターンがあると思います...

于 2010-05-13T13:31:07.903 に答える
2

各単語を検査し、冗長性がどの程度あるかを確認します。連続して繰り返される文字グループが 3 つ以上ある場合は、ノイズの良い候補です。また、通常は一緒に属さない文字のグループや、キーボード上でも連続している連続した文字のグループを探します。単語全体がキーボードの隣にあるような文字で構成されている場合、ノイズ リストのスポットも主張します。

于 2010-05-13T13:35:40.057 に答える
1

NLP 分類器をトレーニングするのがおそらく最善の方法でしょう。ただし、より簡単な方法は、既知のすべての「有効な」単語のリストに各単語が存在することを確認することです。ほとんどの Unix システムには、この目的で使用できる /usr/share/dict/words というファイルがあります。さらに、Ubuntu はこれを /usr/share/dict/american-english、/usr/share/dict/american-huge、および /usr/share/dict/american-insane で拡張します。それぞれのリストは前回よりも包括的です。これらのリストには多くの一般的なスペルミスも含まれているため、技術的には単語ではないものの、単語として明確に認識できるテキストを除外することはありません。

あなたが本当に野心的であれば、これらのアプローチを組み合わせて、これらの単語リストを使用して、ベイジアン分類器または最大エントロピー分類器をトレーニングできます。

于 2010-05-13T13:47:11.067 に答える
1

ここにはたくさんの良い答えがあります。どちらがうまくいくかは、問題の詳細に大きく依存します。たとえば、入力が英単語、ユーザー名、人の姓などであると想定されている場合などです。

1 つのアプローチ: 「有効な」入力と見なされるものを分析するプログラムを作成します。考えられるすべての 3 文字シーケンスが正当なテキストにどのくらいの頻度で出現するかを追跡します。次に、確認する入力がある場合は、入力の 3 文字のシーケンスをそれぞれ見て、予想される頻度を調べます。「xzt」のようなものは、おそらくゼロに近い周波数を持っています。そのようなサブシーケンスが多すぎる場合は、ゴミとしてマークしてください。

これに関する問題:

  1. たとえば、誰かが単語の「q」の後に「u」を付け忘れた場合など、スペルの誤りをゴミとして扱う可能性があります。
  2. 「thethethethe」のような入力はキャッチされません。
于 2010-05-13T13:51:09.530 に答える
0

例 #1 と #2 は、テキストの発音方法を理解しようとするパーサーによって削除できます。言語に関係なく、それらは話すことができないため、言葉ではありません。

于 2010-05-13T23:46:35.043 に答える