fasttext和word2vec的区别
不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。 值得注意的是,fastText在输入时,将单词的字符级别的n-gram向量作为额外的特征;在输出时,fastText采用了分层Softmax,大大降低了模型训练时间。这两个知识点在前文中已经讲过,这里不再赘述
Word2vec对新词的处理
1. unk技巧
在训练word2vec之前,预留一个<unk>符号,把所有stopwords或者低频词都替换成unk,之后使用的时候,也要保留一份词表,对于不在word2vec词表内的词先替换为unk。
2. subword技巧
这个技巧出自fasttext,简而言之就是对oov词进行分词,分词之后再查找,找到的就保留,找不到的继续分词,直到最后分到字级别,肯定是可以找到的对应字向量的。
3. BPE技巧
BPE(byte pair encoder),字节对编码,也可以叫做digram coding双字母组合编码。BPE首先把一个完整的句子分割为单个的字符,频率最高的相连字符对合并以后加入到词表中,直到达到目标词表大小。对测试句子采用相同的subword分割方式。BPE分割的优势是它可以较好的平衡词表大小和需要用于句子编码的token数量。BPE的缺点在于,它不能提供多种分割的概率