我想知道是否有任何线索如何开始编写我自己的停用词删除,而我不想使用任何外部库。在创建 HashSet 之后,我们如何才能将其用于删除文本的停用词?一次同样,我不想使用任何外部库。
问问题
6477 次
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 回答