0

在信息检索中,倒排索引的条目是语料库的单词,每个单词都有一个发布列表,即它出现的文档列表。

如果应用了词干,索引条目将是一个词干,因此如果多个词共享同一个词干,它们最终可能会映射到同一个词条。例如:

没有词干:

(slowing) --> [D1, D5, D9,...]

(slower) --> [D9, D10, D20,...]

(slow) --> [D2,...]

使用词干:

(slow) --> [D1, D2, D5, D9, , D10, D20...]

我想避免词干,而是想将我的倒排索引中的每个条目作为一个词袋(变形),例如(慢,慢,慢,慢,慢,最慢)。例如:

(slow, slows, slowing, slowed, slower, slowest) --> [D1, D2, D5, D9, , D10, D20...]

这是否可能和可行?

提前致谢

4

1 回答 1

0

简短的回答: 简单地避免词干以适应您不考虑slowslows匹配的需要。

长答案:

问题: I want to avoid stemming, and instead would like to make each entry in my inverted index as a bag of words (inflections) such as (slow, slows, slowing, slowed, slower, slowest).

让我尝试消除您对倒排列表的一些困惑。它是存储在每个术语的过帐中的文档(而不是术语本身)。

这些词通常存储在内存字典中(使用哈希表或 trie 实现),其中包含指向从辅助存储中动态存储和加载的帖子(包含该特定术语的文档列表)的指针。

一个简单的例子(不显示文档权重):

(information) --> [D1, D5, D9,...] (informative) --> [D9, D10, D20,...] (retrieval) --> [D1, D9, D17,...] ..

因此,如果您不想应用词干提取,那很好......事实上,上面的示例显示了一个未提取词干的索引,其中单词informationinformative出现在它们的非合并形式中。在合并的术语索引(使用词干分析器或词形还原器)中,您可以用等效的表示形式(例如inform)替换不同的形式。在这种情况下,索引将是:

(inform) --> [D1, D5, D9, D10, D20...]. --- union of the different forms (retrieval) --> [D1, D9, D17,...] ..

因此,这种混合表示匹配单词的所有可能形式information,例如informativeinformational等等。

更长的答案

现在假设您想要实现两全其美,即允许这种合并以用户控制的方式完成的表示,例如wrapping a word around quotes to denote requiring an exact match (“slow” vs.slow in the query), or some indicator to include synonyms for a query term for semantic search (e.g.syn(slow)` 包含单词slow 的同义词)。

为此,您需要为未合并的单词维护单独的帖子,并equivalence indicating pointers在一组equivalent (stem relation/synonym relation/ semantic relation etc.)术语之间维护额外的内容。

回到我们的例子,你会得到类似的东西:

(E1)-->(information) --> [D1, D5, D9,...]
 |---->(informative) --> [D9, D10, D20,...]
 |---->(data) --> [D20, D23, D25,...]


(E2)-->(retrieval) --> [D1, D9, D17,...]
 |---->(search) --> [D20, D30, D31,...]

..

information, data...在这里,我展示了两组术语和的等价类(概念表示)的两个示例retrieval, search...。根据查询语法,可以在检索时促进精确搜索或轻松搜索(基于变形/同义词等)

于 2020-04-08T10:52:42.860 回答