-1

我想知道是否有任何线索如何开始编写我自己的停用词删除,而我不想使用任何外部库。在创建 HashSet 之后,我们如何才能将其用于删除文本的停用词?一次同样,我不想使用任何外部库。

4

3 回答 3

2

我会从文件中读取它们。每个单词一行。

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.
于 2011-12-08T10:33:47.933 回答
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();
  }
}
于 2011-12-08T10:47:58.987 回答
0

那么如何进行停用词删除的一般想法是将输入文本拆分为单词,然后在停用词映射中查找每个单词。停用词查找可能需要不区分大小写。

详细信息将根据文本是什么以及您要如何处理而有所不同。

于 2011-12-08T10:48:20.760 回答