Datawhale-NLP入门-打卡3
第三次打卡的重点在fastText
fastText
本质上,fastText= word2vec中 CBOW + h-softmax的灵活使用
灵活体现在两个方面:
- 模型的输出层:word2vec的输出层,对应的是每一个term,计算某term的概率最大;而fastText的输出层对应的是分类的label。不过不管输出层对应的是什么内容,起对应的vector都不会被保留和使用;
- 模型的输入层:word2vec的输出层,是context window 内的term;而fastText 对应的整个sentence的内容,包括term,也包括n-gram的内容。
两者本质的不同,体现在 h-softmax的使用。
word2vec的目的是得到词向量,该词向量最终是在输入层得到,输出层对应的 h-softmax 也会生成一系列的向量,但最终都被抛弃,不会使用。
fastText则充分利用了h-softmax的分类功能,遍历分类树的所有叶节点,找到概率最大的label(一个或者N个)。
fastText优点:
- 适合大型数据+高效的训练速度,能够训练模型“在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇;
- 支持多语言表达,利用其语言形态结构,fastText能够被设计用来支持包括英语、德语、西班牙语、法语以及捷克语等多种语言。FastText的性能要比时下流行的word2vec工具明显好上不少,也比其他目前最先进的词态词汇表征要好;
- 专注于文本分类,在许多标准问题上实现当下最好的表现(例如文本倾向性分析或标签预测)。
附一个源码分析链接:fastText 源码分析