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简单获取本机计算机名和IP地址的方法
Jun 03 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
Python中pillow知识点学习
Apr 30 Python
python模块导入的细节详解
Dec 10 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
Python gevent协程切换实现详解
Sep 14 Python
python使用pygame创建精灵Sprite
Apr 06 Python
利用Python+OpenCV三步去除水印
May 28 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 Python
python基础之//、/与%的区别详解
Jun 10 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导出oracle库的php代码
2009/04/20 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
python二叉树遍历的实现方法
2013/11/21 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
详解django2中关于时间处理策略
2019/03/06 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
建筑工程实习自我鉴定
2013/09/19 职场文书
小学生暑假感言
2014/02/06 职场文书
小学五年级学生评语
2014/04/22 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
2014年个人思想工作总结
2014/11/27 职场文书