You need to enable JavaScript to run this app. Python实现术语到对应倒排表映射的索引函数开发
优惠活动
大模型
产品
解决方案
定价
更多

Python实现术语到对应倒排表映射的索引函数开发

基于Python的倒排表映射实现

描述中的疏漏修正

你列出的期望映射结构存在两处小问题:

  • 重复书写了两次"bread": [1],Python字典不支持同键重复定义,重复条目会被自动覆盖
  • 原文档集合中的词汇meat属于索引为1的文档,没有被包含在你给出的期望结果中

核心实现逻辑

生成这类术语-文档索引映射的流程非常直接:

  • 遍历文档集合时,同步记录当前处理的文档索引位置
  • 对单篇文档拆分得到的每个词汇,判断是否已经在结果字典中存在:存在就往对应的值列表里追加当前文档索引,不存在就新建键值对,将当前索引作为列表的初始值

可运行实现代码

def generate_inverted_map(collection):
    inverted_map = {}
    # 同步获取文档索引和文档原文
    for doc_index, doc_text in enumerate(collection):
        terms = doc_text.split()
        for term in terms:
            if term not in inverted_map:
                inverted_map[term] = []
            inverted_map[term].append(doc_index)
    return inverted_map

# 测试输入
collection = ["apple orange milk" , "bread milk meat apple" , "apple orange"]
inv_ls = generate_inverted_map(collection)

运行上述代码后得到的实际输出为:

{'apple': [0, 1, 2], 'orange': [0, 2], 'milk': [0, 1], 'bread': [1], 'meat': [1]}

可选优化点

如果你的倒排表只需要记录词汇所属的文档范围,不需要统计词汇在单文档内的出现次数,可以在遍历单文档词汇时先做去重处理,避免同一文档内重复出现的词汇被重复追加文档索引:

def generate_inverted_map(collection):
    inverted_map = {}
    for doc_index, doc_text in enumerate(collection):
        # 对单文档内的词汇先去重
        for term in set(doc_text.split()):
            if term not in inverted_map:
                inverted_map[term] = []
            inverted_map[term].append(doc_index)
    return inverted_map

内容的提问来源于stack exchange,提问作者user15874067

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 08:45:03