中文分词算法哪些指标适合判断进展:从假设例子看评测集、切分质量与边界错误

📍 WDQWDWQD987AAAAA:216.73.217.120
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /f618ab7ad587.html
📄

中文分词算法哪些指标适合判断进展:从假设例子看评测集、切分质量与边界错误

判断中文分词算法的进展,不能只看“分对了几个词”,而要看一组能区分不同错误类型的指标:在固定评测集上的精确率、召回率、F1值,未登录词召回率,以及边界切分错误率。对已有项目做改进时,先锁定一份可复现的标注集,再对比改进前后的指标变化,比单看某个句子的分词结果可靠得多。

假设一个电商搜索分词改进项目

假设某电商站点的搜索日志里,用户常搜“无线蓝牙耳机降噪”。原分词结果把“无线蓝牙”切成一个词,把“耳机降噪”切成另一个词,导致带“蓝牙耳机”的查询召回不稳定。团队准备引入自定义词典和新的切分策略。此时如果只用“看起来分得对不对”来判断,很容易被个别例子误导。更合适的做法是:从日志中抽取五百条真实查询,人工标注正确切分,作为固定评测集,再分别统计改进前后的指标。

核心指标:精确率、召回率与F1值

把算法切出的词与人工标注的词逐一比对,可以定义三类结果:切对、多切、漏切。精确率衡量切出来的词里有多少是正确的,召回率衡量标注词里有多少被切出来,F1值是两者的综合。对搜索、内容标签、站内推荐这类场景,精确率低会让无关词进入索引,召回率低会让相关内容搜不到。两者要一起看,不能只报一个。

未登录词召回率与边界错误率

中文分词最难的往往不是常见词,而是新词、专有名词和组合词。未登录词召回率专门统计标注集中未出现在训练词典里的词,有多少被正确切出。边界错误率则统计“词被切出但起止位置不对”的情况,例如把“蓝牙耳机”切成“蓝牙”和“耳机”虽然都算词,但边界与标注不一致。对已有页面或项目改进而言,边界错误率能直接反映搜索匹配是否稳定。

假设评测集里有一百个未登录词,改进前切出六十个,改进后切出七十五个,说明未登录词召回率从60%提升到75%。但如果同时精确率从90%降到82%,就要判断新增切分是否引入了噪声。此时应回到具体错误样本,看新增错误集中在哪类词上,而不是直接宣布改进成功。

怎么执行一次可复现的对比

  1. 固定评测集:从真实查询或页面文本中抽取样本,人工标注正确切分,保存为带边界位置的格式。
  2. 固定对比口径:同一份评测集、同一套标注规则,分别跑改进前和改进后的算法。
  3. 分别统计精确率、召回率、F1值、未登录词召回率和边界错误率。
  4. 按错误类型归类:多切、漏切、边界错、未登录词错,各看若干条具体样本。
  5. 判断结果:若F1提升且边界错误率下降,可继续;若精确率明显下降,先查是否词典冲突或规则过宽。

常见错误有三个:一是只拿几个句子做演示,样本太少,结论不稳;二是评测集混入了训练数据,指标虚高;三是只看F1,忽略边界错误和未登录词,导致上线后搜索召回仍然不稳定。对已有项目改进时,还要保留一份“回归集”,防止新规则修好一类词却弄坏另一类词。

指标之外还要看什么

指标适合判断进展,但不能替代业务判断。分词最终服务于搜索、标签或内容理解,因此还要看下游效果:同一批查询下,相关内容的召回是否更稳定,错误切分是否集中在高流量词上。如果某个指标提升但高流量查询的分词反而变差,就不应直接采用。指标是筛选工具,具体样本和下游表现才是最终依据。

下一步可以做的,是先从现有日志中抽出两百到五百条样本,人工标注一份小型评测集,再记录当前算法的五项指标作为基线。之后每次调整词典或切分规则,都用同一份评测集复测,并把新增错误样本单独归档。这样判断进展时,既有数字对比,也有可复查的错误依据。

图1 图2

nginx