python信息检索搜索引擎,python查询模块有哪些函数
说明
获取原始数据并建立倒排索引后,就可以根据用户输入找到相关内容。
1.首先对用户的输入进行分段。
2.然后根据倒排索引得到每个词相关的文章。
3.最后,计算每个单词与相关文章之间的得分。分数越高,相关性越大。
实例
defsearch(self,query):
BM25_scores={}
#为用户输入分词
#并把它变成{word3360frequency,}
query=jieba.lcut_for_search(查询)
word2freq=self.format(查询)
#遍历每个单词
#计算每个词与相关文章之间的得分(计算公式参考BM25算法)
forword 2 freq :
data=self.iindex.get(word)
ifnotdata:
继续
BM25_score=0
qf=word2freq[word]
df=数据[df]
ds=数据[ds]
W=math.log((self。N-df 0.5)/(df 0.5))
fordocinds:
doc_id=doc[id]
tf=doc[tf]
dl=doc[dl]
k=self . k1 *(1-self . b self . b *(dl/self。AVGDL))
r=(TF *(self . k1 1)/(TF K))*(qf *(self . k2 1)/(qf self . k2))
BM25_score=W*R
BM25 _ scores[doc _ id]=BM25 _ scores[doc _ id]BM25 _ score ifdoc _ id
#按照从大到小的顺序排列所有分数,并返回结果
BM25 _ scores=sorted(BM25 _ scores . items(),key=lambdaitem:item[1])
BM25_scores.reverse()
ReturnBM25_scores以上是python搜索模块的查询方法。希望对你有帮助。更多python学习方向:Python基础课程
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。