7

如何创建词向量?我使用一个热键来创建词向量,但它非常庞大,对于语义相似的词没有泛化。所以我听说过使用神经网络找到词相似度和词向量的词向量。所以我想知道如何生成这个向量(算法)或开始创建词向量的好材料?

4

2 回答 2

10

词向量或所谓的分布式表示到现在已经有很长的历史了,也许是从 S. Bengio 的工作开始的(Bengio, Y., Ducharme, R., & Vincent, P. (2001).A 神经概率语言模型。 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/ )。无论深度神经网络是否对获得良好的嵌入至关重要,这是一个悬而未决的问题。

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

于 2014-12-24T11:54:36.997 回答
3

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

如果您想捕获语义相关性,请查看基于 WordNet 的措施,例如实现的是这些库:

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

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

我希望这有帮助

最好的祝愿

于 2014-12-19T11:05:08.500 回答