赞
踩
词级标记就是用空格和标点符号讲一段文本分割成许多词语,词级标记标记的最小维度是词语;
虽然词级标记是一种符合常识的标记方法,但是他也存在着诸多问题,这里拿英文词级标记来举例说明
Karpathy于2015年首次引入该方法 ,字符级标记不是将文本拆分为单词,而是将其拆分为字符,例如:happy 标记为 h a p p y。 词汇量大大减少到该语言中的字符数,英语是字母数26再加上特殊字符。 拼写错误或稀有单词可以更好地处理,因为它们被分解为字符,并且这些字符在词汇表中已经为人所知。
减少词汇量需要权衡序列长度。 现在,每个单词都被分解成所有字符,标记化序列比初始文本长得多。 happy 一词将转换为5个不同的token。 此外没有实现标记化的主要目的,因为至少在英语中字符没有语义。 只有将字符连接在一起才能获得意义。 作为单词和字符标记化之间的中间人,子词标记化产生子词单位 ,该子词单位小于单词,但大于字符。
这里着重说明一下,字符级标记不需要 embedding 而词级标记需要embedding 因为字符级标记等价于已经通过字符UI==对没个词进行编码了
子词级标记化不会转换最常见的词,并以有意义的子词为单位分解稀有词。 如果将“unfriendly”标记为稀有单词,它将分解为“ un-friend-ly”,它们都是有意义的单位,“ un”的含义相反,“ friend”是名词,“ ly”将其转换为副词。 这里的挑战是如何进行细分,如何使我们将‘unfriendly’分解成 ‘un-friend-ly’ 而不是 ‘unfr-ien-dly’。
截至2020年,基于Transformers的最先进的深度学习架构使用子词级标记。 BERT针对此示例进行以下标记化:
原始文本: I have a new GPU.
标记文本:[‘i’,‘have’,‘a’,‘new’,‘gp’,’## u’,’。’]
词汇表中存在的单词本身被标记为单词,但是在词汇表中找不到“ GPU”,因此将其视为稀有单词。 根据算法,决定将其分段为“ gp-u”。 “ u”之前的##表示此子字与上一个子字属于同一字。 BPE,Unigram LM,WordPiece和SentencePiece是最常见的子词标记化算法,笔者猜测这几种子词标记化算法应该是在字词的划分策略上有所不同,
子字级标记能够在控制词汇量大小的前提下,一定程度上解决 OOV(Out-of-vocabulary)问题,在词汇量大小和未知词覆盖中找到一个平衡;当token不在词表中出现时,通过子字集标记可以将此token转化为几个片段的组合,而这些片段在出现在词表中的概率就很大了
而现在大火的bert框架就是使用的WordPiece算法。WordPiece( Schuster和Nakajima,2012年 )最初用于解决日文和韩文语音问题,目前因在BERT中使用而闻名;它在许多方面与BPE相似,不同之处在于它基于似然而不是下一个最高频率对形成一个新的子字,这个似然值表示来两个子字的相关性,WordPiece会合并相关性最高的两个子字;WordPiece底层算法和代码尚未公开,这里简单叙述以下实现步骤。
由Sennrich等人介绍。 在2015年 ,它迭代地合并最频繁出现的字符或字符序列。 该算法大致是这样工作的:
BPE是一种贪婪的确定性算法,不能提供多个细分。 也就是说,对于给定的文本标记化文本始终是相同的。
参考文献:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。