王莉军
(渤海大学 辽宁 锦州 121013)
Indri是开源的信息检索工程Lemur的一个子项目。Indri是一个完整的搜索引擎,支持各种不同格式文本的索引创建,提出了优秀的文档检索模型,支持结构化查询语言,在研究和实际应用领域都有比较高的价值。Indri系统采用C++语言编写,提供了方便的API供使用者调用,由于项目本身开源,对于开发者而言,也可以方便的对其进行二次开发。
Indri结合了推理网络模型 (Inference net)和语言模型(language modeling)的优点,提出了一套检索模型,其利用推理网络模型的优势来支持比较复杂的结构化查询(结构化通常指查询语言中的用来表达检索文档中词与词之间联系的operators),又利用语言模型及平滑技术对推理网络中的一些节点进行有效的预估,从而使查询得到比较好的效果[1]。这之前,单纯的推理网络模型节点的预估采用的是规格化的tf.idf(这个值与词在文档中出现的频率称正比,与包含该词的文档数成反比)权重,而单纯的语言模型则无法支持结构化查询。所以Indri检索模型采用了两种模型相结合的方式[2]。
推理网络模型网络图如图1所示,实际上是一个贝叶斯网络(Bayesian networks)。贝叶斯网络是一个有向,无环图。
网络中每个节点代表一个事件,有一个连续或者离散的结果集。每个非根节点存储了一个条件概率表,这个条件概率表完全描述了与给定父节点的情况下该节点出现相关联的结果集的概率。每个与根节点相关联的结果集被指派了一个先验概率。这样在已知网络图,先验概率,条件概率表和节点代表的事件之后,就可以通过网络计算出检索文档中出现查询的概率,并按照这个概率值的大小进行排序输出。……