【NLP】预训练词向量

玩转词向量:用fastText预训练向量做个智能小程序 

我没有训练任何机器学习模型,而是下载了使用 fastText 库创造的预训练英语词向量:https://fasttext.cc/docs/en/english-vectors.html。这些向量是在英语文本上训练的,但和人类不一样,这个学习算法没有任何预先的英语知识。在阅读维基百科几个小时之后,它很好地学习到了英语语法以及很多真实世界概念之间的语义关系。只要文本足够,它也能使用德语、泰语、汉语或其它任何语言做到这一点。

n-gram 和将词表示为向量等思想已经存在了很长时间,但直到 2013 年 Word2vec 的论文和实现发表之后(https://arxiv.org/abs/1301.3781),才表明这些方法「能以远远更低的计算成本实现准确度的极大提升」。Tomas Mikolov 为 Word2Vec 和 fastText 这两个项目都立下过汗马功劳。我现在才开始学习,但好事不嫌晚。

 

如何使用“预训练的词向量”,做文本分类

IMDB数据集的解释

Google词向量word2vec的使用

  • 在自然语言处理中常常使用预训练的word2vec,这个预训练的词向量可以使用google的GoogleNews-vectors-negative300.bin
  • ​​GoogleNews-vectors-negative300.bin是训练好的300维的新闻语料词向量
  • 本函数的作用:将词转换成词向量。没有在该word2vec中的词采用其他的方式构建,如采用均匀分布或者高斯分布等随机初始化。

 

再理解一波“预训练词向量”

因为两者训练的语料不一样, Pre-Trained GloVe 做了比较多的pre-process, 然后word2vec 没有做. 然后大部分downstream task 都是处理过的词,用GloVe 确实要好一些。从算法角度,这两东西半斤八两,但release 出来的pre-trained embedding,GloVe的pre-processing对细节处理更好一些。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章