如何判断一个单词在文本中是否毫无意义?

时间:2013-09-29 16:17:39

标签: java rss hashmap nlp search-engine

我正在用Java创建一个迷你搜索引擎,它基本上抓取用户指定的所有RSS提要,然后允许他或她选择一个单词来搜索。由于RSS feed文档的数量相当有限,我正在考虑在用户输入他或她的搜索词之前先处理文档。我想通过创建将某些关键字链接到包含文章本身的记录集合以及单词在文章中出现的次数来创建散列图来处理它们。但是,我如何确定关键字?我怎么知道哪些词没有意义,哪些不是?

4 个答案:

答案 0 :(得分:1)

Solr中,我认为这些被称为“停用词”。

我相信他们只是使用text file来定义他们不会搜索的所有字词。

答案 1 :(得分:1)

“我应该忽略哪些词?”的概念。通常被称为停用词。最好的搜索引擎不使用停用词。如果我是乐队“The The”的粉丝,如果你的搜索引擎找不到它,我会感到沮丧。此外,搜索确切的短语可能会被一个天真的停用词实现搞砸。

顺便说一下,你所谈论的hashmap被称为倒排索引。我建议您阅读这本(免费在线)书籍,了解搜索引擎的构建方式:http://nlp.stanford.edu/IR-book/information-retrieval-book.html

答案 2 :(得分:1)

小提取物。来自NLTK from Ch. 2的停用词:

  

还有一个停用词语,即高频词   喜欢,也有,我们有时想过滤掉一个   进一步处理前的文件。关键词通常很少   词汇内容,以及它们在文本中的存在无法区分它   来自其他文本。

>>> from nltk.corpus import stopwords
>>> stopwords.words('english')
['a', "a's", 'able', 'about', 'above', 'according', 'accordingly', 'across',
'actually', 'after', 'afterwards', 'again', 'against', "ain't", 'all', 'allow',
'allows', 'almost', 'alone', 'along', 'already', 'also', 'although', 'always', ...]

答案 3 :(得分:0)

停用词是你应该使用的一件事。网上有很多禁用词汇表。

但是我正在写一个答案,因为之前的答案没有提到TF-IDF,这是衡量一个词在你的文档语境中的重要程度的指标。

如果一个单词在文档中出现很多(术语频率)并且在其他文档中不经常出现(反向文档频率),则该单词更可能是文档中的关键词。这样,像a,the,where这样的单词自然会被忽略,因为它们出现在每个文档中。

P.S。在相关主题上,您可能会对其他列表感兴趣,即脏话:) P.P.S.哈希映射是一件好事,但你也应该为你的任务检查后缀树。