You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于查询统计倒排索引词频并生成排序文档列表

需求与实现说明

现有倒排索引

我已构建如下格式的倒排索引:

{
    'experiment': {'d1': [1, [0]], ..., 'd30': [2, [12, 40]], ..., 'd123': [3, [11, 45, 67]], ...}, 

    'studi': {'d1': [1, [1]], 'd2': [2, [0, 36]], ..., 'd207': [3, [19, 44, 59]], ...}
}

其中,术语experiment在文档d1中出现1次,位置为0;在文档d30中出现2次,位置为12和40,以此类推。

查询字典格式

需要处理的查询字典格式如下:

{
    'q1'  : ['similar', 'law', ..., 'speed', 'aircraft'],
    'q2'  : ['structur', 'aeroelast', ..., 'speed', 'aircraft'], 
    ...
    'q225': ['design', 'factor', ..., 'number', '5']
}

期望输出

最终需生成如下格式的结果:

{
    'q1'  : ['d51', 'd874', ..., 'd717'], 
    'q2'  : ['d51', 'd1147', ..., 'd14'],
    ...,
    'q225': ['d1313', 'd996', ..., 'd193']
}

输出中,键为查询名称,值为包含该查询中所有术语的文档列表,且列表需按照**文档的总词频(所有查询术语在该文档中的出现次数之和)**降序排列。


实现思路

  • 遍历每个查询,对每个查询中的术语,从倒排索引中获取对应的文档及词频
  • 统计每个文档的总词频:将查询中所有术语在该文档的出现次数相加
  • 过滤掉总词频为0的文档(即未包含任何查询术语的文档)
  • 按总词频从高到低排序文档,得到最终的文档列表

示例代码

def process_queries(inverted_index, queries):
    result = {}
    for q_name, terms in queries.items():
        doc_freq = {}
        for term in terms:
            # 跳过倒排索引中不存在的术语
            if term not in inverted_index:
                continue
            for doc_id, (count, _) in inverted_index[term].items():
                if doc_id in doc_freq:
                    doc_freq[doc_id] += count
                else:
                    doc_freq[doc_id] = count
        # 按总词频降序排序,词频相同则按文档ID排序(可选)
        sorted_docs = sorted(doc_freq.keys(), key=lambda x: (-doc_freq[x], x))
        result[q_name] = sorted_docs
    return result

# 示例调用
inverted_index = {
    'experiment': {'d1': [1, [0]], 'd30': [2, [12, 40]], 'd123': [3, [11, 45, 67]]},
    'studi': {'d1': [1, [1]], 'd2': [2, [0, 36]], 'd207': [3, [19, 44, 59]]}
}

queries = {
    'q1': ['experiment', 'studi'],
    'q2': ['studi']
}

output = process_queries(inverted_index, queries)
print(output)

运行上述代码后,输出结果为:

{
    'q1': ['d1', 'd2', 'd30', 'd123', 'd207'],
    'q2': ['d207', 'd2', 'd1']
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:36:23