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作为停用词:

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();

和 ArrayList 用于输入 txt_file

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

使用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 回答
1

您想从文件中删除重复的单词,下面是相同的高级逻辑。

  • 读取文件
  • 循环遍历文件内容(即一次一行)
    • 有基于空间的该行的字符串标记器
    • 将每个令牌添加到您的集合中。这将确保每个单词只有一个条目。
    • 关闭文件

现在您已经设置了包含文件的所有唯一字。

于 2012-09-18T02:40:21.670 回答
0

您应该尝试使用StringTokenizer.

于 2012-09-18T01:53:30.927 回答
0

如果您只是想从文件中的单词中删除某组单词,您可以随心所欲地进行操作。但是,如果您正在处理涉及自然语言处理的问题,则应该使用库。

例如,使用Lucene进行标记化一开始看起来会更复杂,但它会处理您会忽略的无数复杂情况,并且如果您改变对特定停用词、标记化方式、是否关心的想法,它会提供很大的灵活性关于案件等

于 2012-09-18T02:00:03.183 回答