语言模式通过信息检索中的嗖嗖声

问题描述 投票:1回答:1

我在IR工作。

任何人都可以指导我,我怎样才能在嗖嗖声中实现语言模式。我已经申请了TD-IDF和BM25。我是IR新手。

例如,最简单的语言模型只会抛弃所有条件上下文,并独立估计每个术语。这种模型称为unigram语言模型:

P_{uni}(t_1t_2t_3t_4) = P(t_1)P(t_2)P(t_3)P(t_4)

有许多更复杂的语言模型,例如bigram语言模型,它们在前一个术语中是有条件的,

P_{bi}(t_1t_2t_3t_4) = P(t_1)P(t_2\vert t_1)P(t_3\vert t_2)P(t_4\vert t_3)
python information-retrieval whoosh
1个回答
1
投票

看看Whoosh's scoring module并使用BM25F(第276至332行)作为建立自己的加权和得分模型的参考。您需要创建加权模型和记分器。假设你要打电话给你的模型Unigram,主要步骤是:

  1. 实现您自己的Unigram加权模型类并继承自scoring.WeightingModelclass Unigram(WeightingModel) 实现基类所需的方法,主要的是scorer(),它返回对Scorer类的引用(下一个)。创建searcher时会调用此类,并定义搜索器将使用的加权模型。
  2. 实现UnigramScorer类并继承自scoring.WeightLengthScorerclass UnigramScorer(WeightLengthScorer) 实现__init___score方法。 __init__获取字段名称和值,并在调用searcher.search()时为查询中的每个术语调用一次。在结果中为每个匹配的文档调用_score。它需要一个weightlength并返回给定字段的分数。
  3. 在搜索时创建搜索器时,请使用weighting参数指定自定义语言模型: ix.searcher(weighting = Unigram)
© www.soinside.com 2019 - 2024. All rights reserved.