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读文件逐行处理的示例代码分享
Dec 27 Python
python中的对象拷贝示例 python引用传递
Jan 23 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python动态参数用法实例分析
May 25 Python
python实现log日志的示例代码
Apr 28 Python
Python使用cx_Oracle模块操作Oracle数据库详解
May 07 Python
Python异常处理操作实例详解
May 10 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
Python Pandas 箱线图的实现
Jul 23 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Python如何在bool函数中取值
Sep 21 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脚本加密专家php解密算法
2020/09/13 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
深入php list()函数的详解
2013/06/05 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
this.$toast() 了解一下?
2019/04/18 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
使用Python的turtle模块画图的方法
2017/11/15 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python机器学习之随机森林(七)
2018/03/26 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
python2 对excel表格操作完整示例
2020/02/23 Python
python如何将图片转换素描画
2020/09/08 Python
python入门教程之基本算术运算符
2020/11/13 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
骆驼官方商城:CAMEL
2016/11/22 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
财务会计人员岗位职责
2013/11/30 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
文明市民先进事迹
2014/05/15 职场文书
师德师风自查总结
2014/10/14 职场文书
英语教学课后反思
2016/02/15 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android