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 文件和路径操作函数小结
Nov 23 Python
Python中正则表达式的用法实例汇总
Aug 18 Python
python 脚本生成随机 字母 + 数字密码功能
May 26 Python
python读取LMDB中图像的方法
Jul 02 Python
Python中dict和set的用法讲解
Mar 28 Python
Django stark组件使用及原理详解
Aug 22 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
pandas抽取行列数据的几种方法
Dec 13 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 array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
domReady的实现案例
2016/11/23 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
退伍老兵事迹材料
2014/01/31 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
Java版 单机五子棋
2022/05/04 Java/Android