1. 程式人生 > >基於Python檢索系統(3)分詞後建立資料結構

基於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之Pandas3

#常用數學,統計方法 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