返回教程列表
文本分析基础教程文本结构还原标点还原文本预处理访谈转写

文本结构还原教程:断句和标点怎样影响文本分析的准确度

录音转写稿、会议记录和从网页复制的正文常常没有标点,直接拿去分析,切句、分词和统计都会建立在断错的句子上。这篇教程先用级联误差的公式,以及信息抽取和句法分析的两项经典实验,说明断句和标点怎样影响后面分析的准确度;再用一段中文访谈演示三种常见错法,分词会跨过原来的停顿,词组统计会多出假搭配,13 句话会变成 1 句。后半部分讲补标点在计算上是什么问题,序列标注和生成式还原两种做法有什么区别,自定义词典和长文章分块怎样处理,句长偏好怎样设;还讲怎样用精确率、槽错误率和逐字核对检查结果。最后说明 TATOOLS 文本结构还原器报告里每个数字怎么算,以及补完标点以后怎样交给可读性分析、抽取式摘要、相似句查找和高级情感分析继续分析。

作者:TATOOLS 研究团队|更新于 2026-09-17|12806 个字符|约 43 分钟读完
sentence-punctuator
立即使用

一段两小时的访谈录音转成文字,常常是一大段连在一起的汉字,中间没有一个标点。会议记录和从网页复制下来的正文也经常这样,有的社交媒体长帖干脆用空格代替标点。拿这样的材料直接做分析,工具照样会出结果,只是结果往往不准。

这是因为文本分析是一步接一步做的。先切句,再分词,然后才进入真正想做的分析,比如算可读性或者挑摘要句。每一步都用上一步的结果,句子在哪里断开,是整条流程里最早做出的判断。

文本结构还原(Punctuation Restoration,也叫标点还原)做的事情,是给这类材料补上标点、重新断句,原文的字一个不改。句子断对了,分词不会跨过原来的停顿,搭配统计只在一句话里面数,按句子算的工具拿到的也是一句一句完整的话,后面的分析就更准。

在 TATOOLS 的【文本结构还原器】里【上传文档】,就能拿到按原文顺序排好、带标点的句表,还有平均句长和短中长句的分布。下载的整理文本每行一句,可以直接交给后面的分析工具。

这篇教程先用一个公式和两项经典实验讲清断句对准确度的影响,再用一段中文访谈演示三种常见的错法。后半部分讲标点具体怎么补,长文章和专有名词怎么处理,结果怎么评估和核对,最后是报告的读法和补完标点以后能接着做的分析。

01

很多分析工具是按句子算的

国家标准《标点符号用法》(GB/T 15834—2011)把点号分成两类。句号、问号和叹号是句末点号,表示一句话说完了;逗号、顿号、分号和冒号是句内点号,表示句子中间的停顿。按这个标准,一句话就是到句末点号为止的那一段文字。

用符号写出来更清楚。把一份材料看成 m 个字符组成的序列 c,断句就是选出 N 个切开的位置,组成集合 B。第 j 句 s_j 就是第 j − 1 个位置和第 j 个位置之间的那段字符。

· · ·

c = (c_1, c_2, …, c_m)

B = {b_1 < b_2 < … < b_N},b_0 = 0,b_N = m

s_j = c_(b_(j−1)+1) … c_(b_j),j = 1, …, N

举个例子。【社区主任说好,几天后又说名额满了。后来我们也就没再去问。】一共 28 个字符,两个句号分别是第 17 和第 28 个字符,B = {17, 28},切出两句,长度分别是 17 和 11。

句子切好以后,后面的分析就以句子为单位来算。判断情感时一句判一次,算平均句长时句子数是分母,统计词组搭配时只在一句话或者两个标点之间数。TATOOLS 里有好几件工具直接依赖标点和句子。

TATOOLS 工具 标点和句子在里面起什么作用
文本可读性分析 按句末点号切句,平均句长是可读性评分的一项
抽取式摘要 把每句话当作候选,按句子之间的相似度排序后挑出来
相似句查找 把文本切成单句,两句两句地比较意思
高频词提取 统计两到四个词组成的固定说法时,只在两个标点之间数
依存句法分析 优先在句末点号处把长文切成片段,再一段段分析句子结构
高级情感分析 每行判断一次,每行一句时就是逐句判断

同一份材料的标点对不对,决定了这些工具拿到手的是一句完整的话、半句话,还是好几句连成的一大段。

02

前一步断错,后面每一步都跟着错

文本分析通常是一条流水线(Pipeline),几个处理步骤首尾相接。设 h 是断句,g 是分词,f 是最后要做的分析,原文 T 的分析结果就是三个函数套在一起。

· · ·

R = f( g( h(T) ) )

断句出的错,分词这一步看不出来,只能照着错的句子往下切,分析那一步也一样。前一步的错误一层层传到后面,叫作级联误差(Cascading Errors)。Finkel、Manning 和 Ng 在 2006 年专门写过论文,讨论语言标注流水线里的这个问题。

最后的准确度可以按断句对错拆开来算。把分析的对象分成两组,一组句子断对了,另一组断错了,总的准确度就是两组准确度按比例加起来。

· · ·

A = a × A_对 + (1 − a) × A_错

a:断句正确的部分所占的比例

A_对:断句正确时的分析准确度

A_错:断句错误时的分析准确度

A_对 和 A_错 差得越多,分析结果受断句的影响就越大。假设某项信息抽取在句子断对时准确度是 0.80,断错时只有 0.40(数字是为了演示假设的)。断句正确的比例 a 是 0.60 时,A = 0.60 × 0.80 + 0.40 × 0.40 = 0.64;a 提高到 0.95,A = 0.95 × 0.80 + 0.05 × 0.40 = 0.78。抽取方法一点没改,准确度提高了 0.14,全部来自前面的断句。

比较两种分析方法谁更好之前,应该先把句子断对,不然比出来的差距里混着断句的误差。TATOOLS 把【文本结构还原器】放在分析开始之前,要提高的就是公式里的 a。

03

少了逗号,信息抽取的得分掉了多少

标点对后面分析的影响,在语音转写研究里有过专门的实验。比较不同条件时常用相对降幅,S 是同一个系统在不同标点条件下的得分。

· · ·

相对降幅 = (S_参照 − S_条件) / S_参照

Makhoul 等人 2005 年把英文广播新闻和通讯稿的录音转写交给同一个信息抽取系统,只改变转写稿里的标点,看系统找人物机构和它们之间关系的得分。实体值得分(Entity Value Score,EVS)衡量实体找得准不准,关系值得分(Relation Value Score,RVS)衡量实体之间的关系找得准不准,两项都是越高越好。下表是转写没有识别错误时的得分。

标点从哪来 EVS RVS
人工加的全部标点 59.7 27.3
人工断句,加上逗号 58.9 25.9
只有人工断句 53.4 21.3
只有机器断句 51.7 19.9

第二行和第三行的区别只在逗号。去掉逗号以后,EVS 从 58.9 降到 53.4,相对降幅是 (58.9 − 53.4) / 58.9 ≈ 9.3%;RVS 从 25.9 降到 21.3,相对降幅是 (25.9 − 21.3) / 25.9 ≈ 17.8%。从第一行的全部人工标点一直降到最后一行的只有机器断句,EVS 相对降了 (59.7 − 51.7) / 59.7 ≈ 13.4%,RVS 降了 (27.3 − 19.9) / 27.3 ≈ 27.1%。论文把多种识别错误率下的结果平均以后,给出的数字是实体大约降 13.5%,关系大约降 25%。

关系得分掉得比实体得分多。作者的解释是,同位语这类结构要靠逗号标出来,抽取规则就是靠这些逗号认出它们。同位语是补充说明前一个名词的成分,比如【布什,美国总统,今早表示】里的【美国总统】。

句中的逗号和句末的句号一样,带着后面分析需要的结构信息。TATOOLS 的【文本结构还原器】补的不只是句号,逗号、顿号和分号也会一起补上。

04

句子断得越准,句法分析越准

Kahn、Ostendorf 和 Chelba 2004 年用英文电话对话做了另一个实验。句法分析器保持不变,只换句子边界的来源,看分析出来的句子结构对不对。他们用 PARSEVAL(按句法树里的括号对不对得上来打分的标准方法)算括号精确率和召回率,还统计了交叉括号数,也就是分析出来的短语边界和标准答案互相交叉的次数,这个数越少越好。

句子边界从哪来 括号精确率 括号召回率 交叉括号数
人工断句,加上标点 79.30 69.91 35.88
人工断句 68.40 77.45 46.80
机器断句 63.09 72.47 66.21
只按说话停顿断 58.67 68.05 80.40

句子边界越接近人工标注,交叉括号越少,从只按停顿断的 80.40 降到人工断句的 46.80。以只按停顿断为起点、人工断句为上限,中间这段就是断句能带来的全部提升。机器断句拿到了其中多少,可以用增益占比 G 来算。

· · ·

G = (S_机器 − S_停顿) / (S_人工 − S_停顿)

精确率:(63.09 − 58.67) / (68.40 − 58.67) = 4.42 / 9.73 ≈ 45.4%

召回率:(72.47 − 68.05) / (77.45 − 68.05) = 4.42 / 9.40 ≈ 47.0%

机器断句拿到了不到一半的提升空间。人工断句之后再加上标点,精确率和召回率的调和平均又从 72.6 升到 74.3。

两项实验的结论一致,句子边界越准,后面的分析越准,句中的逗号还能再带来一部分提升。TATOOLS 的【依存句法分析】也是先切句再分析结构,句子断对了,它分析的才是完整的句子。两项实验用的都是英文语音转写,下面换成中文材料,看缺了标点具体会错在哪里。

05

用一段中文访谈看三种错法

下面这段是为这篇教程写的社区养老访谈答话,共 227 个汉字、30 个标点。

我家老人今年八十三了,腿脚不方便,白天基本离不开人。主要是我爱人在照顾,孩子都在外地工作,一年回来两三次。社区的日间照料中心,我们去年去问过。社区主任说好,几天后又说名额满了。后来我们也就没再去问。请护工上门也考虑过,费用太高,中等收入家庭长期负担不起。您问最需要什么帮助?我觉得是助餐和陪诊。老人一个人去医院,挂号、缴费、拿药都搞不明白。要是有志愿者陪着,我们上班也能安心一些。街道也办过几次讲座,讲防诈骗,讲慢病管理,老人挺爱去的。只是时间都安排在工作日上午,家里人没法陪。如果能挪到周末,参加的人肯定会更多。

把标点全部删掉,就是一份典型的无标点转写稿。拿它和原文对比,能看到三种错法。

分词会把标点两边的字拼成一个词

中文分词通常把标点当成天然的分界,标点两边的字不会被切进同一个词。标点一删,两边的字就可能拼成词典里的常用词。用 TATOOLS 使用的分词器切材料里的一个片段,结果是这样的。

· · ·

有标点:费用 太高 , 中等 收入 家庭 长期 负担 不起

无标点:费用 太 高中 等 收入 家庭 长期 负担 不起

【太高,中等】之间的逗号没了,分词器切出了一个【高中】。以有标点时的切法为标准答案,按每个词的起止位置逐个对照。标准答案有 8 个词,无标点时切出 9 个,起止位置对得上的有 6 个。精确率(Precision)是切出来的词里切对的比例,召回率(Recall)是标准答案里被切对的比例,F1 是两者的调和平均。

· · ·

精确率 = 6 / 9 ≈ 0.667

召回率 = 6 / 8 = 0.75

F1 = 2 × 精确率 × 召回率 / (精确率 + 召回率) = 12 / 17 ≈ 0.706

少了一个逗号,F1 就从 1 降到 0.706。切错的词还会接着往下传,【高频词提取】会多数出一个【高中】,【中等 收入】这个固定说法反而数不到了。

词组统计会多出材料里没有的搭配

统计搭配和固定说法时,要先规定哪些词算挨着,这个范围叫窗口(Window)。常见的做法是把两个标点之间的一段当作一个窗口,窗口里每两个挨着的词算一个词组,n 个词就有 n − 1 个词组。标点一删,窗口就跨过了原来的停顿。取材料里的【我爱人在照顾,孩子都在外地工作,一年回来两三次】,只留两个字以上的词来数。

· · ·

有标点:[爱人 照顾] [孩子 外地 工作] [一年 回来 两三次]

        词组数 = 1 + 2 + 2 = 5

无标点:[爱人 照顾 孩子 外地 工作 一年 回来 两三次]

        词组数 = 8 − 1 = 7

多出来的两个词组是【照顾孩子】和【工作一年】。【照顾孩子】连意思都变了,原话是爱人在照顾老人,孩子在外地工作,标点一删就读成了爱人在照顾孩子。凡是按标点划窗口的搭配统计和关系抽取,都会把它当成材料里真说过的话计进去。

13 句话会变成 1 句

分析单位(Unit of Analysis)是一次统计或判断针对的对象。按句子算的工具先切句再计算,句子怎么切,决定了一共算几段话、每段是哪些字。按句末点号切,示例材料有 13 句,连标点一共 257 个字符,平均句长是 257 / 13 ≈ 19.8 个字符。标点删掉以后,整段只剩 1 句,平均句长变成 227 个字符。

TATOOLS 工具 补好标点、每行一句时 没有标点时
文本可读性分析 平均句长 19.8 个字符 平均句长 227 个字符,评分偏向很难读
抽取式摘要 从 13 句里挑 只有 1 句,摘要只能是全文
相似句查找 13 句两两比较,共 78 对 整段太长,只能按长度硬切,切口可能在词中间
高级情感分析 13 行,一句判断一次 1 行,整段只判断一次

三种错法的根子都在标点。TATOOLS 的【文本结构还原器】在分析开始之前把标点补回去,分词、搭配统计和按句子算的工具就又回到了一句一句的话上。

06

补标点到底在做什么

从计算的角度看,补标点是给每个词后面选一个标点。设一段没有标点的文本切词后得到词序列 w,一共 n 个词。在第 i 个词后面选一个标签 y_i,标签从标点集合 L 里取,∅ 表示什么都不加。把词和标签依次拼起来,就是补好标点的文本。

· · ·

w = (w_1, w_2, …, w_n)

L = {∅, 逗号, 顿号, 分号, 冒号, 句号, 问号, 叹号}

输出 = w_1 y_1 w_2 y_2 … w_n y_n

ŷ = argmax_y P(y | w)

最后一行的意思是,在所有可能的标法里挑出概率最大的那一种。这个定义里有一条硬规则,词的顺序和词本身都不能动,只能在词和词之间插入标点。换成编辑距离的说法,从原文到结果只允许插入,替换和删除都不允许。句号放在哪里,句子就在哪里断开,补标点和断句是同一件事。

拿材料里的一句话试试。【社区主任说好几天后又说名额满了】切出 10 个词,关键在第 3 个词【说好】后面放不放逗号。

· · ·

w = 社区 主任 说好 几天 后 又 说 名额 满 了

读法一:y_3 = 逗号 → 社区主任说好,几天后又说名额满了。

读法二:y_3 = ∅ → 社区主任说好几天后又说名额满了。

两种读法只差一个标签,说的事却不一样。读法一是主任先答应了,几天后又改口;读法二很容易读成主任过了好几天才说名额满了,答应过这件事就看不出来了。要是做事件抽取或者立场分析,这个逗号决定了材料里记录的是一件事还是两件事。

标法的数量也说明了为什么要靠模型来选。末尾固定放句号,中间还剩 9 个位置,就算每个位置只在不加、逗号和句号三种里选,也有 3^9 = 19,683 种标法,选哪一种要看整句话甚至上下文的意思。

TATOOLS 把这条硬规则直接写进了还原要求。模型拿到的是切好的词序列,只能在词和词之间补标点、断开句子,词序和词语都保持原样,最后返回一张句子列表。

07

补标点的两种做法

标点还原的方法大致沿两条路发展。第一条是序列标注(Sequence Labeling),给每个位置直接预测一个标签。早期用条件随机场(Conditional Random Field,把整串标签放在一起算概率的模型),后来有带注意力机制的双向循环网络,再后来是预训练语言模型加一个分类层。第二条是生成式还原(Generative Restoration),让语言模型读入词序列,直接写出带标点的句子。

对比 序列标注 生成式还原
输出什么 每个位置一个标签,再和词拼起来 直接写出带标点的句子
会不会改动原文 输出的结构决定了改不了 靠还原要求约束,写完要核对
能用哪些标点 训练时就定好了 可以按意思用问号、叹号和引号
需不需要标注语料 需要同领域的人工标注语料 新领域的材料可以直接处理
能看多少上下文 附近窗口里的几个词 整段话的意思,方便判断疑问、感叹和引语

两种做法最大的区别在第二行。序列标注的输出只能是 w_1 y_1 … w_n y_n 这种形式,结构上就不会改字。生成式还原的输出是一段重新写出来的文字,有没有改字需要事后检查。换来的好处是换了领域也能直接用。访谈转写和会议记录不用单独准备标注语料,网页正文和社交媒体长帖也一样。

TATOOLS 用的是生成式还原,另外做了两件事。一是材料作为待处理的数据交给模型,材料里就算有像指令一样的句子,也只会被当成要断句的文字。二是结果保留了逐句的句表和完整结果文件,方便按后面讲的办法逐字核对。

08

自定义词典决定哪里可以断开

候选断点(Candidate Boundary)是可以放标点的位置。不算文本末尾,按字来断,m 个字之间有 m − 1 个候选断点;先切词再断,候选断点只在词和词之间,n 个词只有 n − 1 个。词怎么切,决定了模型能在哪里断开,也决定了要从多少种标法里挑。

· · ·

按字断的候选断点数 = m − 1

按词断的候选断点数 = n − 1,n ≤ m

标法的数量 = |L| ^ 候选断点数

以【乡村振兴战略稳步推进】为例,10 个字之间有 9 个位置。通用分词把它切成【乡村 振兴 战略 稳步 推进】5 个词,剩下 4 个位置。把【乡村振兴】加进词典,它就切成 4 个词,只剩 3 个位置。按 3 种标签算,标法的数量依次是 3^9 = 19,683、3^4 = 81 和 3^3 = 27。词典越贴合材料,要挑的标法越少,专有名词中间也不会被断开。

TATOOLS 会先把【自定义词典】加载进通用中文分词器,再给全文切词。词典一行写一个词,也可以写成【词 词频 词性】,中间用空格隔开,多个词之间用逗号、顿号、分号或者换行分开都行。词典只影响词怎么切,不会增减任何字。后面做分析时也用同一份词典,补标点和做分析两个阶段对专有名词的切法就一致。

切词时,原文里的换行和空格会一起去掉,全文变成一条连续的词序列,句子在哪断开完全按语义和语法来判断。用空格代替标点的长帖也因此能重新断句。原文里本来就有的标点会作为词留在序列里,模型在这个基础上补上缺的标点。

09

长文章怎么分块处理

语言模型一次能处理的文本长度有限,长文章要分成几块。设每块 B 个词,衔接长度 k 个词,n 个词的材料分成 J 块。从第 2 块开始,每块的输入是上一块最后 k 个词加上本块的词,这 k 个词叫衔接上下文。

· · ·

J = ⌈n / B⌉

第 1 块输入:w_1 … w_B

第 j 块输入:w_((j−1)B−k+1) … w_((j−1)B) + w_((j−1)B+1) … w_(min(jB, n))

总输入词数 = n + (J − 1) × k

分块的位置是按词数定的,经常落在一句话中间。带上衔接上下文,新一块的第一句能连着前文一起判断;代价是这 k 个词会被处理两遍,拼接时要把重复去掉。拿 n = 14,B = 6,k = 2 手算一遍。

块 衔接上下文 本块的词 输入词数
第 1 块 无 w_1 到 w_6 6
第 2 块 w_5、w_6 w_7 到 w_12 8
第 3 块 w_11、w_12 w_13、w_14 4

一共 3 块,总输入词数 6 + 8 + 4 = 18,和公式算出的 14 + 2 × 2 = 18 一样。

TATOOLS 碰到超过块长的材料,会按固定词数分块,所有块同时提交处理,结果按原来的顺序拼接。拼接时,如果新一块输出的某句话比较短,而且已经完整包含在上一块的最后一句里,就当作衔接重复删掉。块和块接上的地方有两种情况。

1

分块正好落在句末。第 1 块最后一句是【后来我们也就没再去问。】,第 2 块带着衔接词【去 问】开头,输出的第一句是【去问。】。这句已经包含在上一句里,拼接时删掉,结果和不分块一样。

2

分块落在句子中间。第 1 块最后几个词是【请 护工 上门】,这一块输出了【请护工上门。】;第 2 块带着衔接词【护工 上门】接着处理,输出【护工上门也考虑过。】。这句没有包含在上一句里,拼接后会保留,于是【护工上门】出现了两次,本来的一句话也被拆成了两句。

抽查长文章的结果时,要重点看块和块接上的地方,第二种情况留下的痕迹是相邻两句之间重复了几个词。某一块如果没能返回结果,这一块就不产生句子,输出里会少掉对应的一段。后面讲的逐字核对能把这两种问题都找出来。

10

句子断长还是断短

句长 ℓ_j 是第 j 句的字符数。平均句长(Mean Sentence Length,MSL)是所有句子字符数的平均值,也是文体研究里最常用的长度指标,Yule 早在 1939 年就用句长分布研究作者的写作风格。

· · ·

ℓ_j = len(s_j),字符包括汉字、标点、数字和字母

MSL = (ℓ_1 + ℓ_2 + … + ℓ_N) / N

同一段话可以断成几个长句,也可以断成更多短句,两种断法在语法上都说得通。断长还是断短,要看后面做什么分析。Matusov、Mauser 和 Ney 2006 年为语音翻译设计断句方法时,就在断句模型里加入了句段长度模型,还设了最短和最长的长度限制,让句子长短合乎翻译的需要。

把希望的句长范围 [a, b] 写成一条软约束,就是在语义合不合理之外,再给超出范围的句子扣分。

· · ·

ŝ = argmax_s [ log P(s | w) − λ × Σ_j φ(ℓ_j) ]

φ(ℓ) = max(0, a − ℓ) + max(0, ℓ − b)

句长在 [a, b] 里面时不扣分,超出多少就扣多少。λ 越大,扣分越重,约束也就越接近硬性的上下限。软约束让意思完整排在第一位,句长偏好只在几种都说得通的断法之间做选择。

手算一个例子。一段材料断成两句,分别是 80 和 20 个字符,第一句正中间有一个逗号。

最长句长 句长 句数 N MSL 长句(30 个字符及以上) 中句(10 到 29 个字符)
100 80、20 2 100 / 2 = 50.0 1 1
60 40、40、20 3 100 / 3 ≈ 33.3 2 1

最长句长设为 60 时,80 个字符的那句要扣 φ = 80 − 60 = 20 分。在逗号处拆开,把逗号改成句号,两句各 40 个字符,都不扣分,总字符数还是 100。句数从 2 变成 3,平均句长从 50.0 降到 33.3,长句从 1 条变成 2 条。

后面要做的分析不同,句长偏好也可以跟着调整。

后面要做的分析 希望句子是什么样 句长偏好怎么设
相似句查找,逐句判断情感 一句只说一件事 最长句长设小一些
抽取式摘要 意思完整,能单独摘出来 保持默认范围
比较可读性和文体 各份材料的口径一致 所有材料用同一组设置

TATOOLS 工具页上的【句长偏好】有【最短句长】和【最长句长】两个滑块,单位是字符。最短句长可以设 5 到 50,最长句长可以设 50 到 200,默认是 5 和 100。这两个值会作为偏好写进还原要求。明显超过最长值的句子,会优先在意思完整的逗号或分号处拆开;明显不到最短值的短句,如果和前后句意思连贯,可以合并成一句。拆句和并句都只改标点,词序和词语不变。

11

怎么判断标点补得好不好

Sparck Jones 和 Galliers 1996 年把自然语言处理系统的评估分成两类。内在评估(Intrinsic Evaluation)直接拿输出和人工参照比,看标点本身标得对不对;外在评估(Extrinsic Evaluation)看输出能让后面的任务做得多好,衡量它对研究目标有多大用处。前面讲的两项经典实验都属于外在评估。

内在评估按标点种类分别算精确率、召回率和 F1。设某种标点在参考答案里出现 G 次,系统输出了 H 次,位置和种类都对上的有 C 次。槽错误率(Slot Error Rate,SER)把三类错误加在一起算。替换 S 是位置对了但种类错了,删除 D 是漏标,插入 I 是多标,分母是参考答案里的标点总数。

· · ·

精确率 = C / H

召回率 = C / G

F1 = 2 × 精确率 × 召回率 / (精确率 + 召回率)

SER = (S + D + I) / 参考答案的标点总数

参考答案取【社区主任说好,几天后又说名额满了。】,系统输出【社区主任说好几天后,又说名额满了。】,逐个位置对照的结果见下表。

位置 参考答案 系统输出 算作
【说好】后面 逗号 无 删除
【后】后面 无 逗号 插入
【了】后面 句号 句号 正确

句号的 G = 1,H = 1,C = 1,F1 = 1。逗号的 G = 1,H = 1,C = 0,精确率和召回率都是 0。SER = (0 + 1 + 1) / 2 = 1.0。逗号只挪了一个位置,就记了一次删除和一次插入,而这个逗号恰好就是前面决定材料里有几件事的那个逗号。插入错误没有上限,所以 SER 可以大于 1。

外在评估回答的是这一步预处理值不值得做。从材料里抽一段,人工加好标点作为参照,再把同一段的还原结果交给同一个分析工具,用前面的相对降幅公式比较两份结果。降得越少,还原结果在这项分析上就越接近人工标点的效果。

在 TATOOLS 里,从【逐句结果】抽一批句子人工标注,就能按上面的公式算内在指标;把下载的整理文本交给后面的工具,就能做外在评估。

12

删掉标点,逐字对一遍原文

没有参考答案时,也有一个能直接做的检查办法。补标点只允许插入标点,所以把输入和输出里的标点和空白全部删掉以后,剩下的字应该一模一样。

· · ·

strip(输出) = strip(输入)

strip:删掉全部标点符号和空白字符

还用上面的例子。输出共 17 个字符,删掉 2 个标点剩 15 个汉字,和输入的 15 个汉字逐字相同,核对通过。如果某句输出成了【后来我们也就不再去了。】,删掉标点后和原文【后来我们也就没再去问】一比,有两处字被换掉了,核对不通过。对不上的地方长什么样,能看出问题出在哪里。

对不上的样子 原因 怎么处理
块和块接上的地方,相邻两句重复几个词 分块落在句子中间 删掉重复的词,把两句合并
输出里少了连续的一段 这一块没有返回结果 把少掉的那段单独再提交一次
别的地方有字被换掉、漏掉或多出来 这里没守住只插入标点的规则 按原文逐处改回来

生成式还原的输出是重新写出来的文字,个别字词可能在这一步被改掉或漏掉。交给后面的分析之前先逐字核对一遍,分析用的每个字就都能在原文里找到。

TATOOLS 任务详情页的【下载原始数据】提供两份文件。整理文本的开头有一行文件名,后面每行一句;完整结果文件里保存了全部句子、总句数和句长汇总。用整理文本做核对时,先删掉开头那行文件名。

13

报告怎么看

TATOOLS 的报告从上到下依次是【这份结果说明了什么】【逐句结果】【方法说明 / 数据口径】和【下一步建议】四块。

1

【这份结果说明了什么】是一组带标签的条目。【整体】给出输出了多少句、报告页保留了多少条;【源文件】对应下载的文件;【输出规模】给出总句数和平均句长,并按平均句长所在的区间附一句文体提示;【句长分布】给出短句、中句和长句各有多少条、各占多少,以及哪一档最多;【样例句】摘出前两句;【浏览方式】说明怎么翻页和下载。卡片底部的【怎么继续看】建议了阅读顺序。

2

【逐句结果】每行是一个序号、一句话和这句话的字符数。报告页收录前 100 条,每页 50 条。

3

【方法说明 / 数据口径】默认折叠,记录了处理流程和句长的统计口径。

4

【下一步建议】里是【文本清洗】【词频统计】【情感分析】三个工具的入口。

报告里的数 数的是什么 怎么算
总句数 输出的所有句子 看断句结果,和原文有几行无关
平均句长 所有输出句的字符数平均值 分母是总句数,标点、数字和字母都算字符
短句、中句、长句 每一档的句数 短句不到 10 个字符,中句 10 到 29 个,长句 30 个及以上
三档占比 每一档句数占的比例 分母是总句数
逐句结果条数 报告页收录的句子 前 100 条,全部句子在下载文件里

平均句长和三档计数按全部输出句计算。句表超过 100 条时,这几个数覆盖的句子比【逐句结果】里能看到的多。拿示例材料的原标点来说,13 句的字符数在 10 到 28 之间,平均句长 257 / 13 ≈ 19.8,全部落在中句一档,占 100%。

14

补完标点以后接着做什么

从没有标点的材料到逐句分析,在 TATOOLS 里一共四步。

1

在【文本结构还原器】里【上传文档】,把专有名词和术语放进【自定义词典】,按后面要做的分析设好【句长偏好】。

2

下载整理文本,删掉开头那行文件名,逐字核对一遍。

3

把核对好的整理文本交给后面的工具。【文本可读性分析】【抽取式摘要】【相似句查找】和【依存句法分析】按句子处理;【高级情感分析】一行判断一次,每行一句就是逐句判断情感;【高频词提取】统计固定说法时,只在两个标点之间数。

4

同一项研究的所有材料用同一组句长偏好和同一份词典,把核对好的整理文本存下来当作分析底本,后面的分析都从这份文本开始。

TATOOLS 里有两件处理标点的工具,适用的材料不一样。

工具 适合什么材料 保持不变的 会改的
文本结构还原器 没有标点,不知道句子在哪断开 所有词和词序 补上标点,重新断句
标点纠正 已经有标点,句子基本断对了 文字和原来的断句 把已有的标点改对改统一
材料 上传前先做 用哪个工具
访谈或会议的录音转写稿 删掉时间戳;说话人标记会被当成普通的词参与断句,上传前删掉或统一写法 文本结构还原器
复制时丢了标点的网页或文档正文 删掉导航、页脚和广告文字 文本结构还原器
用空格代替标点的社交媒体长帖 保留正文,空格在切词时会去掉,按意思重新断句 文本结构还原器
一行一条的评论或弹幕 每行本来就是一条 标点纠正的【按行纠正】
标点用得乱的普通文稿 保持原来的分段 标点纠正

一行一条的材料,换行已经把每条分开了。交给文本结构还原器的话,换行会在切词时去掉,相邻两条可能被连成一句;交给【标点纠正】按行处理,每条的边界都能保留。

15

小结

•

很多分析工具按句子计算。句子在哪里断开,决定了这些工具算的是哪些字、分母是多少;句中的标点决定了统计词组时哪些词算挨着。

•

断句出的错会一步步传到后面。最后的准确度可以拆成断句正确和断句错误两部分按比例相加,断句正确的比例越高,结果越准。

•

英文语音转写实验里,去掉逗号让关系抽取的得分相对下降了约 17.8%;在句法分析上,机器断句拿到了约 45% 的提升空间。

•

在中文材料上,缺了标点,分词会跨过停顿,词组统计会多出假搭配,13 句话会变成 1 句。

•

补标点可以看成给每个词后面选一个标签,硬规则是只能插入标点。

•

TATOOLS 用生成式还原,新领域的材料可以直接处理;自定义词典保护专有名词,长文章分块时带着前文处理,句长偏好让句子长短合乎后面分析的需要。

•

评估分内在和外在两类。没有参考答案时,删掉标点逐字对照原文,核对通过的整理文本就可以作为分析底本。

还原好的整理文本可以接着交给 TATOOLS 的【文本可读性分析】【抽取式摘要】【相似句查找】和【高级情感分析】;已经有标点、只需要统一写法的材料,交给【标点纠正】。

16

资料来源

•

GB/T 15834—2011《标点符号用法》,中华人民共和国国家标准,2011 年发布

•

Finkel、Manning 与 Ng:Solving the Problem of Cascading Errors: Approximate Bayesian Inference for Linguistic Annotation Pipelines,EMNLP,2006,第 618–626 页

•

Makhoul、Baron、Bulyko、Nguyen、Ramshaw、Stallard、Schwartz 与 Xiang:The Effects of Speech Recognition and Punctuation on Information Extraction Performance,Interspeech,2005

•

Kahn、Ostendorf 与 Chelba:Parsing Conversational Speech Using Enhanced Segmentation,HLT-NAACL 2004 Short Papers,第 125–128 页

•

Matusov、Mauser 与 Ney:Automatic Sentence Segmentation and Punctuation Prediction for Spoken Language Translation,IWSLT,2006,第 158–165 页

•

Lafferty、McCallum 与 Pereira:Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data,ICML,2001,第 282–289 页

•

Tilk 与 Alumäe:Bidirectional Recurrent Neural Network with Attention Mechanism for Punctuation Restoration,Interspeech,2016

•

Păiș 与 Tufiș:Capitalization and punctuation restoration: a survey,Artificial Intelligence Review,第 55 卷,2022

•

Makhoul、Kubala、Schwartz 与 Weischedel:Performance Measures for Information Extraction,DARPA Broadcast News Workshop,1999,第 249–252 页

•

Sparck Jones 与 Galliers:Evaluating Natural Language Processing Systems: An Analysis and Review,Lecture Notes in Artificial Intelligence 1083,Springer,1996

•

Yule:On Sentence-Length as a Statistical Characteristic of Style in Prose,Biometrika,第 30 卷第 3–4 期,1939,第 363–390 页


END