what is word2vec
来源:互联网 发布:linux保存配置文件 编辑:程序博客网 时间:2024/06/05 21:52
什么是Word2vec?Skip-Gram和Continuous Bag of Words(CBOW)又是什么模型?
什么是Word2vec?
用来学习文字向量表达的模型(相关文本文字的特征向量)。
两种Word2vec
- 连续Bag-of-Words(CBOW)
- 从上下文来预测一个文字
- Skip-Gram
- 从一个文字来预测上下文
其实,用一个向量标识word已经提出有一段时间了,Tomas Mikolov的word2vec算法的一个不同之处在于,他把一个word映射到高维(50到300维),并且在这个维度上有了很多有意思的语言学特性,比如单词”Rome”的表达vec(“Rome”),可以是vec(“Paris”)-vec(“France”)+vec(“Italy”)的计算结果。
Word2vec的示意图如下:
显然,word2vec是只有一个隐层的全连接神经网络,用来预测给定单词的关联度大的单词。
WI的大小是V*N,V是单词词典的大小,每次输入是一个单词,N是你自己设定的隐层大小。
举个例子,如果我们语料中仅仅有这3句话:“the dog saw a cat”,“the dog chased the cat”,“the cat climbed a tree”。那么单词词典中只有8个单词:the, dog, saw, a, cat, chased, climbed, tree。
那么V=8,输入层的初始就是:
[0,0,0,0,0,0,0,0]代表:[“the”,”dog”,”saw”,”a”,”cat”,”chased”,”climbed”,”tree”]。输入[“”,”dog”,”“,”“,”“,”“,”“,”“]就可以表示为:[0,1,0,0,0,0,0,0],输入[“”,”“,”saw”,”“,”“,”“,”“,”“]就可以表示为:[0,0,1,0,0,0,0,0],如果是在字典中有的,就用1表示。
WO的大小是N*V,于是,通过训练完毕的WI和WO,只要输入单词,就能预测出最符合这个上下文的下一个单词。当然这个单词一定是字典中有的,也就是说在大小为V的字典中选出概率最大的那个单词。
那么,连续Bag-of-Words(CBOW)又是怎么从上下文来预测一个文字呢?其实就是它就是通过拷贝上面word2vec的输入层做到的:
这样,拷贝次数C就是这个上下文短语的长度,即单词个数,每一个输入\(X_i\)就是一个单词。输入层和隐含层之间就多了好多个WI矩阵,每个矩阵就代表了这个单词对隐层的影响和贡献。最后N*V矩阵依然能预测出最可能的下一个单词。
Skip-Gram就是把上图颠倒过来,如果你要预测的输出上下文的单词个数是C,那么就像CBOW一样,拷贝C次输出矩阵就可以了。
- what is word2vec
- What is what ?!
- what is what?
- What is portal? & What is portlet?
- what is game? what is good game?
- What Is 'SSL'? What Is 'SSH'?
- WHAT IS C#
- What is System Administration?
- What is EDI?
- What Is Wiki
- What is Struts Resume?
- what is blog??
- What is AspectJ
- what is grid ?
- What is MSN Messenger
- What is Plone?
- What is Mono?™
- What is AspectJ
- PTA 数据结构与算法题目集(中文)5-6 列出连通集 (25分)
- 第一章:初学Java
- spring 注解@primary解析
- perror 和 strerror 区别
- 什么是神经网络?
- what is word2vec
- C语言-贪吃蛇
- 【HTML5学习笔记】2:文本元素的使用
- springboot多数据源读写分离和主库数据源service层事务控制
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- swagger使用笔记
- Java实现算法之--求子数组和的最大值
- PHP与数据结构之栈的顺序存储
- JavaSE进阶-Java设计模式