我没有训练任何机器学习模型,而是下载了使用 fastText 库创造的预训练英语词向量:https://fasttext.cc/docs/en/english-vectors.html。这些向量是在英语文本上训练的,但和人类不一样,这个学习算法没有任何预先的英语知识。在阅读维基百科几个小时之后,它很好地学习到了英语语法以及很多真实世界概念之间的语义关系。只要文本足够,它也能使用德语、泰语、汉语或其它任何语言做到这一点。
n-gram 和将词表示为向量等思想已经存在了很长时间,但直到 2013 年 Word2vec 的论文和实现发表之后(https://arxiv.org/abs/1301.3781),才表明这些方法「能以远远更低的计算成本实现准确度的极大提升」。Tomas Mikolov 为 Word2Vec 和 fastText 这两个项目都立下过汗马功劳。我现在才开始学习,但好事不嫌晚。
- 在自然语言处理中常常使用预训练的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对细节处理更好一些。