基于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)
建立倒排索引的过程其实主要是做好数据结构的过程。如何存放每个关键词,间接桶使用哪种数据类型,最终的索引如何实现,都是建立好这个索引结构的关键。
主要使用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检索系统(2)爬虫
- 基于Python检索系统(1)总体介绍
- 基于python的分词算法的实现(3) - 建立字典
- 基于Python检索系统(4)最终版
- python写的linux系统批量执行命令和文件获取和推送功能(基于RSAkey)
- 用Python脚本语言建立一个基于应用程序的GUI快速启动
- [转] 基于内容的图铃检索系统
- 基于HTTP协议的开源中文分词系统:HTTPCWS 1.0.0
- Windows与Linux系统如何基于Python安装连接MySQL数据库的工具包PyMySQL
- 基于spring boot架构和word分词器的分词检索,排序,分页实现
- 基于XMPP的即时通信系统的建立(二)— XMPP详解
- Python下如何调用NLPIR(ICTCLAS2013)分词系统
- Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略
- 基于内容的图像检索系统常用特征简介
- 基于S3C2440的linux-3.6.6移植——内核移植,建立自己的平台系统
- DIY一个基于树莓派和Python的无人机视觉跟踪系统
- [置顶] 基于DL的计算机视觉(11)-- 基于DL的快速图像检索系统
- 基于CRF++0.54搭建中文分词系统
- 为您的Web应用建立基于JMX的管理系统
- 中文分词系统之-导入文本文件类词库建立哈希表索引-JAVA源码