You need to enable JavaScript to run this app. Python实现多文档NLP任务下句子索引连续计数不重置
优惠活动
大模型
产品
解决方案
定价
更多

Python实现多文档NLP任务下句子索引连续计数不重置

多文档跨边界连续句子索引实现方案

核心实现逻辑

不需要改动你已经跑通的多文档整合流程,只需要在单文档处理环节加入累计偏移量计算,即可实现跨文档句子编号连续:

  • 维护全局累计偏移变量global_sentence_offset,初始值为0,记录所有已处理文档累计的句子总数量
  • 逐文档读取时,先提取当前文档所有行的原始句子编号
  • 对当前文档的所有索引,给句子部分统一加上全局偏移值,词部分保持原样
  • 当前文档处理完成后,把当前文档的总句子数累加到全局偏移变量中,再处理下一个文档

可直接落地的代码

import pandas as pd
import re

# 全局状态初始化
global_sentence_offset = 0  # 跨文档累计的句子偏移量
all_docs_combined = []        # 存储所有处理完成的文档内容

# 替换为你实际的多文档路径列表
doc_file_list = ["doc1.tsv", "doc2.tsv", "doc3.tsv"]

for doc_path in doc_file_list:
    # 读取单个制表符分隔文档
    df = pd.read_csv(doc_path, sep="\t", encoding="utf-8")
    
    # 提取每行的原始索引组成:句编号、词编号(基于你已有的正则逻辑优化)
    index_pair_list = []
    for raw_index in df["Sectionindex"]:
        match_res = re.search(r"(\d+)-(\d+)", raw_index)
        orig_sent_id = int(match_res.group(1))
        orig_word_id = int(match_res.group(2))
        index_pair_list.append((orig_sent_id, orig_word_id))
    
    # 计算当前文档内的总句子数(取原始句编号最大值即可,文档内本身是连续计数的)
    doc_total_sent_count = max([pair[0] for pair in index_pair_list])
    
    # 逐行生成调整后的连续索引
    adjusted_indexes = []
    for orig_sent, orig_word in index_pair_list:
        continuous_sent_id = global_sentence_offset + orig_sent
        adjusted_index = f"{continuous_sent_id}-{orig_word}"
        adjusted_indexes.append(adjusted_index)
    
    # 替换DataFrame里的原索引列
    df["Sectionindex"] = adjusted_indexes
    
    # 更新全局偏移,准备处理下一个文档
    global_sentence_offset += doc_total_sent_count
    
    # 把处理好的文档加入整合队列
    all_docs_combined.append(df)

# 最终生成全局整合的总DataFrame
final_corpus_df = pd.concat(all_docs_combined, ignore_index=True)

效果校验

完全匹配需求场景:

  • 若前一个文档处理完成后累计偏移为61(即前序最后一个句子编号为61),新文档内的原始索引为1-1、1-2,调整后会生成62-1、62-2,和预期的跨文档连续序列完全一致
  • 词编号完全保留原有值,不做强制连续调整,符合需求规则
  • 对原有的正则匹配逻辑做了兼容性优化,避免匹配时抓到非数字字符的问题

特殊场景适配

如果遇到个别文档的原始句编号不是从1开始计数,只需要把偏移计算的逻辑稍作调整:用当前文档原始句编号的最小值做偏移基准即可,不需要改动整体流程。


内容的提问来源于stack exchange,提问作者Tim Säll

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 22:06:03