倒排索引(信息检索-python代码)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

  1. 通过实验理解倒排索引的构建过程;
  2. 掌握采用倒排索引做一个简单的搜索引擎,实现对关键字的检索。

提示:以下是本篇文章正文内容,下面案例可供参考

一、介绍

  1. 实验1:采用倒排索引做一个用数组模拟文档的简单的搜索引擎;
  2. 实验2:改写实验1,实现对文档的倒排索引。

二、实验 1

代码如下(示例):


docu_set={'d1':'i love shanghai',
          'd2':'i am from shanghai now i study in tongji university',
          'd3':'i am from lanzhou now i study in lanzhou university of science and technolgy',}

all_words=[]
for i in docu_set.values():
    cut=i.split()
    all_words.extend(cut)
    
set_all_words=set(all_words)
print(set_all_words)


#构建倒排索引
invert_index=dict()
for b in set_all_words:
    temp=[]
    for j in docu_set.keys():
        
        field=docu_set[j]
        
        split_field=field.split()
        
        if b in split_field:
            temp.append(j)
    invert_index[b]=temp     
print(invert_index)   

print('全文搜索university:', invert_index['university'])

2.实验 2

代码如下(示例):


doc_set = {
    'd1': 'i love shanghai',
    'd2': 'i am from shanghai now i study in tongji university',
    'd3': 'i am from lanzhou now i study in lanzhou university of science and technology'
}
# 构建倒排索引
invert_index = {}
for doc_id, doc_content in doc_set.items():
    words = doc_content.split()
    for word in words:
        if word not in invert_index:
            invert_index[word] = []
        invert_index[word].append(doc_id)
# 搜索
query = 'university'
if query in invert_index:
    result = invert_index[query]
    print('包含查询词的文档:', result)
else:
    print('没有包含查询词的文档。')

总结

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
倒排索引(Inverted Index)是一种常用的文本检索方法。它将文本中的每个单词与包含该单词的文档进行关联,并以此建立一个索引结构,用于快速查找包含特定单词的文档。 以下是一个使用Python实现倒排索引代码示例: ```python import re def create_inverted_index(documents): inverted_index = {} for doc_id, doc_text in enumerate(documents): words = re.findall('\w+', doc_text.lower()) # 使用正则表达式提取文档中的单词,并转换为小写 for word in words: if word not in inverted_index: inverted_index[word] = set() # 创建一个空的集合,用于存储包含该单词的文档编号 inverted_index[word].add(doc_id) return inverted_index # 示例文本 documents = [ "这是文档1的内容,其中包含了一些单词。", "文档2包含了一些不同的单词。", "文档3中也有一些单词,这些单词可能与其他文档中的单词重复。" ] inverted_index = create_inverted_index(documents) # 打印倒排索引 for word, doc_ids in inverted_index.items(): print(word, "->", doc_ids) ``` 运行以上代码,会得到如下输出: ``` 这是文档1的内容,其中包含了一些单词。 -> {0} 文档2包含了一些不同的单词。 -> {1} 文档3中也有一些单词,这些单词可能与其他文档中的单词重复。 -> {0, 2} 其中 -> {0} 包含了 -> {0, 1} 不同的 -> {1} 单词 -> {0, 1, 2} 一些 -> {0, 1, 2} 文档 -> {0, 1, 2} 可能 -> {2} 其他 -> {2} 重复 -> {2} ``` 以上代码通过遍历文档中的单词,将每个单词与包含它的文档的编号关联起来,并构建了一个包含所有单词的倒排索引。可以通过查询某个单词,快速找到包含该单词的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值