您的位置:首页 > 理论基础 > 数据结构算法

基于Python检索系统(3)分词后建立数据结构

2017-08-10 10:33 281 查看
        分词应用的是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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: