0

次の文字列のトークン化または単語の分割とノイズの除去を行うのに役立つJavaベースの言語ユーティリティがいくつかあるのではないかと思います

文字列の場合

Friday's meeting is wonderful

期待される結果は一連の単語になります

Friday meeting wonderful

と が削除された場所

そして文字列の場合

I went to the farmer's market 

期待される結果は言葉になる

went farmer market

I、to、the、および が削除された場所

4

5 に答える 5

1

この問題に対する一般的な解決策はありません。なぜなら、(少なくとも)あなたの「ノイズ」の概念は明確に定義されていないからです...そしておそらく他の人々とは異なっています。

私がこれを実装している場合(そして私はあなたの「ノイズ」の概念に同意しました)、私は次のようになります。

  1. 空白と受け入れられた句読点を区切り文字として使用してトークン化します。
  2. 引用符を削除する
  3. 使徒職を取り除く
  4. ハイフンを正規化します(おそらくハイフンを削除するだけです)
  5. ストップワードフィルターを使用して、「ノイズ」ワードを取り除きます。

つまり、これを行うには、重要な量のコードを作成する必要があります。


もちろん、「ノイズ」の単語を取り除くことは、テキストの適切な意味分析に関連する情報を取り除くことです。(「私はボールを打った」と「あなたはボールを打った」は異なることを言っています。)

于 2012-06-04T01:15:02.150 に答える
1

以前、 Stanford Parserで遊んだことがあります。これは、ほとんどの目的で十分な結果が得られる NLP エンジンです。どの種類の単語を保持したいかを具体的に選択する際に、多くの力を与えてくれます。

オンラインデモ

于 2012-06-04T03:31:32.340 に答える
0

もしかしてこれ見てみ?String Tokenizer クラスがあることも知っていますが、それを目的に使用するのは難しいかもしれません。

http://docs.oracle.com/javase/7/docs/api/java/text/Normalizer.html

于 2012-06-04T00:28:23.427 に答える
0

すぐに使用できるユーティリティについては知りませんが、これを見てください - Java の別の文字列から文字列を削除する. これが多少役立つことを願っています。

于 2012-06-04T00:40:06.027 に答える
-2

おそらくこれは最善の解決策ではありませんが、String クラスの replaceAll メソッドを使用して、ノイズを空の String に置き換えることができます。

たとえば、次のようなものです: line.replaceAll("'s", "");

于 2012-06-04T00:22:45.427 に答える