以下是我的学习笔记,以及总结,如有错误之处请不吝赐教。
之前的文章主要介绍了Word2vec的原理及应用,本文主要介绍从word2vec到FastText的发展。
NLP四大问题:
主要用到的模型有:
- 分类任务:文本分类/情感计算(常用模型CNN、朴素贝叶斯(伯努利贝叶斯、多项式贝叶斯、高斯分布贝叶斯参考)、svm).
- 序列标注:分词/POS Tag/NER/语义标注;(常用模型:RNN、LSTM、GRU)
- 关系判断:Entailment/QA/自然语言推理...
- 生成式任务:机器翻译/文本摘要...
CNN处理文本分类:主要有两种方式:
- 把文字表示成图:
- 把CNN做成1D:
FastText:
之前介绍word2vec的时候我们知道他有两种框架(参考):
FastText就是在CBOW的框架上进行改进,实现文本分类,即对文本标签进行预测,其主要改进有两点:
- N-gram特征:我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 加入了 N-gram 特征。同时对特征进行Hash化,降低了运行需要的资源:
-
扫描二维码关注公众号,回复: 10615564 查看本文章
- 层次SoftMax:是建立在哈弗曼编码的基础上,对标签进行编码,极大地缩小模型预测目标的数量。:
-
fastText和word2vec的区别:主要体现在模型用途和+空间时间提速:
相同点:①图模型结构很像,都是采用embedding向量的形式,得到word的隐向量表达;②都采用很多相似的优化方法,比如使用Hierarchical softmax优化训练和预测中的打分速度。
不同点:①模型的输入层:word2vec的输入层,是 context window 内的term;而fasttext 对应的整个sentence的内容,包括term,也包括 n-gram的内容;②模型的输出层:word2vec的输出层,对应的是每一个term,计算某term的概率最大;而fasttext的输出层对应的是分类的label。不过不管输出层对应的是什么内容,起对应的vector都不会被保留和使用。
具体案例代码:欢迎关注我的github
To be continue......