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 相关文章推荐
pymongo给mongodb创建索引的简单实现方法
May 06 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
python实现给数组按片赋值的方法
Jul 28 Python
简单解决Python文件中文编码问题
Nov 22 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python简单获取自身外网IP的方法
Sep 18 Python
轻松理解Python 中的 descriptor
Sep 15 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
python通过zabbix api获取主机
Sep 17 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Vs Code中8个好用的python 扩展插件
Oct 12 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性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
Angular的$http与$location
2016/12/26 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
vue跨域解决方法
2017/10/15 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
详解如何运行vue项目
2019/04/15 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
《Python学习手册》学习总结
2018/01/17 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
python线程池如何使用
2020/05/28 Python
Python中Selenium库使用教程详解
2020/07/23 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
初中生物教学反思
2016/02/20 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技