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多线程编程(八):使用Event实现线程间通信
Apr 05 Python
python实现DES加密解密方法实例详解
Jun 30 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
Java及python正则表达式详解
Dec 27 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
python中的decorator的作用详解
Jul 26 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
Python numpy线性代数用法实例解析
Nov 15 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 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中操作ini配置文件的方法
2013/04/25 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
php实现session共享的实例方法
2019/09/19 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
pandas中Timestamp类用法详解
2017/12/11 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Django的性能优化实现解析
2019/07/30 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
影视艺术学院毕业生自荐信
2013/11/13 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
工程质量承诺书
2014/03/27 职场文书
员工薪酬激励方案
2014/06/13 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
超市周年庆活动方案
2014/08/16 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
监护人证明
2015/06/19 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书