2011-12-08 24 views
-1

私は自分のストップワードの削除を書くために何か手がかりがあるのだろうかと疑問に思います。私はHashSetを作成した後、外部ライブラリを使用したくありません。テキストの停止単語?もう一度、私は任意の外部ライブラリを使用したいと思います。javaでのストップワードの削除

+0

[this]のようなものが必要ですか?(http://www.textfixer.com/resources/common-english-words.txt) – chance

+0

ファイルまたはリソースからストップワードを読むことができます。 – Ingo

+1

私はあなたの質問が何であるかは分かりません。ストップワードが何であるか計算したいのですか、あるいはあなたが定義したものをセットに追加するより速い方法が必要なのでしょうか? – Thomas

答えて

2

ファイルから読み込みます。単語1行につき1行。あなたがストップワードのセットと、あなたがからストップワードを削除したい単語のリストを持っている場合は

Set<String> stopWords = new LinkedHashSet<String>(); 
BufferedReader br = new BufferedReader(new FileReader("stop-words.txt")); 
for(String line;(line = br.readLine()) != null;) 
    stopWords.add(line.trim()); 
br.close(); 

if(stopWords.contains(word)) 
    // it's a stop word 
else 
    // it's not a stop word. 
+0

+1リンク@chanceを使用すると、それらを1行に入れ、セパレータとして '、'を使って分割する必要があります。しかし、それはファイルのコンテンツのちょうど別のフォーマットです:) – Thomas

+0

そのようなHashSetを作成した後、それをどのように動作させるのでしょうか? – seventeen

+0

@MostafaAlli私はセットを使用する例を追加しました。 –

1

、単にリストを反復処理し、設定ストップワードに含まれている任意の言葉削除:

Set<String> stopWords = new HashSet<String>(); 
//fill stopWords 

//use a linked list to make removal faster, you don't need random access here 
List<String> text = new LinkedList<String>(); 
//fill text 

Iterator<String> textIterator = text.iterator(); 
while(textIterator.hasNext()) { 
    //this assumes there are no null entries in the list  
    //and all stopwords are stored in lower case 
    if(stopWords.contains(textIterator.next().toLowerCase())) { 
    textIterator.remove(); 
    } 
} 
+0

よろしく!それは私が何を意味しているかのように見えます:) – seventeen

0

よく単語を削除する方法の一般的な考え方は、入力テキストを単語に分割してから、ストップワードマップの各単語を検索することです。ストップワードの参照は、おそらく大文字と小文字を区別する必要があります。

詳細は、テキストの内容とその処理内容によって異なります。

+0

私は知っていますが、ストップワードが見つかったときに、テキストから取り除く方法は? – seventeen

+0

@MostafaAlli - あなたは単語からテキストを戻すときにそれを含めないことでテキストから取り除きます。私の答えを見てください。 –