python 实现倒排索引的方法

 更新时间:2018年12月25日 09:49:35   作者:涛涛不绝蕾蕾于冬  
今天小编就为大家分享一篇python 实现倒排索引的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

代码如下:

#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下opencv使用hough变换检测直线与圆

    Python下opencv使用hough变换检测直线与圆

    在数字图像中,往往存在着一些特殊形状的几何图形,像检测马路边一条直线,检测人眼的圆形等等,有时我们需要把这些特定图形检测出来,本文就详细的介绍了一下方法
    2021-06-06
  • python flask自定义404错误页面方式

    python flask自定义404错误页面方式

    这篇文章主要介绍了python flask自定义404错误页面方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python集成开发工具Pycharm的安装和使用详解

    Python集成开发工具Pycharm的安装和使用详解

    这篇文章主要介绍了Python集成开发工具Pycharm的安装和使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 浅谈pandas dataframe对除数是零的处理

    浅谈pandas dataframe对除数是零的处理

    这篇文章主要介绍了浅谈pandas dataframe对除数是零的处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • python中def是做什么的

    python中def是做什么的

    在本篇文章里小编给大家分享的是关于python中def的作用以及相关用法,有需要的朋友们可以学习下。
    2020-06-06
  • 使用pd.merge表连接出现多余行的问题解决

    使用pd.merge表连接出现多余行的问题解决

    本文主要介绍了使用pd.merge表连接出现多余行的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 探究Python的Tornado框架对子域名和泛域名的支持

    探究Python的Tornado框架对子域名和泛域名的支持

    这篇文章主要介绍了探究Python的Tornado框架对子域名和泛域名的支持,Tornado作为一个典型的异步框架、在Python开发者中的人气相当高,需要的朋友可以参考下
    2015-05-05
  • python使用logging模块记录日志的操作

    python使用logging模块记录日志的操作

    在编写 Python 程序时,日志记录是一个非常重要的部分,日志不仅帮助你在开发过程中调试代码,还可以在程序正式运行时提供诊断信息,帮助定位问题,在本文中,我们将介绍 Python 的 logging 模块,帮助你了解如何使用这个模块来记录和管理日志,需要的朋友可以参考下
    2024-10-10
  • python tkinterEntry组件设置默认值方式

    python tkinterEntry组件设置默认值方式

    使用Tkinter库中的Entry组件创建文本输入框时,可以通过insert方法在指定位置插入默认文本作为提示,结合使用focus和focusin事件,可以实现用户点击时清除默认文本,以便输入自定义内容
    2024-09-09
  • Python for循环中的陷阱详解

    Python for循环中的陷阱详解

    这篇文章主要给大家介绍了关于Python for循环中陷阱的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论