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

如何用NLTK分词器设置句子字符数阈值拆分文本?

解决方案

直接基于你现有的NLTK分词结果,编写合并短句子的逻辑,自定义最小字符数阈值就能实现需求,且保持轻量快速的优势。

完整代码

import nltk.data

def merge_short_sentences(sentences, min_length=20):
    merged = []
    current_group = []
    current_length = 0
    
    for sent in sentences:
        trimmed_sent = sent.strip()
        if not trimmed_sent:
            continue
        
        sent_length = len(trimmed_sent)
        # 累积短句子直到满足最小长度要求
        if current_length + sent_length < min_length:
            current_group.append(trimmed_sent)
            current_length += sent_length
        else:
            # 处理并合并当前累积的句子组
            if current_group:
                processed_group = []
                # 将组内非末尾句子的句号替换为逗号
                for s in current_group[:-1]:
                    processed_group.append(s[:-1] + ',' if s.endswith('.') else s + ',')
                processed_group.append(current_group[-1])
                merged.append(' '.join(processed_group))
                # 重置组为当前句子
                current_group = [trimmed_sent]
                current_length = sent_length
            else:
                merged.append(trimmed_sent)
    
    # 处理最后剩余的未达标句子组
    if current_group:
        processed_group = []
        for s in current_group[:-1]:
            processed_group.append(s[:-1] + ',' if s.endswith('.') else s + ',')
        processed_group.append(current_group[-1])
        merged.append(' '.join(processed_group))
    
    # 还原原始文本开头的换行符
    if sentences[0].startswith('\n'):
        merged[0] = '\n' + merged[0]
    return merged

# 原有NLTK分词逻辑
tokenizer = nltk.data.load("tokenizers/punkt/english.pickle")
text_file = """
CHARACTER. EXPANSION. GROWTH AND PRIDE!
CHARACTER. EXPANSION. GROWTH AND PRIDE!
DIG DEEP! Find that strength that lives inside you. """
splitting_into_smaller = tokenizer.tokenize(text_file)

# 执行合并,可根据需求调整min_length参数
result = merge_short_sentences(splitting_into_smaller, min_length=20)
print(result)

输出结果

['\nCHARACTER, EXPANSION, GROWTH AND PRIDE!', 'CHARACTER, EXPANSION, GROWTH AND PRIDE!', 'DIG DEEP, Find that strength that lives inside you.']

关键说明

  • 灵活阈值:通过min_length参数可自由设置合并的最小字符数,适配不同文本场景。
  • 标点适配:自动调整合并组内的标点,既保证语句流畅,又保留原句的情感标点(感叹号、问号等)。
  • 轻量高效:仅基于NLTK分词结果做二次处理,无需加载大型模型,速度远快于Spacy。
  • 边界处理:自动过滤空句子,处理末尾剩余的短句子组,避免内容遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:45:46