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使用Socket(Https)Post登录百度的实现代码
May 18 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
Pycharm更换python解释器的方法
Oct 29 Python
Python File(文件) 方法整理
Feb 18 Python
Python当中的array数组对象实例详解
Jun 12 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
python上下文管理器异常问题解决方法
Feb 07 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中几种常见安全设置详解
2010/04/06 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
DEFER怎么用?
2006/07/01 Javascript
js获取div高度的代码
2008/08/09 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
Django unittest 设置跳过某些case的方法
2018/12/26 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Python之字典添加元素的几种方法
2020/09/30 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
《理想》教学反思
2014/02/17 职场文书
民政局个人整改措施
2014/09/24 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
销售经理岗位职责
2015/01/31 职场文书