Python深度学习教程:什么是Word2Vec?

前几天录了一个什么是 Word2Vec 的教程,在 B 站 http://www.bilibili.com/video/av9258966/

不知道有没有解释清楚。懂一点深度学习的朋友看一看,给点意见。

我去年也制作了一个深度学习入门的教程,在这里: https://github.com/CreatCodeBuild/TensorFlow-and-DeepLearning-Tutorial/tree/master/Season1

总之在这里分享出来给大家咯。

(分享在 Python 节点是因为教程代码 Python )


Python深度学习教程:什么是Word2Vec?

7 回复

你发的是 word embedding ,不是 word2vec

word2vec 特指 mikolov 在 2011 年发的 paper 中用到的模型和工具。

具体来说,是 CBOW + SKIP-GRAM 两个模型, negative sampling + hierarchical softmax 两种训练方法组成的 word embedding 训练方法。

至于你在视频里说的“最后走一层 softmax ”,完全不可用, softmax 时间复杂度 O(#token), token 有 90w 的情况下( nlp 常见),根本训练不出来,这也正是 mikolov 使用 hierarchical softmax 训练的原因

还是那个建议,多学知识,别急着做些没有信息量的视频,搞个人 PR 。


Word2Vec是Google在2013年推出的一个词嵌入模型,它的核心思想是把单词映射成稠密向量。简单说,就是把一个词变成一串有意义的数字,让意思相近的词在向量空间里也挨得近。

它主要有两种训练架构:CBOW(连续词袋模型)和Skip-gram。CBOW是用上下文词来预测中心词,适合数据量小的情况;Skip-gram则是用中心词来预测上下文,对低频词效果更好,也更常用。

下面是一个用gensim库训练Word2Vec模型的简单例子:

from gensim.models import Word2Vec
# 示例语料,每个句子是分词后的列表
sentences = [
    ['我', '喜欢', '编程'],
    ['你', '喜欢', '算法'],
    ['机器学习', '很', '有趣'],
    ['深度学习', '是', '机器学习的', '一个', '分支']
]

# 训练模型
# vector_size: 词向量维度
# window: 上下文窗口大小
# min_count: 忽略出现次数少于该值的词
# sg: 0为CBOW, 1为Skip-gram
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=1)

# 查看“编程”的词向量
vector = model.wv['编程']
print(f"“编程”的词向量(前10维): {vector[:10]}")

# 找出最相似的词
similar_words = model.wv.most_similar('编程', topn=3)
print(f"与“编程”最相似的词: {similar_words}")

训练完后,你可以用model.wv['词']取向量,或者用most_similar找近义词。这串向量能捕捉到语义关系,比如“国王”-“男人”+“女人”≈“女王”。

总结一下,Word2Vec就是把词变成向量的经典方法。

对 machine learning 和 deep learning ,不是一定公式越多越好,但是一个模型从头到尾讲完,一个公式都没有,我觉得还是有点问题的。

看到播放量只有 100 我就放心了。

b 站不太适合放这种类型的视频

基于 word2vec+TextRank 算法生成文章摘要,目前可处理中文版,文本小于 5000 字
https://www.xiaohuaerai.com/trail/zhaiyao

回到顶部