国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

搜索引擎:常用信息檢索方式介紹與倒排索引實(shí)現(xiàn)(Python)

這篇具有很好參考價(jià)值的文章主要介紹了搜索引擎:常用信息檢索方式介紹與倒排索引實(shí)現(xiàn)(Python)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.信息檢索方式

(1)線性掃描

計(jì)算機(jī)對(duì)于文檔內(nèi)容檢索有多種可能的方式,如直接從頭遍歷至尾端,根據(jù)我們輸入的關(guān)鍵詞提取內(nèi)容。

這類檢索方式與我們?nèi)祟愰喿x的習(xí)慣相同,因此實(shí)現(xiàn)簡(jiǎn)單且很容易被接受。

若問你《三國演義》中是否存在’舌戰(zhàn)群儒’這一詞語,我們常常會(huì)選擇瀏覽全文從中找出匹配的詞語。



而從《三國演義》中提取出關(guān)鍵詞 , 通過現(xiàn)代計(jì)算機(jī)不會(huì)花費(fèi)太長時(shí)間;

但假如目標(biāo)是世界文學(xué)合集呢?企業(yè)一年的財(cái)務(wù)報(bào)告呢?又或者是現(xiàn)代信息世界產(chǎn)生的規(guī)模更大的文檔集。

盡管計(jì)算機(jī)算力強(qiáng)大,線性掃描的信息檢索方式也僅僅只能夠用于處理小文本。

(2)詞項(xiàng)—文檔關(guān)聯(lián)矩陣

于是產(chǎn)生了詞項(xiàng)—文檔關(guān)聯(lián)矩陣,我們利用空閑的算力,在計(jì)算機(jī)內(nèi)部提前構(gòu)建矩陣。

三國演義 紅樓夢(mèng) 水滸傳 西游記 悟空傳
孫悟空 0 0 0 1 1
賈寶玉 0 1 0 0 0

當(dāng)我們輸入關(guān)鍵詞孫悟空時(shí),將《西游記》《悟空傳》兩個(gè)文檔作為結(jié)果返回。

這樣的方式大大提高了檢索速度

詞項(xiàng)是索引的單位 而文檔則是返回的結(jié)果。

從行來看,能夠得到對(duì)應(yīng)詞項(xiàng)的文檔向量;從列來看,則獲取文檔的詞項(xiàng)向量。

當(dāng)然這類方式也存在較大的不足 如上述我所舉例的表格 能夠看見矩陣中0值占比極高

在造成負(fù)擔(dān)的同時(shí) 也極大地減緩了檢索速度。

(3)倒排索引

對(duì)數(shù)據(jù)結(jié)構(gòu)有一定涉獵的同學(xué)應(yīng)該很快就能想到優(yōu)化方式——稀疏數(shù)組。

我們建立詞項(xiàng)詞典與倒排記錄表 從而完成對(duì)文檔的高效檢索。

詞項(xiàng)詞典 倒排記錄表
孫悟空 4—>5
賈寶玉 2

倒排索引的兩個(gè)部分。詞典部分往往放在內(nèi)存中,而指針指向的每個(gè)倒排記錄表則往往存放在磁盤上。

二.倒排索引實(shí)現(xiàn)及常用語料處理方式

(1) 實(shí)現(xiàn)目標(biāo)

讀取文本文件 對(duì)不同的單行文檔 進(jìn)行詞條化及歸一化,

關(guān)注標(biāo)點(diǎn)符號(hào)的去重 停用詞的篩選以及大小寫的轉(zhuǎn)化。

建立倒排索引/詞項(xiàng)字典。

(2) 完整代碼

 import re
 import string
 from stop_words import get_stop_words
 from nltk.stem.porter import PorterStemmer
 
 
 # 列表去重
 def unique(word_list):
     return list(dict.fromkeys(word_list))
 
 
 # 移除停用詞
 def stop_word(token):
     en_stop = get_stop_words('en')
     stopped_tokens = [i for i in token if i not in en_stop]
     return stopped_tokens
 
 
 # 詞干提取
 def stem_extracting(stopped_tokens):
     p_stemmer = PorterStemmer()
     texts = [p_stemmer.stem(i) for i in stopped_tokens]
     return texts
 
 
 # Porter stemmer 并不是要把單詞變?yōu)橐?guī)范的那種原來的樣子,
 # 它只是把很多基于這個(gè)單詞的變種變?yōu)槟骋环N形式!換句話說,
 # 它不能保證還原到單詞的原本,也就是"created"不一定能還原到"create",
 # 但卻可以使"create" 和 "created" ,都得到"creat" !
 
 def incidence_matrix(text, docID):
     # 目的:
     # 傳入一段文本及其文檔號(hào)
     # 獲取其詞項(xiàng)列表
 
     # 1.清除英文標(biāo)點(diǎn)符號(hào)
     punctuation_string = string.punctuation
     lines = re.sub('[{}]'.format(punctuation_string), " ", text)
     # 2.將英文文本內(nèi)容切片
     lsplit = lines.split()
     # 3.大小寫轉(zhuǎn)換
     for num in range(len(lsplit)):
         lsplit[num] = lsplit[num].lower()
     # 4.移除停用詞 詞干提取
     # lsplit = stem_extracting(stop_word(lsplit))
     # 5.去重并轉(zhuǎn)字典
     lsplit_dic = dict.fromkeys(lsplit)
     # 6.記錄文檔號(hào)
     for word in lsplit_dic.keys():
         lsplit_dic[word] = [docID]
     return lsplit_dic
 
 
 def read_file(filename):
     result = {}
     count = 0
     with open(filename, 'r') as file_to_read:
         # 以只讀形式打開該文件
         while True:
             # 以行為單位進(jìn)行讀取
             lines = file_to_read.readline()
             # 當(dāng)某行內(nèi)容為空時(shí) 停止讀取
             if len(lines) == 0:
                 break
             count = count + 1
             lsplot = incidence_matrix(lines, count)
             result = dic_zip(result, lsplot)
     # 關(guān)閉文件讀取
     file_to_read.close()
     return result
 
 
 def dic_sort(a_dic):
     b_dic = dict.fromkeys(sorted(a_dic))
     for word in b_dic.keys():
         b_dic[word] = a_dic[word]
     return b_dic
 
 
 # 不同文檔字典 同一詞項(xiàng)合并
 def dic_zip(a_dic, b_dic):
     # 將b_dic并入a_dic中
     for word in b_dic.keys():
         if a_dic.get(word, None):
             a_dic[word].extend(b_dic[word])
         else:
             a_dic[word] = b_dic[word]
     return a_dic
 
 
 def show_dic(a_dic):
     # 文檔頻率可用于做查詢優(yōu)化
     tplt = "{0:^10}\t{1:{3}^10}\t{2:^40}"
     print(tplt.format("詞項(xiàng)", "文檔頻率", "倒排記錄", chr(12288)))
     for word in a_dic.keys():
         print(tplt.format(word, len(a_dic[word]), str(a_dic[word]), chr(12288)))
 
 
 def main():
     # 讀取filename下的英文文本文件 將每一行作為單獨(dú)的文本
     # 建立倒排索引。
     filename = './Reverse_Index_Word2.txt'
     matrix = dic_sort(read_file(filename=filename))
     show_dic(matrix)
 
 
 if __name__ == '__main__':
     main()

(3) 運(yùn)行結(jié)果

可以讀取更大規(guī)模的文檔,此處選取小文本是為了便于展示。

歸一化的處理被我注釋掉了 需要時(shí)可以刪除#符號(hào)。文章來源地址http://www.zghlxwxcb.cn/news/detail-476495.html

 #讀入的文檔
 new home sales top forecasts
 home sales rise in july
 increase in home sales in july
 july new home sales rise
 
 # 運(yùn)行結(jié)果
 "D:\Program Files\Python\python.exe" 
     詞項(xiàng)        文檔頻率                     倒排記錄                  
 forecasts       1                         [1]                   
    home         4                     [1, 2, 3, 4]              
     in          2                        [2, 3]                 
  increase       1                         [3]                   
    july         3                      [2, 3, 4]                
    new          2                        [1, 4]                 
    rise         2                        [2, 4]                 
   sales         4                     [1, 2, 3, 4]              
    top          1                         [1]                   
 
 Process finished with exit code 0
 

到了這里,關(guān)于搜索引擎:常用信息檢索方式介紹與倒排索引實(shí)現(xiàn)(Python)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot封裝Elasticsearch搜索引擎實(shí)現(xiàn)全文檢索

    注:本文實(shí)現(xiàn)了Java對(duì)Elasticseach的分頁檢索/不分頁檢索的封裝 ES就不用過多介紹了,直接上代碼: 創(chuàng)建Store類(與ES字段對(duì)應(yīng),用于接收ES數(shù)據(jù)) Elasticsearch全文檢索接口:不分頁檢索 Elasticsearch全文檢索接口:分頁檢索 本文實(shí)現(xiàn)了Java對(duì)Elasticsearch搜索引擎全文檢索的封裝 傳入

    2024年02月04日
    瀏覽(38)
  • 揭秘阿里自研搜索引擎 Havenask 在線檢索服務(wù)

    揭秘阿里自研搜索引擎 Havenask 在線檢索服務(wù)

    作者:谷深 Havenask 是阿里巴巴智能引擎事業(yè)部自研的開源高性能搜索引擎,深度支持了包括淘寶、天貓、菜鳥、高德、餓了么在內(nèi)幾乎整個(gè)阿里的搜索業(yè)務(wù)。本文針對(duì)性介紹了 Havenask 的在線服務(wù),它具備高可用、高時(shí)效、低成本的優(yōu)勢(shì),幫助企業(yè)和開發(fā)者量身定做適合業(yè)務(wù)

    2024年02月02日
    瀏覽(43)
  • 【搜索引擎】Document indexing and retrieval: 文檔索引與檢索

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 搜索引擎作為互聯(lián)網(wǎng)信息獲取的一種重要手段之一,無論是在PC、移動(dòng)端還是電腦上使用,都可以快速找到想要的信息。而對(duì)于文檔信息的搜索引擎索引構(gòu)建,則是一個(gè)更加復(fù)雜的問題。 文檔索引與檢索(Document Indexing and Retrieval, DIR)的目標(biāo)是建

    2024年02月08日
    瀏覽(29)
  • Python實(shí)戰(zhàn):在搜索引擎開發(fā)中的倒排索引與檢索算法

    在信息檢索領(lǐng)域,搜索引擎是一個(gè)至關(guān)重要的工具,它可以幫助用戶在大量的數(shù)據(jù)中找到所需的信息。而倒排索引是搜索引擎的核心技術(shù)之一,它能夠提高檢索的效率。 倒排索引是一種數(shù)據(jù)結(jié)構(gòu),它將文檔的內(nèi)容和文檔的ID關(guān)聯(lián)起來。在倒排索引中,每個(gè)詞項(xiàng)都有一個(gè)列表,

    2024年04月26日
    瀏覽(20)
  • 后端架構(gòu)師必知必會(huì)系列:搜索引擎與全文檢索

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 什么是搜索引擎?它是指在互聯(lián)網(wǎng)上搜集、整理并快速索引海量信息的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫,對(duì)用戶的查詢請(qǐng)求進(jìn)行快速、準(zhǔn)確的響應(yīng)的技術(shù)。搜索引擎又分為互聯(lián)網(wǎng)搜索引擎(英語: internet search engine)和本地搜索引擎(英語: local search engine)。 全文

    2024年02月05日
    瀏覽(26)
  • 【搜索引擎設(shè)計(jì):信息搜索怎么避免大海撈針?

    【搜索引擎設(shè)計(jì):信息搜索怎么避免大海撈針?

    在前面我們提到了網(wǎng)頁爬蟲設(shè)計(jì):如何下載千億級(jí)網(wǎng)頁?中,我們討論了大型分布式網(wǎng)絡(luò)爬蟲的架構(gòu)設(shè)計(jì),但是網(wǎng)絡(luò)爬蟲只是從互聯(lián)網(wǎng)獲取信息,海量的互聯(lián)網(wǎng)信息如何呈現(xiàn)給用戶,還需要使用搜索引擎完成。因此,我們準(zhǔn)備開發(fā)一個(gè)針對(duì)全網(wǎng)內(nèi)容的搜索引擎,產(chǎn)品名稱為“

    2024年01月17日
    瀏覽(19)
  • 網(wǎng)絡(luò)空間搜索引擎信息收集

    網(wǎng)絡(luò)空間搜索引擎信息收集

    簡(jiǎn)介 網(wǎng)絡(luò)空間搜索引擎不同于普通的搜索引擎(百度等),而是直接搜索網(wǎng)絡(luò)中的主機(jī),將主機(jī)信息匯聚成數(shù)據(jù)庫,然后顯示出主機(jī)的 IP、端口、中間件、攝像頭、工控設(shè)備 banner 等其他網(wǎng)絡(luò)設(shè)備信息??梢园凑掌胀ǖ乃阉饕娴囊?guī)則來搜索,如:ip:“192.168.1.1”。 Shodan 簡(jiǎn)介

    2024年01月17日
    瀏覽(27)
  • 信息搜集-Google搜索引擎

    原文地址https://www.freebuf.com/articles/web/342474.html Google搜索引擎: 這里之所以要介紹google搜索引擎,是因?yàn)樗袆e于百度、搜狗等內(nèi)容搜索引擎,其在安全界有著非同一般的地位,甚至專門有一名詞為google hacking用來形容google與安全非同尋常的關(guān)系; google基本語法: 利用google暴庫

    2024年02月15日
    瀏覽(28)
  • 知識(shí)點(diǎn)搜索:如何高效利用搜索引擎獲取準(zhǔn)確信息?

    ? ? ? 在網(wǎng)絡(luò)時(shí)代,搜索引擎已經(jīng)成為人們獲取信息的主要渠道,它的出現(xiàn)讓人們可以在短時(shí)間內(nèi)獲取大量的信息,而不用費(fèi)盡心思去查找各種資料。但是,有些人在使用搜索引擎時(shí)卻無從下手,不知道如何進(jìn)行搜索。本文將會(huì)介紹如何高效利用搜索引擎獲取準(zhǔn)確的信息。

    2024年02月22日
    瀏覽(24)
  • 搜索引擎常用技巧

    常用的引擎: baidu.com google.com bing.com 雙引號(hào) “” 雙引號(hào) “” 可以讓搜索的精準(zhǔn)匹配,而 不會(huì)對(duì)我們輸入的進(jìn)行?切分 。 例如,我們搜索 “python range 用法”,通過結(jié)果可以看出使用雙引號(hào)和不使用雙引號(hào)結(jié)果是不一樣的。? 排除符號(hào):- python -jianshu 排除某

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包