溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python搜索模塊的查詢方法

發(fā)布時(shí)間:2021-04-29 10:30:31 來源:億速云 閱讀:202 作者:小新 欄目:編程語言

小編給大家分享一下python搜索模塊的查詢方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

python的數(shù)據(jù)類型有哪些?

python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點(diǎn)型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個(gè)無序的、不重復(fù)的數(shù)據(jù)組合。

1、說明

獲取原始數(shù)據(jù)并構(gòu)建倒排索引后,可根據(jù)用戶輸入查找相關(guān)內(nèi)容。

先對用戶的輸入進(jìn)行分詞。

然后根據(jù)倒排索引獲取與每個(gè)單詞相關(guān)的文章。

最后,計(jì)算每個(gè)單詞和相關(guān)文章之間的分?jǐn)?shù)。分?jǐn)?shù)越高,相關(guān)性越大。

2、實(shí)例

def search(self, query):
    BM25_scores = {}
 
    # 對用戶輸入分詞
    # 并將其變成 {word: frequency, ...} 的形式
    query = jieba.lcut_for_search(query)
    word2freq = self.format(query)
 
    # 遍歷每個(gè)詞
    # 計(jì)算每個(gè)詞與相關(guān)文章之間的得分(計(jì)算公式參考 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
 
    # 對所有得分按從大到小的順序排列,返回結(jié)果
    BM25_scores = sorted(BM25_scores.items(), key = lambda item: item[1])
    BM25_scores.reverse()
    return BM25_scores

看完了這篇文章,相信你對“python搜索模塊的查詢方法”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI