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通过websocket与js客户端通信示例分析
Jun 25 Python
Python中关于使用模块的基础知识
May 24 Python
理解Python垃圾回收机制
Feb 12 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
使用python实现BLAST
Feb 12 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
对python中assert、isinstance的用法详解
Nov 27 Python
Python super()方法原理详解
Mar 31 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
pandas 操作 Excel操作总结
Mar 31 Python
python3.9之你应该知道的新特性详解
Apr 29 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中调用JAVA
2006/10/09 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
jquery中动态效果小结
2010/12/16 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
python实现简单成绩录入系统
2019/09/19 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
计划生育标语
2014/06/23 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
信仰纪录片观后感
2015/06/08 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
如何使用SQL Server语句创建表
2022/04/12 SQL Server