新聞中心
這里有您想知道的互聯網營銷解決方案
創(chuàng)新互聯Python教程:python搜索模塊如何查詢
說明

創(chuàng)新互聯公司是一家專注于成都網站制作、成都網站設計、外貿營銷網站建設與策劃設計,永德網站建設哪家好?創(chuàng)新互聯公司做網站,專注于網站建設十年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:永德等地區(qū)。永德做網站價格咨詢:18982081108
獲取原始數據并構建倒排索引后,可根據用戶輸入查找相關內容。
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以上就是python搜索模塊的查詢方法,希望對大家有所幫助。更多Python學習指路:創(chuàng)新互聯python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
當前文章:創(chuàng)新互聯Python教程:python搜索模塊如何查詢
轉載來于:http://m.5511xx.com/article/dppjhhh.html


咨詢
建站咨詢
