前言:我是一名算法工程师,经常需要对某个AI功能做技术调研和输出技术选型报告,在过去多年的工作当中,积累了很多内容,我会陆陆续续将这些内容整理出来分享给大家,希望大家喜欢,感谢您的阅读!
文章目录
AI 功能定义
分词功能是自然语言处理(NLP)中的基础任务之一,用于将连续的文本序列切分成有意义的“单词”序列 。在英文等以字母书写的语言中,空格通常用来界定单词边界;但在中文、日文、泰文等语言中,文本书写时单词之间没有明显的分隔符,需要通过算法自动确定单词边界 。例如中文句子“今天我很高兴”,如果不经过分词,计算机无法直接判断其中包含了“今天/我/很/高兴”等词语。
分词的核心在于解决分隔歧义和识别新词两个问题。由于缺少显式的分隔标记,不同的切分方式可能对应不同含义,需要根据上下文选择正确的切分。例如“北京大学生”可以被理解为“北京/大学生”或“北京大学/生”,必须借助语境知识消除歧义。同时,文本中常出现模型未见过的未登录词(如新的专有名词、术语),如何将这些新词正确切分也是一大挑战。总之,分词作为其他高级NLP任务的前置步骤,其准确性对后续句法分析、机器翻译、信息检索等应用有深远影响。
评价指标说明
衡量分词模型的效果通常从准确性和效率两个维度进行。常用的技术指标包括:
- 准确率 / 精度(Precision):模型输出的词语中有多少比例是正确的。精度计算为 正确切分出的词数 / 模型输出的词总数 。例如,如果模型输出11个词,其中有9个在人工标准中存在,则精度≈81.8% 。
- 召回率(Recall):人工标准的词语中有多少被模型正确识别。召回计算为 正确切分出的词数 / 标准答案的词总数 。如标准中有10个词,模型正确识别了其中9个,则召回率=90% 。
- F1 值(F1-score):精度和召回的调和平均,综合衡量模型整体准确度 。F1 = 2*(Precision*Recall)/(Precision+Recall)。在分词评测如 SIGHAN Bakeoff 中,F1 通常作为主要评价指标。
- 推理时间:模型对一定长度文本执行分词的时间,反映实时性能。分词常用于搜索引擎等在线服务,对速度要求极高,往往只能容忍毫秒级延迟。因此算法的时间复杂度和并行能力是重要考量。例如,传统线性模型可串行线性扫描文本,深度学习模型则需考虑批处理和GPU加速等手段。
- 模型参数量:模型包含的参数数量,影响内存占用和计算量 。一般来说,参数越多模型表达能力越强,但也意味着推理更慢 。例如,大型预训练模型BERT有上亿参数,精度高但推理速度较慢 。
除了以上指标,有时还关注内存占用、模型大小(例如MB数量)以及吞吐量(每秒可分词的字符或句子数)等。在实际应用中,需要在精度和效率之间取得平衡。
当前痛点与难点
尽管分词技术已经相当成熟,但在实际应用中仍面临诸多挑战:
- 不同语言的差异:分词主要针对亚洲一些无空格语言(如中、日、韩、泰等)。不同语言的书写系统和“词”概念差异很大。例如中文以字为基本书写单位,日文包含假名和汉字并存且有丰富词形变化,而韩文存在音节块。每种语言的分词规则和歧义情况各不相同,需要针对性处理。这使得跨语言的通用分词模型较难构建,往往需要为每种语言分别训练模型或维护特定词典。
- 领域和标准不一致:不同应用领域和语料对“词”的划分标准并不统一。研究显示,甚至母语者对同一段文本的切分结果一致率只有约75%。例如,在信息检索中倾向于将“北京大学”视为整体词,而在文本朗读等场景可能更自然地切分为“北京/大学”。又如“外卖小哥”在生活场景中算一个词,但在某些词典中可能分为“外卖/小哥”。这种分词标准的不统一导致训练语料存在差异,给模型带来困惑。近年来出现的多标准学习尝试兼容不同语料标注规范,以提升跨数据集的鲁棒性 。
- 歧义和长距离依赖:分词歧义往往需要借助上下文才能解决。有些歧义需要超出当前句子的上下文甚至常识知识。例如上文提到的“北京大学生”或“在这里/面粉/很贵” vs “在/这里面/粉很贵”。模型需要足够的上下文信息和知识才能做出正确判断。而传统模型采用有限窗口特征,难以捕获长距离依赖,容易出现错误切分。
- 未登录词和领域术语:文本中新词的不断涌现是分词的一大难点。通用分词模型对未在训练中见过的词(如新流行语、人名、专业术语)往往容易拆分错误,或干脆无法识别成词。例如新冠疫情期间出现大量新词(如“方舱医院”、“健康码”),如果模型或词典未及时更新,可能会错误地将其拆成无意义的碎片。解决方案包括在模型中融入字典特征 或专门的新词发现算法,但仍无法完全避免遗漏。
- 长文本处理:对超长文本或大批量数据的分词在计算效率和内存上也有挑战。深度学习模型通常对输入长度有限制(如BERT最多512字),处理长文档需要切分段落可能破坏跨段的词汇连接。即使没有长度限制,将全文本作为整体输入分词在计算上也不现实,需采用分段处理、滑窗等策略。如何在保证整体一致性的同时高效处理长篇幅文本,是工业界关心的问题。另外,在搜索引擎等场景需要对海量文本进行索引分词,算法需要极高的吞吐效率和可并行性,以支撑大规模数据处理。
- 多粒度需求:不同应用对分词粒度要求不同。有时需要细粒度切分(将复合词拆开),有时需要保留词组。比如资讯分析可能希望将“人工智能技术”看作整体,而机器翻译可能倾向切成“人工/智能/技术”。为满足多粒度需求,一些产品提供基础切分和短语切分两种模式。如何设计模型灵活支持粒度可调,也是一个考虑点。
综上所述,分词在多语言环境、跨领域应用和实际大规模部署中仍然存在痛点。这些难点促使研究者不断改进算法,如融合预训练语言模型以缓解长距离依赖,使用多标准联合学习应对不一致标注,引入词典知识提高新词识别等,在后文将介绍相关进展。
主流模型演进路线
自2000年以来,分词技术经历了从规则统计方法到机器学习、再到深度学习预训练模型的演进,各类模型不断提高了分词准确率。以下按时间顺序梳理重要的模型和技术进展:
2000年代初:基于词典和统计的方法
早期的中文分词多采用规则和词典结合简单统计算法。例如最大匹配法(正向/逆向匹配)通过预先构建词典,贪心地从一端匹配最长的词。这种方法实现简单、速度快,但对歧义和未登录词处理效果有限。为改进准确率,研究者开始尝试机器学习方法。代表工作有2003年的第一届 SIGHAN Bakeoff 比赛,以及此后出现的隐马尔可夫模型 (HMM)、最大熵模型等监督学习方法。这些方法将分词转化为序列标注任务(给每个字标注“词开头、中间、结尾”等标签),能够学习到更复杂的统计特征,比纯词典方法效果提升明显。然而,它们往往需要人工设计特征模板,模型能力受限于特征的表达能力。
2005年前后:条件随机场 (CRF) 模型
2000年代中期,线性链条件随机场成为中文分词的主流方法之一 。Peng等人(UMass Amherst)在2004年的工作中证明了CRF的有效性:CRF提供了完备的概率框架,方便融合多种领域知识(比如多本字典)作为特征,从而实现健壮而准确的分词 。同时他们还提出结合CRF的新词发现方法进一步提高性能 。CRF模型在包括人民日报、微软研究等多个语料上达到当时的状态领先水平 。例如,在第二届Bakeoff评测中,基于CRF的系统在多套测试集上取得了95%以上F1值的优异成绩。相比早期方法,CRF无需人工设定过多规则,能够自动学习上下文特征权重,大幅减少歧义错误。不过,CRF仍属于线性模型,对特征的表达能力有限(需预定义如周边字、字母数字组合等特征),模型无法自主提取更高级模式。
2007年:感知器和结构化学习
随着对分词问题理解的深入,学者开始探索字序列以外的信息。Zhang和Clark(牛津大学)提出了基于单词的结构感知器模型。与传统逐字标注不同,他们的分词器在解码过程中直接以“词”为单位构建切分,并使用完整单词及其上下文作为特征,利用增量式学习和Beam Search进行解码。这种方法能灵活利用长跨度特征和全局信息。实验表明,该模型在Bakeoff评测中取得了若干数据集上的最佳成绩,部分语料的F1达到97%左右(如在微软研究数据集上F1=97.2%)。这证明了引入完整单词特征和判别式训练的价值。基于感知器的模型实现简单、速度快(接近线性时间),在工业应用中受到欢迎。当时另一重要进展是2006年前后出现的CRF++工具包 等,使得学术界和工业界能够方便地训练定制分词模型。
2010年代初:联合模型与半监督
为了进一步提升分词,对跨任务信息和未标注数据的利用成为热点。例如一些研究尝试分词和词性标注联合学习,利用词性提高切分准确率。还有人构建了包含几十万字的大型未标注语料训练词向量(embedding)以提升模型对字的语义表示。代表性工作是Zhang et al. 2013(复旦大学)提出的深度学习分词模型。该模型借鉴了Collobert等人(2011)提出的深度神经网络序列标注架构,避免繁琐的特征工程,通过多层神经网络自动学习特征表示 。他们利用了大规模未标注数据训练字向量,然后结合有标注的数据微调模型,实现了接近当时最先进水平的分词和词性标注效果。这一时期的模型多数基于浅层神经网络(如前馈网络或卷积网络),在消除人工特征方面取得成功,但在准确率上尚未全面超越传统方法,仅是相当或略有提升。不过,它为后续更复杂的神经模型铺平了道路。
2015年:循环神经网络 (RNN) 与双向LSTM
2015年前后,深度学习浪潮全面推动了分词技术的革新。Chen等人(复旦大学)率先将长短期记忆网络(LSTM)引入中文分词任务 。LSTM能够记忆长期上下文信息,突破了传统模型固定窗口的限制,解决了长距离依赖问题 。他们构建了双向LSTM网络结合CRF作为标注层,实现端到端的分词标注模型,不再需要人工特征 。实验在PKU、MSRA等权威数据集上取得当时最高的精度,F1较之前模型有明显提高 。例如Chen等人的模型在MSRA评测上F1超过96%,并首次将深度学习模型性能超越传统统计方法 。同年,Huang等人提出了通用的Bi-LSTM+CRF序列标注架构,进一步验证了这种深度神经方法在分词(以及命名实体识别等任务)上的卓越性能 。至此,神经网络+分布式表示成为分词领域的新范式,大幅减少了人为干预,模型可以从海量数据中自动学习到字形、词序等隐含特征,从而在复杂场景下保持较高准确率。
2017年:多标准学习与高级神经模型
随着深度学习分词的准确率接近天花板,研究开始聚焦于兼容不同语料标准和更好处理未登录词。Chen等人(2017)提出了对抗式多准则学习,通过一个对抗训练框架使模型能在不同标注规范(如人民日报和微软标准)间学习共享特征,同时保留差异 。这一方法有效提高了模型的通用性,减轻了训练语料标准不一致带来的性能下降 。同年,Yang等人提出利用预训练词向量和词频信息增强分词模型,使模型具有“词级别记忆”,显著提升了未知词识别能力 。还有研究者尝试将字形信息融入分词,如利用汉字的字形(笔画、字模)向量表示(如glyce字向量)以丰富模型输入特征。此外,一些跨模型融合的尝试也出现,例如复合了神经网络+规则的方法,在特定应用中取得了平衡效果。
2018年:词网Lattice模型
针对未登录词和词典信息的利用,2018年出现了Lattice LSTM等新架构 。该模型(Yang等)在序列中构建字串词网,将字和可能成词的多字片段一起作为节点输入LSTM,从而显式引入了外部词典信息 。通过在网络中“看见”候选词,模型可以更准确地切分出平时罕见但词典中存在的词汇。这种方法在包含繁简体和多领域的数据上取得了极高的F1(在CTB6达96.3%,比单纯字级模型有明显提升 ),证明融合词典知识有助于缓解未登录词问题。此外,2018年前后还出现了超参数自动搜索用于分词模型(如Ma等2018年利用强化学习调参 ),以及基于半马尔可夫CRF的分词方法 等,都进一步推进了技术发展。
2019–2020年:预训练语言模型 (BERT) 应用
2018年BERT的横空出世对包括分词在内的NLP基础任务产生了重大影响。2019年起,研究者将中文BERT等预训练模型微调用于分词,取得了新的SOTA成绩 。Huang等人(2019,蚂蚁金服)提出结合BERT的多准则联合分词模型,通过在不同标注语料上共同微调BERT,使模型掌握更普遍的分词边界知识。他们还引入知识蒸馏和模型剪枝,使得使用12层Transformer的教师模型(平均F1≈97.1)能够压缩为6层学生模型而性能几乎无损(F1≈97.0) 。同年,微软亚洲研究院的团队发布了针对中文的预训练模型ZEN,并应用于分词任务取得优异效果 。这些基于Transformer的模型在开放域新闻语料上的F1已达到98%附近 (例如MSRA语料集上接近98.5% ),几乎逼近人工一致性上限。值得注意的是,虽然BERT提高了准确率,但其庞大的参数量和深层结构也带来了推理效率问题 。因此2020年左右的工作一方面追求统一本领域多标准提升精度,另一方面开始注重模型加速与压缩。如一些研究通过8-bit量化、权重剪枝等技术将BERT分词模型提速,以满足工业应用需求。
2021–2025年:效率优化与跨领域应用
近期的技术发展,一方面在于进一步优化大模型的部署效率,另一方面探索特定领域和跨语言的分词方案。2023年业界报告(如李德勇等人在ACL2023工业轨道的工作)指出,虽然基于预训练模型的分词效果拔尖,但在实际部署中存在性能与成本的权衡、领域差异导致的歧义以及不同粒度需求等挑战。他们提出的CWSeg方法通过小模型蒸馏(如只用3层Transformer)和多策略解码,在保持高精度的同时将推理速度提升数倍,以适应企业级场景 。此外,在特定领域,如医疗、生物等,定制分词模型开始出现,通过领域预训练(如医药文本BERT)结合分词微调,解决专业术语的识别问题。跨语言的分词也有所探索,比如统一训练同时支持中日等多语种的模型,以及与多语种预训练模型(XLM等)的结合,以便在资源稀缺语言上实现可接受的分词效果。总的来看,近几年分词技术的前沿集中在提升实用性:包括模型轻量化、降低推理延迟、自动适应新词新语料、以及融入更多语言的支持等,使分词功能更好地服务于工业应用。
下表总结了2000–2025年具有代表性的分词模型,列出其发布机构、时间及关键性能指标:
模型性能对比
商业应用产品介绍
分词技术已经广泛应用于各类商业产品和平台,以下介绍几个典型案例:
- 搜索引擎与推荐系统:主流搜索引擎(如百度、Google)在对网页建立索引和解析用户查询时,都依赖高性能的分词算法。以百度为例,其搜索架构中内置了自主研发的中文分词工具LAC(Lexical Analysis of Chinese) 。LAC不仅执行分词,还同时完成词性标注和命名实体识别等任务 。据官方介绍,LAC采用深度学习联合模型,分词F1值超过0.91,具有业界领先的准确度 。百度还将分词技术融入到Elasticsearch插件中,推出了analysis-baidu-nlp分词插件。该插件基于百度十余年搜索领域积累的深度CRF模型开发,在中文分词的性能和准确率上处于行业先进水平。类似地,电商平台(淘宝、京东)的搜索与商品推荐系统也大量使用中文分词,将用户输入拆解成关键词来匹配商品和内容。
- 开放NLP平台与云服务:各大科技公司提供的NLP云服务中,都将分词作为基础功能对外开放。例如,腾讯云NLP和阿里云自然语言处理平台都提供了中文分词的API,方便企业集成。开发者无需了解底层模型细节,即可通过API获得分词结果。很多数据库和大数据处理工具也内置或支持中文分词插件,比如阿里云的AnalyticDB和PostgreSQL都支持使用结巴分词(Jieba) 等库进行中文全文索引。Jieba是一款开源的中文分词工具,采用Trie树词典匹配和HMM方法,虽然精度相对更先进模型略有不足,但由于易用性高、性能尚可,被广泛应用于各类轻量级应用场景。
- 智能输入法与对话系统:中文输入法(如搜狗输入法、百度输入法)在从拼音转换汉字时,本质上也在进行一种“分词预测”。输入法需要将用户连续输入的拼音序列合理切分成词,然后选取汉字。例如输入“jintianwohengaoxing”,系统需要识别出“今天/我/很/高兴”对应的汉字组合。这背后利用了大规模语言模型和分词词典,既是分词技术的特殊应用,也反过来推动了分词词库的更新完善。同样,智能客服机器人、语音助手在理解用户意图时,通常会先对用户的中文语句进行分词,再进行意图解析。因此许多商用对话系统内置了分词模块。例如腾讯的微信智能客服、“小冰”等聊天机器人,都采用了自研或开源的分词组件作为NLP处理管线的第一步。
- 文本分析与内容审核:在文本数据挖掘、舆情分析、推荐算法中,分词也是基础步骤。例如汉王科技的文本矿析软件、明略科技的语义分析平台,都有中文分词功能,用于将海量网络文本、评论进行预处理,然后才能进一步做情感分析、主题聚类等。内容审核系统则利用分词将文本拆解成敏感词、关键词,以发现违规内容。许多互联网内容平台(微博、知乎)都构建了敏感词词典,并结合分词算法高效过滤文本。可以说,无论是企业内部的大数据分析,还是面向用户的内容服务,分词几乎无处不在,为上层应用提供支撑。
- 多语种支持的NLP软件:一些面向全球市场的NLP库也集成了中文分词功能。如Stanford CoreNLP、SpaCy、Spark NLP等开源库,均提供中文分词器或接口。这些库往往结合规则和统计方法,或封装了学术界的模型成果,使开发者在处理中文文本时能够开箱即用。Spark NLP更是结合了分布式计算,可以对超大规模文本进行高效分词,在金融、医疗等行业的海量文档处理中已有应用。另外,日本的形态分析器(如MeCab)和韩国的开源解析器(如KKMA)也分别用于这些语言的分词任务,有些厂商会将中文分词和日/韩词法分析一起打包提供,形成亚洲语言分词的完整方案 。
综上,分词技术已经深度融入搜索、推荐、问答、分析等各类产品。一些大型互联网公司不仅在内部系统中使用分词,还通过开源项目或云服务将其输出,为生态中的中小企业提供支持。例如百度的LAC开源、哈工大LTP工具、HanLP开源库等,都在社区获得广泛关注和应用。
技术选型建议
针对企业技术团队在分词模型选型时需要考虑的维度,提出如下建议:
- 基于性能要求选型:如果业务场景对分词准确率要求极高(如法律、医疗文本分析),建议优先考虑当前性能最好的模型,例如预训练语言模型微调的分词方案(如BERT-中文微调模型、ZEN等)。这些模型在通用基准上F1可达98%左右,能够最大程度减少错误 。特别是在文本复杂、歧义多的情况下,大型模型对上下文的把握和新词的识别能力更强。不过需要注意,大模型在特定领域可能出现识别偏差,必要时应结合该领域的专门语料进行再训练或微调,以提升针对性(例如用医疗文本微调BERT用于医学分词)。
- 考虑推理效率和资源:如果系统需实时响应且吞吐量大,应在性能和效率间寻找平衡。对于中等规模应用,BiLSTM-CRF类模型是一个折中选择:相比BERT精度只低一点点(F1约96-97%),但参数量小两个数量级,CPU上即可每秒处理上千字 。它在多数商业应用中已经足够实用。如果追求进一步加速,可考虑蒸馏后的小型Transformer模型。研究显示,6层Transformer学生模型几乎能达到12层BERT的性能,但推理速度和内存占用大为改善 。因此企业可以采用开源的学生模型权重,或者自行对教师模型做蒸馏训练,得到“瘦身版”分词模型,用较小代价享受接近顶尖的准确率。
- 利用词典和规则的辅助:纯粹的数据驱动模型在新词方面可能反应迟钝,而维护领域词典是快速提升特定词识别率的办法。建议选型支持用户词典或自定义规则的分词方案。例如一些开源工具(HanLP、THULAC等)和商业平台都允许用户插入自定义词。即使主模型采用深度学习,也可在推理前后增加词典校正步骤:先根据词典强行分出已知词,再对剩余部分用模型切分,或者先用模型切分再合并词典中需要合并的词。这样能结合统计模型的灵活性和规则的精确性,提高结果符合业务预期的程度。特别在垂直领域(金融、医疗)有大量专有名词时,此策略很有效。
- 分场景组合策略:企业应用中,不同模块对分词的需求可能不同。例如搜索引擎的查询分词要快速且倾向细粒度,而文本分析的内容分词可稍慢但要求高准确和专业词完整。对此,可以并行部署多种分词器,针对场景选择输出。例如先用快速分词器粗分用于实时响应,同时后台用高精度分词器重新分析以备二次处理。这种“双轨”方案在需要实时性又要准确率的系统中是可行的,代价是实现复杂一些。另一种思路是分级分词:先用轻量模型分词,对模型低置信度的片段(可能是难切分区域)再调用更强模型细分,从而优化整体效率。
- 关注跨语言扩展:如果企业目前只针对中文环境,那么专门的中文分词方案即可满足需求;但若未来计划支持日韩等其他亚洲语言,最好选型时就考虑扩展性。优先选择那些架构通用、有多语言版本或模型的方案。例如HanLP已同时支持中、英、日等分词;Stanford CoreNLP也提供多语言包。这些统一方案方便日后扩展,保持技术栈一致。如果采用不同语言截然不同的工具,团队需要维护多套代码和配置,增加负担。跨语言模型如XLM等虽前沿,但目前实际效果尚未全面验证,可以持续关注研发动态,在条件成熟时评估引入。
- 评估维护难度和成本:选型时还应考虑团队维护能力。如果团队对深度学习不够熟悉,那么使用成熟的开源项目或第三方API可能比自行训练模型更稳妥。比如百度LAC开源模型训练好可直接用,省去了自己调参训练的时间 。又如Jieba这种纯Python实现,尽管精度一般但部署极简、几乎零学习成本。相反,如果团队具备算法研发实力,希望不断优化分词效果,那么选型更高级模型、甚至源码级定制也是合理的,但要预留相应人力投入。此外,注意模型的许可证(License)和商业可用性。某些开源模型可能有使用限制,商业产品中应选择许可友好的方案,或购买得到官方技术支持的版本,以免产生法律和服务风险。
- 实测与迭代:最终,建议在选型时结合企业自身数据进行小规模实测。即使论文报告的模型再先进,也需要看在真实业务数据上的表现,包括准确率和速度是否达标。可以搭建一个A/B测试:用不同分词方案处理一批典型数据,比对结果质量和系统指标。据经验,一些开源模型在通用语料上很好,但对企业特有的数据(例如含大量商品名、昵称)会出现意外错误,这就需要通过实测发现并有针对性地优化。分词选型不应是“一劳永逸”,而是随着业务变化进行持续迭代的过程。应定期评估新的模型和算法,关注学术界和工业界的新进展(例如2023年出现的多段落联合分词、新的预训练模型等),在合适时机升级技术方案,保持分词模块的竞争力和适用性。
综上,在企业环境下部署分词功能,需要综合考量性能、效率、维护等多方面因素。对于大多数通用应用,可以采用“预训练模型+用户词典”相结合的方法,以兼顾精度和实用性。在高性能服务器场景则可大胆采用最新深度模型追求最佳效果,而在轻量终端场景则宜选简单高效的实现。通过合理的技术选型和架构设计,分词功能将更好地服务于企业的自然语言处理需求,为上层应用提供稳健可靠的支撑。