基於Python檢索系統(3)分詞後建立資料結構
分詞應用的是Jieba分詞工具,將爬取得到的新聞進行中文分詞,也就是為了得到以後檢索要用到的關鍵詞。我們給每個關鍵詞建立一個單獨的索引,引入間接桶,應用倒排索引的方法實現最終的結果。
建立倒排索引的過程其實主要是做好資料結構的過程。如何存放每個關鍵詞,間接桶使用哪種資料型別,最終的索引如何實現,都是建立好這個索引結構的關鍵。
主要使用3個字典進行資料的存放,分別為title_dict、tags、word_dict。
1、標題字典(title_dict)
鍵:1、2、3、4、5……
值:每個標題的內容
2、分詞後的字典(tags)
鍵:1、2、3、4、5……
值:每個標題分詞後的關鍵詞列表
3、倒排列表(word_dict)
鍵:索引關鍵詞
值:對應的標題ID
程式碼如下:
import jieba import jieba.analyse #記錄檔案中有多少行標題 記錄在count中 count=0 for line in open("jia.txt","r",encoding='utf-8'): count=count+1 #新建字典title_dict,鍵對應(1-5294)的數字,值是對應的新聞標題 title_dict={} f=open("jia.txt","r",encoding='utf-8') i=1 #將文字的每行標題存入字典 for line in open("jia.txt","r",encoding='utf-8'): #新增一個刪除字串末尾/n的操作 title_dict[i]=line i=i+1 # print(line) #將字典title_dict中的值分別進行分詞操作 seg_list={} tags={} #將分詞存入tags字典,鍵為1-5294,值為對應的分片語成的列表 for j in range(1,count+1): #搜尋引擎模式 seg_list[j] =jieba.cut_for_search(title_dict.get(j)) #精確模式 #seg_list[j]=jieba.cut(title_dict.get(j),cut_all=True) tags[j]=jieba.analyse.extract_tags(title_dict.get(j), topK=40) # print(tags) #將分詞後的結果存入詞項字典 word_dict={} for k in range(1,count+1): for z in range(0,int(len(tags.get(k))-1)): #字典中每個值中,元素的個數 word_dict.setdefault(tags.get(k)[z]) if(word_dict.get(tags.get(k)[z])==None): word_dict[tags.get(k)[z]]=[] word_dict[tags.get(k)[z]].append(k) else: word_dict[tags.get(k)[z]].append(k)
相關推薦
基於Python檢索系統(3)分詞後建立資料結構
分詞應用的是Jieba分詞工具,將爬取得到的新聞進行中文分詞,也就是為了得到以後檢索要用到的關鍵詞。我們給每個關鍵詞建立一個單獨的索引,引入間接桶,應用倒排索引的方法實現最終的結果。
基於Python檢索系統(4)最終版
from tkinter import * import jieba import jieba.analyse #b1函式為 全部新聞顯示頁面 #b2函式為 檢索頁面 檢索成功後,跳轉另外一個頁面 def b1(): #全部新聞顯示頁面 #記錄檔案中有多少行
基於百度地圖SDK和Elasticsearch GEO查詢的地理圍欄分析系統(3)-前端實現
方便 復制 類型 復制代碼 自動跳轉 rar 窗口 stack delete 轉載自:http://www.cnblogs.com/Auyuer/p/8086975.html MoonLight可視化訂單需求區域分析系統實現功能: 在現實生活中,計算機和互聯網迅速發展,
Android彈幕實現:基於B站彈幕開源系統(3)-文字彈幕的完善和細節調整
Android彈幕實現:基於B站彈幕開源系統(3)本文在附錄1,2的基礎上再次對非同步獲取彈幕並顯示彈幕完善邏輯和程式碼,集中在上層Java程式碼部分:package zhangphil.danmaku; import android.app.Activity; imp
Python進階(3)_進程與線程中的lock(互斥鎖、遞歸鎖、信號量)
fun 我們 bsp 控制 支持 發生 class 線程 數據操作 1、同步鎖 (Lock) 當各個線程需要訪問一個公共資源時,會出現數據紊亂 例如: 1 import threading,time 2 def sub(): 3 global num
python裝飾器(3)
urn python裝飾器 裝飾 int 裝飾器 func 實現 ret test 另一種實現方式: 1 __author__ = "csy" 2 3 def test2(func): 4 def test1(): 5 func()
分布式系統(二)------分布式系統架構體系
所有 系統架構 客戶 體系 微服務 容器 實現 基於 原理 基於對象的體系結構 面向服務的架構(SOA) REST風格的架構 微服務架構(MSA) 容器技術 Serverless架構 一、基於對象的體系架構 在基於對象的分布式系統中,對象的概念在分布式實現中起著極其
Python爬蟲學習(3)
collect nbsp pri div time urlparse links ews 是否 在慕課網學習並創建了一個簡單的爬蟲包,爬取百度百科相關詞條信息 程序中會用到第三方解析包(BeautifulSoup4),Windows環境下安裝命令:pip install B
Python實用筆記 (3)條件判斷
縮進 elif 改進 class 實用 tee 原因 print string 可以執行多條語句,靠的是縮進原則,看起來也更板紮(註意冒號) age = 3 if age >= 18: print(‘adult‘) elif age >= 6:
Python學習筆記(3)
python重要的數據類型Dict和Setdict通過key 查找value(key和value關聯)花括號{ }表示這是一個dict,然後按照key:value,寫出來即可。最後一個key:value的都好可以省略 註意: 單元素的tuple必須在後面多家加一個逗號dict最後的逗號可以省略由於dict也是
Python開發環境(3):使用Eclipse+PyDev插件創建Django項目
ffffff postgresq 項目上線 右鍵 ont pat iat ngs ora OS:Windows 10家庭中文版,Python:3.6,Eclipse:Oxygen.1a Release (4.7.1a), PyDev:6.3.2,Django:2.0.3
如何設計一個單點登錄系統(3)?
抽象 pat resolve pro 業務 問題 resolv -c cli 在上一篇文章 如何設計一個單點登錄系統(2)? 中主要講解了可跨域SSO系統服務端,客戶端在登錄,登出過程中分別應該承擔的職責,本文將重點聊一下具體技術實現,源碼地址: https://githu
python進階(3)——檔案
開啟檔案:(非當前目錄需指定完整路徑) f = open('lcctry.py') 讀取和寫入: f = open('lcctry.txt','w') f.write('hello, world') Out[130]: 12 f.close() 讀取時的r可以不寫,呼叫open時
Python爬蟲-速度(3)
Python爬蟲-速度(3) 文章目錄 Python爬蟲-速度(3) 前言 普通爬蟲 多程序提速 多執行緒提速 非同步協程提速 最後 018.11.11 Python爬蟲-速度(1
Python入門學習(3)
操作列表 1.使用for迴圈來列印魔術師列表中的所有名字: magicians = ['alice','david','carolina'] for magician in magicians: print(magician) 在for迴圈中,想包含多少
Python之Pandas(3)
#常用數學,統計方法 import numpy as np import pandas as pd In [7]: df = pd.DataFrame({'key1':[4,5,3,np.nan,2], 'key2':[1,2,np.nan,4,5],
吳裕雄 實戰python編程(3)
img text class != 標簽 beautiful start png 面數據 import requests from bs4 import BeautifulSoup url = ‘http://www.baidu.com‘html = requests.ge
嵌入式系統(3)- 樹莓派DIY小車 - 攝像頭的使用
1.基本設定 sudo raspi-config 命令,進入到樹莓派基本設定介面 選擇: 5 Interfacing Options 然後選擇 Camera Enable &n
基於springboot2 框架整合(3):mybatis plus整合
前言 專案中使用了很多現成的框架,都是專案經理、架構師帶來的,從來沒有自己整合過!這次決定自己從零開始整合一次,以學習鞏固。過程中參考很多開源框架的思路,工具類等,若有侵權,請速速聯絡,一定妥善處理 一:簡介 這裡直接引用官方介紹了“MyBatis-Plus
Day5:python之函式(3)
一、函式預設值引數 內建函式: input()、print()、int() 常用模組: 1、列表生成式 s =[1,2,3,4,5,6,7,8] for i in s: print(i+1) res = [ i+1 for i in s] res = [str(i) for i in