如何删除java中的停用词?

时间:2012-09-18 01:50:18

标签: java stop-words

我想删除java中的停用词。

所以,我从文本文件中读取停用词。

并存储Set

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

而且,我读了另一个文本文件。

所以,我想删除文本文件中的字符串。

我该怎么办?

6 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;
}

希望这有帮助。

答案 2 :(得分:1)

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

  • 阅读文件
  • 循环浏览文件内容(即一次一行)
    • 根据空格
    • 为该行设置字符串标记器
    • 将每个令牌添加到您的集合中。这将确保每个单词只有一个条目。
    • 关闭文件

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

答案 3 :(得分:0)

您应该尝试使用StringTokenizer

答案 4 :(得分:0)

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

例如,使用Lucene进行标记化起初看起来会更复杂,但是它会处理您将忽略的无数复杂情况,并且如果您改变主意关于具体的停用词,如何改进无论你是否关心案件等等,都是令人信服的。

答案 5 :(得分:0)

它可能是迟到的回复,希望它可以帮助几天后创建小的util库来删除给定文本中的stop / stemmer单词及其在maven repository / github

exude library