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中对list去重的多种方法
Sep 18 Python
python 系统调用的实例详解
Jul 11 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
python实现ID3决策树算法
Dec 20 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
python算法题 链表反转详解
Jul 02 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
python实现飞船游戏的纵向移动
Apr 24 Python
Python函数参数分类原理详解
May 28 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
python3处理word文档实例分析
Dec 01 Python
Python hashlib和hmac模块使用方法解析
Dec 08 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
Sony CFR 320 修复改造
2020/03/14 无线电
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
python 中split 和 strip的实例详解
2017/07/12 Python
使用python实现画AR模型时序图
2019/11/20 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
教师绩效考核方案
2014/01/21 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
建房协议书
2014/04/11 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
确保工程质量承诺书
2015/04/29 职场文书
集结号观后感
2015/06/08 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Mysql数据库group by原理详解
2022/07/07 MySQL
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers