如何创建单词矢量

时间:2014-12-19 08:07:55

标签: nlp neural-network word2vec

如何创建单词向量?我使用一个热键来创建单词向量,但它非常庞大,并不适用于类似的语义单词。所以我听说过使用神经网络发现单词相似性和单词向量的单词向量。所以我想知道如何生成这个向量(算法)或好的材料来开始创建单词向量?。

2 个答案:

答案 0 :(得分:8)

字矢量或所谓的分布式表示现在有很长的历史,可能是从S. Bengio的作品开始的( Bengio,Y.,Ducharme,R。,& Vincent,P。(2001) 。神经概率语言模型.NIPS。)他获得了单词向量作为训练神经网络语言模型的副产品。

许多研究表明,这些载体确实捕获了单词之间的语义关系(例如参见http://research.microsoft.com/pubs/206777/338_Paper.pdf)。 Collobert等人的这篇重要论文(http://arxiv.org/abs/1103.0398)也是理解单词向量,获取和使用方式的一个很好的起点。

除了word2vec,还有很多方法可以获得它们。示例包括Collobert等人(http://ronan.collobert.com/senna/)的SENNA嵌入,T. Mikolov的RNN嵌入,可以使用RNNToolkit(http://www.fit.vutbr.cz/~imikolov/rnnlm/)进行计算等等。对于英语,可以从这些网站下载现成的嵌入。 word2vec确实使用了skip-gram模型(不是神经网络模型)。另一个用于计算单词表示的快速代码是GloVe(http://www-nlp.stanford.edu/projects/glove/)。无论深层神经网络对于获得良好的嵌入是否必不可少,这都是一个悬而未决的问题。

根据您的应用程序,您可能更喜欢使用不同类型的单词向量,因此最好尝试几种流行的算法,看看哪种方法更适合您。

答案 1 :(得分:3)

我认为你的意思是Word2Vec(https://code.google.com/p/word2vec/)。它基于给定的语料库训练文档的N维单词向量。因此,在我对word2vec的理解中,神经网络仅用于聚合文档向量的维度,并且还捕获单词之间的某些关系。但应该提到的是,这并不是真正的语义相关,只是反映了你培训机构的结构关系。

如果要捕获语义相关性,请查看基于WordNet的度量,例如实现的是这些库:

要开始使用word2vec,您可以使用他们的预训练向量。您应该在https://code.google.com/p/word2vec/找到有关此内容的所有信息。

当你寻求一个java实现。这是一个很好的起点:http://deeplearning4j.org/word2vec.html

我希望这会有所帮助

祝福