3

Javaでストップワードを削除したい。

そこで、テキストファイルからストップワードを読み取りました。

とストアセット

Set<String> stopWords = new LinkedHashSet<String>();
BufferedReader br = new BufferedReader(new FileReader("stopwords.txt"));
        String words = null;
        while( (words = br.readLine()) != null) {
            stopWords.add(words.trim());
            }
        br.close();

そして、別のテキストファイルを読みました。

だから、テキストファイル内の重複する文字列を削除したい。

どうやって?

4

5 に答える 5

5

ストップワードのセットを使用:

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

および入力txt_fileのArrayList

BufferedReader br = new BufferedReader(new FileReader(txt_file.txt));
//make your arraylist here

// function deletStopWord() for remove all stopword in your "stopword.txt"
public ArrayList<String> deletStopWord(Set stopWords,ArrayList arraylist){
        System.out.println(stopWords.contains("?"));
        ArrayList<String> NewList = new ArrayList<String>();
        int i=3;
        while(i < arraylist.size() ){
            if(!stopWords.contains(arraylist.get(i))){
                NewList.add((String) arraylist.get(i));
            }
            i++;        
            }
        System.out.println(NewList);
        return NewList;
    }

  arraylist=deletStopWord(stopWords,arraylist);
于 2012-12-14T13:05:07.507 に答える
1

ファイルから重複した単語を削除したい場合、以下は同じための高レベルのロジックです。

  • ファイルの読み取り
  • ファイルの内容をループします (つまり、一度に 1 行ずつ)
    • スペースに基づいてその行の文字列トークナイザーを用意する
    • それぞれのトークンをセットに追加します。これにより、単語ごとに 1 つのエントリしかないことが保証されます。
    • ファイルを閉じる

これで、ファイルのすべての一意の単語を含むセットができました。

于 2012-09-18T02:40:21.670 に答える
1

を使用すると、ArrayListより簡単になる場合があります。

public ArrayList removeDuplicates(ArrayList source){
    ArrayList<String> newList = new ArrayList<String>();
    for (int i=0; i<source.size(); i++){
        String s = source.get(i);
        if (!newList.contains(s)){
            newList.add(s);
        }
    }
    return newList;
}

お役に立てれば。

于 2012-09-18T01:56:30.130 に答える
0

を使ってみてくださいStringTokenizer

于 2012-09-18T01:53:30.927 に答える
0

ファイル内の単語から特定の単語セットを単に削除したい場合は、好きなように実行できます。しかし、自然言語処理に関する問題を扱っている場合は、ライブラリを使用する必要があります。

たとえば、トークン化にLuceneを使用すると、最初はより複雑に見えますが、見落としがちな無数の複雑さに対処でき、特定のストップワード、トークン化の方法、気にするかどうかについて気が変わった場合に、大きな柔軟性が得られます。ケースなどについて

于 2012-09-18T02:00:03.183 に答える