需要把中文资料拆成句子,并保留句子在原文中的位置时,可以使用 spaCy Sentencizer。它按标点规则确定句界,不需要下载统计模型;没有标点的聊天记录、标题列表和古文不能靠这条规则保证正确断句。
准备规则式中文流程
安装 spaCy,创建空白中文流程,加入 sentencizer。本文使用明确的句末标点集合,便于核对规则;这是自然语言处理预处理工具,不是让生成模型改写文章。

python -m pip install spacy
输出句子和字符位置
import spacy
nlp = spacy.blank("zh")
nlp.add_pipe("sentencizer", config={"punct_chars": ["。", "!", "?", "!", "?"]})
text = "第一句。第二句!第三句?最后一段没有终止符"
doc = nlp(text)
for sentence_id, span in enumerate(doc.sents):
print(sentence_id, span.start_char, span.end_char, repr(span.text))
assert text[span.start_char:span.end_char] == span.text
保存为 split_sentences.py,运行 python split_sentences.py。文本是人为构造的标点样例;字符位置使用 Python 字符串索引,不是 UTF-8 字节数。索引从 0 开始,结束位置不包含在片段内。
用原文切片验证句界
验证应看到四段:第一句、第二句、第三句分别带句末标点,最后没有终止符的尾段仍被保留。每段都用原文起止位置切片核对,不能只看打印出的句子似乎正确。
再用真实文本试测引号、数字小数、连续问号和换行标题。标点本身并不总是句末,比如书名或引用中的问号,规则可能切到你不希望的位置;相反仅换行而无句末标点可能不会自动成句。
怎样调整而不丢来源
下一步先对几十段代表性文本人工标注期望句界,按错误类型调整 punct_chars 或增加自定义规则,再用同一份样本回归。复杂语法依赖的断句可以考虑统计句界模型,但要另行检查语言支持与效果。
清洗文本会改变偏移:先去空格、合并换行或替换标点,再断句时,位置指向的是清洗后文本。需要回查原文件时,要同时保留原文和变换记录,不把这套字符位置直接写成原文件坐标。
本例只检查标点规则与切片一致性,不构成中文全文断句准确率测试。断句用于训练切分或检索切片时,还要保留文档 ID,必要时将相邻句组合,避免把条件与例外拆开。
资料与适用版本
以下官方资料核对于 2026 年 10 月 1 日;安装和界面以实际使用版本为准。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30680.html