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.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
python实现图片批量压缩程序
Jul 23 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
python读取word 中指定位置的表格及表格数据
Oct 23 Python
Python正则表达式高级使用方法汇总
Jun 18 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
python中time包实例详解
Feb 02 Python
Python中的程序流程控制语句
Feb 24 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
Python学习资料
2007/02/08 Python
Python fileinput模块使用实例
2015/06/03 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python-opencv 双线性插值实例
2020/01/17 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
社团文化节邀请函
2014/01/10 职场文书
化工工艺设计求职信
2014/06/25 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
地方白酒代理协议书
2014/10/25 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js