python 实现倒排索引的方法


Posted in Python onDecember 25, 2018

代码如下:

#encoding:utf-8

fin = open('1.txt', 'r')

'''
建立正向索引:
 “文档1”的ID > 单词1:出现位置列表;单词2:出现位置列表;…………
 “文档2”的ID > 此文档出现的关键词列表。
'''
forward_index = {}
for line in fin:
 line = line.strip().split()
 forward_index[int(line[0])] = {}
 words = line[1].split(',')
 for i, index in enumerate(words):
  if int(index) not in forward_index[int(line[0])].keys():
   forward_index[int(line[0])][int(index)] = [i]
  else:
   forward_index[int(line[0])][int(index)].append(i)
print 'forward_index:', forward_index

'''
建立倒排索引:
 “关键词1”:“文档1”的ID,“文档2”的ID,…………
 “关键词2”:带有此关键词的文档ID列表。
'''
inverted_index = {}
for doc_id, words in forward_index.items():
 for word_id in words.keys():
  if word_id not in inverted_index.keys():
   inverted_index[word_id] = [doc_id]
  elif doc_id not in inverted_index[word_id]:
   inverted_index[word_id].append(doc_id)
print 'inverted_index:', inverted_index

输入(文档id:单词id):

1 3,4 
2 3,4,2,4 
3 2

输出:

forward_index: {1: {3: [0], 4: [1]}, 2: {2: [2], 3: [0], 4: [1, 3]}, 3: {2: [0]}} 
inverted_index: {2: [2, 3], 3: [1, 2], 4: [1, 2]}

以上这篇python 实现倒排索引的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python写的ARP攻击代码实例
Jun 04 Python
python遍历类中所有成员的方法
Mar 18 Python
从Python的源码浅要剖析Python的内存管理
Apr 16 Python
Python实现的快速排序算法详解
Aug 01 Python
用pycharm开发django项目示例代码
Jun 13 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Python @property使用方法解析
Sep 17 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
Python Unittest原理及基本使用方法
Nov 06 Python
Python的信号库Blinker用法详解
Dec 31 Python
python截取两个单词之间的内容方法
Dec 25 #Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 #Python
python匹配两个短语之间的字符实例
Dec 25 #Python
python读取目录下最新的文件夹方法
Dec 24 #Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 #Python
python实现简单flappy bird
Dec 24 #Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 #Python
You might like
php代码优化及php相关问题总结
2006/10/09 PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
header导出Excel应用示例
2014/01/24 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
iframe实用操作锦集
2014/04/22 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
JavaScript指定断点操作实例教程
2018/09/18 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
详解vue 组件
2020/06/11 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
python flask安装和命令详解
2019/04/02 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
学习雷锋演讲稿
2014/05/10 职场文书
先进班集体申报材料
2014/12/26 职场文书
大学组织委员竞选稿
2015/11/21 职场文书