Word2Vec和fasttext

word2vec是Google与2013年开源推出的一个用于获取word vecter的工具包,利用神经网络为单词寻找一个连续向量表示。

word2vec有两种网络模型,分别为:

Continous Bag of Words Model (CBOW) Skip-Gram

word2vec的使用

我用的是python的gensim库

from gensim.models.word2vec import Word2vec
model = Word2Vec(data_set,size,window,negative,iter)
model.save(file)      // 训练完后保存   
model = Word2Vec.load(file)
model.wv['compute']  // 词向量保存在wv实例里,得到“compute”的词向量
model.wv.similarity('woman', 'man')  // 求词与词之间的相关性

FastText词向量与word2vec对比

本节来源于博客:fasttext 
FastText= word2vec中 cbow + h-softmax的灵活使用

灵活体现在两个方面: 
1. 模型的输出层:word2vec的输出层,对应的是每一个term,计算某term的概率最大;而fasttext的输出层对应的是 分类的label。不过不管输出层对应的是什么内容,起对应的vector都不会被保留和使用; 
2. 模型的输入层:word2vec的输出层,是 context window 内的term;而fasttext 对应的整个sentence的内容,包括term,也包括 n-gram的内容;

两者本质的不同,体现在 h-softmax的使用。 
Wordvec的目的是得到词向量,该词向量 最终是在输入层得到,输出层对应的 h-softmax 也会生成一系列的向量,但最终都被抛弃,不会使用。 

fasttext则充分利用了h-softmax的分类功能,遍历分类树的所有叶节点,找到概率最大的label(一个或者N个)


FastText开源包使用注意事项

1、github上的fasttext可以编译后使用,方法github上已经说了。

2、anaconda search -t conda fasttext安装时,给出的包列表只支持python2.7,这个要注意。

3、pyfasttext可以直接安装,pip install pyfasttext,这个包有详细的说明参考文档

4、windows平台下,安装一直出问题,多次发现windows不好使,如果开发就用ubuntu吧

猜你喜欢

转载自blog.csdn.net/cdyx369/article/details/80579700