如何在Java中去除停用词?

3

我希望在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();

我想要读取另一个文本文件。

所以,我想要在文本文件中去除重复的字符串。

我该怎么做?

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

对于输入的txt文件,可以使用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

使用 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;
}

希望这能有所帮助。

不完全是问题所问的,但我认为它对我有帮助,所以谢谢。 - KBusc

1

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

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

现在您拥有包含文件所有唯一单词的集合。


0

3
如何使用StringTokenizer去除重复项? - Sri Harsha Chilakapati

0
如果您只想从文件中的单词中删除某个特定词语,那么您可以使用任何方法来实现。但是,如果您正在处理涉及自然语言处理的问题,则应使用库。
例如,使用 Lucene 进行标记化一开始可能会更加复杂,但它将处理您将忽略的各种复杂性,并且允许在您更改有关特定停用词、标记化方式、大小写是否敏感等方面时具有很大的灵活性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接