导语:
本文主要介绍了关于python搜索模块如何查询的相关知识,包括python怎么查询模块内容,以及查询python已安装模块这些编程知识,希望对大家有参考作用。
说明
获取原始数据并建立倒排索引后,可以根据用户输入找到相关内容。
1、先对用户的输入进行分词。
2.然后根据倒排索引得到每个词相关的文章。
3. 最后,计算每个词与相关文章的得分。得分越高,相关性越大。
实例
def search(self, query):
BM25_scores = {}
# 对用户输入分词
# 并将其变成 {word: frequency, ...} 的形式
query = jieba.lcut_for_search(query)
word2freq = self.format(query)
# 遍历每个词
# 计算每个词与相关文章之间的得分(计算公式参考 BM25 算法)
for word in word2freq:
data = self.iindex.get(word)
if not data:
continue
BM25_score = 0
qf = word2freq[word]
df = data['df']
ds = data['ds']
W = math.log((self.N - df + 0.5) / (df + 0.5))
for doc in ds:
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 if doc_id in BM25_scores else BM25_score
# 对所有得分按从大到小的顺序排列,返回结果
BM25_scores = sorted(BM25_scores.items(), key = lambda item: item[1])
BM25_scores.reverse()
return BM25_scores
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 简单的Python网络编程12/08
- ♥ python生成器调用方法抛出异常11/05
- ♥ python如何获取系统内存使用信息08/29
- ♥ 如何在python中使用多处理模块?12/20
- ♥ 如何在 Python 中更改 openpyxl 的字体和颜色08/21
- ♥ python greenlet如何交替运行11/23
内容反馈