赞
踩
Word2Vec
NLP非常核心、非常重要、非常基础的技术
Word2Vec就是用神经网络把词转换成向量的模型
Word2Vec的发展
WordNet是Word2Vec的鼻祖
Word2Vec是2013年由Mikolov提出
Word2Vec模型
man比woman和king更像
所以可以看出,词之间也有远近关系的
Word2Vec的不足
①使用了唯一的词向量,对于多义词没有很好的效果
②context很小,没有使用全局的cooccur 对cooccur的利用少
Word2Vec的两个模型——CBOW和Skip-Gram
CBOW和Skip-Gram相反
CBOW是根据上下文来预测一个词
例如一个句子,“我爱机器学习”,我们输入我、机器学习,让它预测爱
Skip-Gram是根据一个词,来预测其上文和下文
CBOW连续词袋模型
CBOW, Continous Bag of Word Model
和正常的神经网络一样,都是加权求和,即对wx+b求和,然后通过softmax得到的概率最大的词作为我们的结果
CBOW的特点
①没有隐层
Word2Vec是一个千层的神经网络
②结合双向上下文,上下文词序无关
③输入低维稠密,映射层求和
输入是低维稠密,所以计算量还是比较大的
映射层即上图的PROHECTION
网络结构
Skip-Gram模型
没有隐层
映射层也可以省略
输入爱,输出我,机器学习
当然,输出什么结果,即预测出什么结果,是和语料数据集有关系的
网络结构
Python实现
在这个例子中,我们使用gensim库中的Word2Vec类来训练一个简单的Word2Vec模型。
sentences
是一个包含多个句子的列表,每个句子又是一个单词列表。size
参数指定了生成的每个单词向量的维度大小,window
参数指定了Word2Vec算法中窗口的大小,min_count
参数指定了单词的最小出现次数,workers
参数指定了训练过程中使用的CPU核数。
from gensim.models import Word2Vec sentences = [["I", "love", "machine", "learning"], ["I", "love", "deep", "learning"], ["I", "enjoy", "studying", "machine", "learning"]] model = Word2Vec(sentences, size=10, window=2, min_count=1, workers=4) #一旦我们训练好了Word2Vec模型,我们可以使用以下代码来查找与指定单词最相似的单词: print(model.wv.most_similar("machine"))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。