NLP课程:Word2vec到FastText

版权声明:===========版权所有,可随意转载,欢迎互相交流=========== https://blog.csdn.net/weixin_42446330/article/details/85241044

以下是我的学习笔记,以及总结,如有错误之处请不吝赐教。

之前的文章主要介绍了Word2vec的原理及应用,本文主要介绍从word2vec到FastText的发展。

NLP四大问题:

主要用到的模型有:

  • 分类任务:文本分类/情感计算(常用模型CNN、朴素贝叶斯(伯努利贝叶斯、多项式贝叶斯、高斯分布贝叶斯参考)、svm).
  • 序列标注:分词/POS Tag/NER/语义标注;(常用模型:RNN、LSTM、GRU)
  • 关系判断:Entailment/QA/自然语言推理...
  • 生成式任务:机器翻译/文本摘要...

CNN处理文本分类:主要有两种方式:

  1. 把文字表示成图:

  2. 把CNN做成1D:

FastText:

之前介绍word2vec的时候我们知道他有两种框架(参考):

FastText就是在CBOW的框架上进行改进,实现文本分类,即对文本标签进行预测,其主要改进有两点:

  • N-gram特征:我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 加入了 N-gram 特征。同时对特征进行Hash化,降低了运行需要的资源:
  • 层次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......

展开阅读全文

没有更多推荐了,返回首页