子词切分有何好处?

访客 自然语言处理 2

子词切分(Subword Tokenization)是自然语言处理中一种介于词级别和字符级别之间的文本表示方法,与传统的整词切分(如直接按空格或标点切分英文单词)相比,它有以下几个显著的好处:

  1. 解决未登录词(OOV)问题

    • 传统问题:传统的词表无法涵盖所有词汇,尤其是专有名词、拼写错误、新造词(如“新冠”、“emoji”)或形态变体(如“run”的过去式“ran”往往被当作另一个词),这些词在词表中找不到,会被标记为“未知”,导致模型无法处理。
    • 子词优势:子词切分可以将一个生词拆分为已知的子词单元(如“unhappiness”拆成“un”、“happi”、“ness”),即使“unhappiness”不在词表中,模型也能通过组合已知子词理解其含义,大大降低了OOV率。
  2. 处理形态丰富的语言更具效率

    • 示例:在土耳其语、芬兰语、德语等语言中,一个词通过添加后缀可以产生成千上万种形态(如德语复合词:“高速公路休息区” = Autobahnraststätte,由Autobahn+Rast+Stätte组成)。
    • 优势:整词切分会生成极其稀疏且庞大的词表;字符切分则会丢失词义信息并导致序列过长,子词切分能抓住词根和词缀等形态规律,使模型在不需要巨大词表的情况下理解词汇的语法和语义关系。
  3. 平衡词义完整性与序列长度

    • 整词切分:语义完整,但词表大,OOV多,且对罕见词不友好。
    • 字符切分:无OOV,词表极小,但序列长度激增(如“hello”变成5个字符),导致模型计算量和长距离依赖问题剧增。
    • 子词平衡:子词切分将常见词保留为整体(如“the”、“is”),将罕见词或复杂词拆成更小的有意义片段,这样既保证了高频词的语义完整性(不需要模型重新学习“the”的5个字母之间的关系),又通过拆解低频词解决了OOV问题,同时序列长度远短于字符级别。
  4. 促进跨语言迁移学习

    • 共享词根:不同语言中会共享相似的词根或字符组合(如英语的“biology”和法语的“biologie”共享前缀“bio”)。
    • 优势:使用子词切分(如BPE/Byte-Pair Encoding)训练多语言模型(如mBERT、XLM-R)时,同一子词单元(如“bio”)可以出现在多种语言的训练数据中,这使得模型可以利用在一种语言中学到的子词知识,更好地理解和处理另一种语言中的对应词汇,从而提升零样本(zero-shot)或小样本(few-shot)的跨语言迁移能力。
  5. 学习更合理的内部表示

    • 神经网络模型在处理整词时,往往需要为每个词学习一个独立的嵌入向量,对于拼写相似的词(如“cat”和“cats”),模型无法直接利用它们的形态关联。
    • 子词切分强制模型学习词根、词缀和常见字母组合(如“-ing”、“-ed”、“un-”)的分布表示,这使得模型能够利用形态学(morphology)信息来泛化,学会“run”后,能更容易地理解“running”、“runner”、“ran”(即使“ran”被拆成“r”和“an”或通过其他规则)之间的关系。

子词切分通过 “在词义完整性和序列长度之间取得平衡”“解决未登录词问题”“适应形态复杂语言”,以及 “促进多语言共享表示”,成为现代深度学习NLP模型(尤其是Transformer架构,如BERT、GPT系列)的标准输入处理方式,它本质上是一种数据驱动的、基于频率的统计压缩与泛化机制

标签: 词汇覆盖

抱歉,评论功能暂时关闭!