代码如下:

#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 实现倒排索引的方法相关推荐

  1. python 爬虫性能_Python 爬虫性能相关总结

    这里我们通过请求网页例子来一步步理解爬虫性能 当我们有一个列表存放了一些url需要我们获取相关数据,我们首先想到的是循环 简单的循环串行 这一种方法相对来说是最慢的,因为一个一个循环,耗时是最长的,是 ...

  2. python js 性能_Python Json使用,Json库性能测试

    介绍 官网:https://www.json.org/json-zh.html 中文介绍:https://www.json.cn/wiki.html 中文介绍:https://developer.mo ...

  3. [转载] python histogram函数_Python numpy.histogram_bin_edges函数方法的使用

    参考链接: Python中的numpy.ceil numpy.histogram_bin_edges numpy.histogram_bin_edges(a, bins=10, range=None, ...

  4. python字符串截取_Python容器类型公共方法汇总

    以下公共方法支持列表,元组,字典,字符串. 内置函数 Python 包含了以下内置函数: 函数描述备注len(item)计算容器中元素个数del(item)删除变量del 有两种方式max(item) ...

  5. python ctime函数_Python中的ctime()方法使用教程

    ctime()方法转换,因为历元到表示本地时间的字符串表示以秒为单位的时间.如果不设置秒时或None,所返回的时间的当前time()被使用.使用asctime(localtime(secs)).不使用 ...

  6. python保存数据_Python 保存数据的方法(4种方法)

    Python 保存数据的方法: open函数保存 使用with open()新建对象 写入数据(这里使用的是爬取豆瓣读书中一本书的豆瓣短评作为例子) import requests from lxml ...

  7. python 创建子类_python创建子类的方法分析

    本文实例讲述了python创建子类的方法.分享给大家供大家参考,具体如下: 如果你的类没有从任何祖先类派生,可以使用object作为父类的名字.经典类的声明唯一不同之处在于其没有从祖先类派生---此时 ...

  8. python迭代器使用_python迭代器的使用方法实例

    什么是迭代器?迭代器是带有next方法的简单对象,当然也要实现__iter__函数.迭代器能在一序列的值上进行迭代,当没有可供迭代时,next方法就会引发StopIteration 的异常.pytho ...

  9. python画正方体_python绘制立方体的方法

    本文实例为大家分享了python绘制立方体的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # This is (almost) a direct C++ to Pyt ...

最新文章

  1. 【JUC并发编程03】线程间通信
  2. android 开发中的常见问题
  3. ios点击大头针气泡不弹出_画家双手抖不停,画不了画丢了工作,却迎合抖动创造出一个个奇迹...
  4. python 递归函数与循环的区别_提升Python效率之使用循环机制代替递归函数
  5. 深入了解Delphi 7中的四种消息框
  6. Python精确指南——第四章-部署和技巧
  7. Tomcat学习总结(15)—— Apache Tomcat各版本比较
  8. java获取响应网页源代码
  9. mineData地图添加自定义Maker图标
  10. php 网贷 源码,thinkphp仿百度钱包网贷借款源码
  11. VBA系列(1)——VBA基础知识
  12. 江苏省淮安市谷歌高清卫星地图下载
  13. Codesys学习调试笔记2
  14. docker装LibreELEC_如何在LibreELEC上安装Entware?
  15. win10 不小心卸载产品密钥
  16. 微信小程序扫一扫和微信自带的扫一扫 获取二维码的url包括参数数据
  17. LDPC译码:和积译码算法(SPA)、最小和算法(MSA)、分层译码算法(LBP)、动态信息更新策略IDS(含RBP、NW-RBP、SVNF-RBP)的MATLAB实现
  18. 2022年自考专业考试(英语)英语翻译练习题
  19. 机器学习基础——先验概率、后验概率和似然估计的讲解;频率派和贝叶斯派之分;以及MLE和MAP方法的解析
  20. 大厂HR:我让你测试一个(电梯、杯子、笔、桌子、洗衣机),你会怎么测试它?

热门文章

  1. 第四节:EF Core的并发处理
  2. javaScript今日总结
  3. Jenkins配置与使用
  4. NSMapTable
  5. javaweb(三十八)——mysql事务和锁InnoDB(扩展)
  6. js 对已知数组数据的导出EXCEL
  7. eclispe设置workspace text file encoding
  8. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  9. 训练(线段树+树状数组) poj——3264
  10. 系统带你学习 WebAPIs 第一讲