python 實(shí)現(xiàn)倒排索引的方法
代碼如下:
#encoding:utf-8
fin = open('1.txt', 'r')
'''
建立正向索引:
“文檔1”的ID > 單詞1:出現(xiàn)位置列表;單詞2:出現(xiàn)位置列表;…………
“文檔2”的ID > 此文檔出現(xiàn)的關(guān)鍵詞列表。
'''
forward_index = {}
for line in fin:
line = line.strip().split()
forward_index[int(line[0])] = {}
words = line[1].split(',')
for i, index in enumerate(words):
if int(index) not in forward_index[int(line[0])].keys():
forward_index[int(line[0])][int(index)] = [i]
else:
forward_index[int(line[0])][int(index)].append(i)
print 'forward_index:', forward_index
'''
建立倒排索引:
“關(guān)鍵詞1”:“文檔1”的ID,“文檔2”的ID,…………
“關(guān)鍵詞2”:帶有此關(guān)鍵詞的文檔ID列表。
'''
inverted_index = {}
for doc_id, words in forward_index.items():
for word_id in words.keys():
if word_id not in inverted_index.keys():
inverted_index[word_id] = [doc_id]
elif doc_id not in inverted_index[word_id]:
inverted_index[word_id].append(doc_id)
print 'inverted_index:', inverted_index
輸入(文檔id:?jiǎn)卧~id):
1 3,4 2 3,4,2,4 3 2
輸出:
forward_index: {1: {3: [0], 4: [1]}, 2: {2: [2], 3: [0], 4: [1, 3]}, 3: {2: [0]}}
inverted_index: {2: [2, 3], 3: [1, 2], 4: [1, 2]}
以上這篇python 實(shí)現(xiàn)倒排索引的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python下opencv使用hough變換檢測(cè)直線與圓
在數(shù)字圖像中,往往存在著一些特殊形狀的幾何圖形,像檢測(cè)馬路邊一條直線,檢測(cè)人眼的圓形等等,有時(shí)我們需要把這些特定圖形檢測(cè)出來(lái),本文就詳細(xì)的介紹了一下方法2021-06-06
python flask自定義404錯(cuò)誤頁(yè)面方式
這篇文章主要介紹了python flask自定義404錯(cuò)誤頁(yè)面方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Python集成開(kāi)發(fā)工具Pycharm的安裝和使用詳解
這篇文章主要介紹了Python集成開(kāi)發(fā)工具Pycharm的安裝和使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
淺談pandas dataframe對(duì)除數(shù)是零的處理
這篇文章主要介紹了淺談pandas dataframe對(duì)除數(shù)是零的處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
使用pd.merge表連接出現(xiàn)多余行的問(wèn)題解決
本文主要介紹了使用pd.merge表連接出現(xiàn)多余行的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
探究Python的Tornado框架對(duì)子域名和泛域名的支持
這篇文章主要介紹了探究Python的Tornado框架對(duì)子域名和泛域名的支持,Tornado作為一個(gè)典型的異步框架、在Python開(kāi)發(fā)者中的人氣相當(dāng)高,需要的朋友可以參考下2015-05-05
python tkinterEntry組件設(shè)置默認(rèn)值方式
使用Tkinter庫(kù)中的Entry組件創(chuàng)建文本輸入框時(shí),可以通過(guò)insert方法在指定位置插入默認(rèn)文本作為提示,結(jié)合使用focus和focusin事件,可以實(shí)現(xiàn)用戶點(diǎn)擊時(shí)清除默認(rèn)文本,以便輸入自定義內(nèi)容2024-09-09

