首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >信息检索中的语言模型

信息检索中的语言模型
EN

Stack Overflow用户
提问于 2017-12-22 17:01:33
回答 1查看 490关注 0票数 2

我在IR工作。

有谁能指导我,如何在Whoosh中实现语言模型。我已经应用了TD-以色列国防军和BM25.我对IR很陌生。

举个例子,最简单的语言模型只是抛弃了所有的条件上下文,并独立地估计每个术语。这样一个模型被称为一个unigram语言模型:

代码语言:javascript
运行
复制
P_{uni}(t_1t_2t_3t_4) = P(t_1)P(t_2)P(t_3)P(t_4)

有许多更复杂的语言模型,比如bigram语言模型,这些模型都是在前一项条件下,

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 16:36:57

看看Whoosh评分模块,并使用BM25F (第276-332行)作为建立自己的加权和评分模型的参考。你需要创建一个加权模型和一个记分器。假设您想调用您的模型Unigram,主要步骤是:

  1. 实现自己的Unigram加权模型类并从scoring.WeightingModelclass Unigram(WeightingModel)继承 实现基类所需的方法,主要的方法是scorer(),它返回对Scorer类(next)的引用。当您创建searcher并定义搜索器将使用的加权模型时,将调用这个类。
  2. 实现UnigramScorer类并从scoring.WeightLengthScorerclass UnigramScorer(WeightLengthScorer)继承 实现__init___score方法。__init__接受字段名和值,并在调用searcher.search()时对查询中的每个术语调用一次。结果中的每个匹配文档都需要_score。它接受一个weightlength,并返回给定字段的分数。
  3. 在搜索时创建搜索器时,使用weighting参数指定自定义语言模型: ix.searcher(weighting = Unigram)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47944961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档