用户登录
用户注册

分享至

word2vec关键词算法

  • 作者: 天堂蒜薹之歌
  • 来源: 51数据库
  • 2020-04-21

如何用 word2vec 计算两个句子之间的相似度

计算A,B句子里每两个词的距离 i.e. D = dist(A_i, B_j) over all i,j(这里用Euclidean distance b/t the word embeddings, from w2v)。

生成optimal transport (也叫earth mover's distance a.k.a. EMD)problem,给solver(网上有很多各种语言的EMD solver)。输入是D, A所有词的词频(A_BOW i.e. bag of words), B所有词的词频(B_BOW)。

EMD基本概念就是把两个句子看成两个probability distribution的histogram,A的是山,B的是坑,用A的山填B的坑,每两个histogram格之间搬运一个词频单元需要做的功是两词间的距离。EMD返回的就是A,B的距离,1,2,3对每两篇文章可以CPU平行。

word2vec 词向量怎么来的

2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。

详情:网页链接

如何评价Word2Vec作者提出的fastText算法

astText简而言之,就是把文档中所有词通过lookup table变成向量,取平均后直接用线性分类器得到分类结果。

fastText和ACL-15上的deep averaging network [1] (DAN,如下图)非常相似,区别就是去掉了中间的隐层。两篇文章的结论也比较类似,也是指出对一些简单的分类任务,没有必要使用太复杂的网络结构就可以取得差不多的结果。

文中实验选取的都是对句子词序不是很敏感的数据集,所以得到文中的实验结果完全不奇怪。但是比如对下面的三个例子来说:The movie is not very good , but i still like it . [2]The movie is very good , but i still do not like it .I do not like it , but the movie is still very good .其中第1、3句整体极性是positive,但第2句整体极性就是negative。

如果只是通过简单的取平均来作为sentence representation进行分类的话,可能就会很难学出词序对句子语义的影响。从另一个角度来说,fastText可以看作是用window-size=1 + average pooling的CNN [3]对句子进行建模。

总结一下:对简单的任务来说,用简单的网络结构进行处理基本就够了,但是对比较复杂的任务,还是依然需要更复杂的网络结构来学习sentence representation的。另外,fastText文中还提到的两个tricks分别是:hierarchical softmax类别数较多时,通过构建一个霍夫曼编码树来加速softmax layer的计算,和之前word2vec中的trick相同。

如何评价Word2Vec作者提出的fastText算法

astText简而言之,就是把文档中所有词通过lookup table变成向量,取平均后直接用线性分类器得到分类结果。fastText和ACL-15上的deep averaging network [1] (DAN,如下图)非常相似,区别就是去掉了中间的隐层。两篇文章的结论也比较类似,也是指出对一些简单的分类任务,没有必要使用太复杂的网络结构就可以取得差不多的结果。 文中实验选取的都是对句子词序不是很敏感的数据集,所以得到文中的实验结果完全不奇怪。但是比如对下面的三个例子来说: The movie is not very good , but i still like it . [2] The movie is very good , but i still do not like it . I do not like it , but the movie is still very good . 其中第1、3句整体极性是positive,但第2句整体极性就是negative。如果只是通过简单的取平均来作为sentence representation进行分类的话,可能就会很难学出词序对句子语义的影响。 从另一个角度来说,fastText可以看作是用window-size=1 + average pooling的CNN [3]对句子进行建模。 总结一下:对简单的任务来说,用简单的网络结构进行处理基本就够了,但是对比较复杂的任务,还是依然需要更复杂的网络结构来学习sentence representa。 astText简而言之,就是把文档中所有词通过lookup table变成向量,取平均后直接用线性分类器得到分类结果。fastText和ACL-15上的deep averaging network [1] (DAN,如下图)非常相似,区别就是去掉了中间的隐层。两篇文章的结论也比较类似,也是指出对一些简单的分类任务,没有必要使用太复杂的网络结构就可以取得差不多的结果。

文中实验选取的都是对句子词序不是很敏感的数据集,所以得到文中的实验结果完全不奇怪。但是比如对下面的三个例子来说:

The movie is not very good , but i still like it . [2]

The movie is very good , but i still do not 哗攻糕纪蕹慌革苇宫俩like it .

I do not like it , but the movie is still very good .

其中第1、3句整体极性是positive,但第2句整体极性就是negative。如果只是通过简单的取平均来作为sentence representation进行分类的话,可能就会很难学出词序对句子语义的影响。

从另一个角度来说,fastText可以看作是用window-size=1 + average pooling的CNN [3]对句子进行建模。

总结一下:对简单的任务来说,用简单的网络结构进行处理基本就够了,但是对比较复杂的任务,还是依然需要更复杂的网络结构来学习sentence representation的。

另外,fastText文中还提到的两个tricks分别是:

hierarchical softmax

类别数较多时,通过构建一个霍夫曼编码树来加速softmax layer的计算,和之前word2vec中的trick相同

转载请注明出处51数据库 » word2vec关键词算法

软件
前端设计
程序设计
Java相关