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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
python中的列表与元组的使用
Aug 08 Python
Python Django 命名空间模式的实现
Aug 09 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 Python
Python实现对齐打印 format函数的用法
Apr 28 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
php中上传文件的的解决方案
2018/09/25 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
表单提交验证类
2006/07/14 Javascript
Js的MessageBox
2006/12/03 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js图片处理示例代码
2014/05/12 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
python Timer 类使用介绍
2020/12/28 Python
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
电气专业推荐信范文
2013/11/18 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
python实现批量移动文件
2021/04/05 Python
alibaba seata服务端具体实现
2022/02/24 Java/Android
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL