介绍
在翻译或者其他NLP问题中,词表大小有限制,为了解决有些词不在词表中(OOV),一个常用的方法是使用sub-word单元来构建词表示,这样未出现的词也可以用这些sub-wrod单元进行表示,如Byte Pair Encoding(BPE),Word Piece Model(WPM)。
BPE论文: Neural machine translation of rare words with subword units,这里不介绍。
这里的word指的是中文的词,不是汉字。
WPM构建算法
- 将初始词表设置成所有的字符。
- 根据词表中的词单元,两两组合成可能的候选词单元,在候选词单元中,选择一个使得训练语料的似然最大的。这里的似然计算是用过基于词频的语言模型。
- 重复2直到达到词表个数限制。
分析:
- 由于2中要选择所有可能的候选词单元,重新训练语言模型,比较耗时,因此需要进行优化。文中提到策略的有:选择更有可能出现的词候选(比如频率高)、语言模型只更新候选相关的词频统计等
- 文中提到构建词表可能几个小时,个人觉得不是BPE这样简单高效。
例子
上面的下划线表示词的边界,去掉后是WPM前已经分词的句子。
注
- 这里的WPM不同于BERT中使用的,BERT中使用的参考BPE
- 具体WPM的细节和实验等,参考下面的原文。
参考