如何从句子中的二级词条中得到一个句子的向量

我已经使用word2vec从大文档生成了一系列令牌的向量。 给定一个句子,是否有可能从句子中的标记vector得到句子的vector。

有不同的方法来获得句子向量:

  1. Doc2Vec :您可以使用Doc2Vec来训练您的数据集,然后使用句子向量。
  2. Word2Vecvector的平均值:您可以取一个句子中所有单词vector的平均值。 这个平均向量将代表你的句子向量。
  3. 使用TF-IDF的Word2Vec向量的平均值 :这是我推荐的最好的方法之一。 只要把这个词向量,并与他们的TF-IDF分数相乘。 只取平均值,它将代表你的句子向量。

这是可能的,但不是来自word2vec。 为了获得更高层次的句子表示(以及段落和文档),词向量的构成是一个非常活跃的研究课题。 没有一个最好的解决scheme来做到这一点,它真的取决于你想要应用这些向量什么任务。 你可以尝试连接,简单求和,逐点乘法,卷积等等。有几本关于这方面的书籍你可以学习,但是最终你只需要进行实验,看看最适合你的东西。

有几种方法可以得到一个句子的向量。 每种方法都有优点和缺点。 select一个取决于你想要执行的任务。

首先,你可以简单地平均来自word2vec的向量。 Le和Mikolov认为 ,这种方法对于情感分析任务performance不佳,因为它“像标准的书包模型一样失去了词序”,并且“没有认识到许多复杂的语言现象,比如讽刺“。 另一方面,根据Kenter等人 2016 “,简单地平均文本中所有单词的单词embedded,已被certificate是跨越多个任务的强大基线或特征,如短文本相似性任务。 一个变体是用TF-IDF加权词向量来减less最常见单词的影响。

Socher等人开发的更复杂的方法。 是使用matrix向量操作按照句子的分析树给出的顺序组合词向量。 这种方法适用于句子情感分析,因为它依赖于parsing。

您可以在训练阶段获得句子的向量表示(jointesting和训练单个文件中的句子并运行从以下链接获得的word2vec代码)。

在这里 ,Tomas Mikolov已经分享了sentence2vec的代码。 它假定一行的第一个单词是句子id。 使用编译代码

gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -funroll-loops 

并使用它来运行

 ./word2vec -train alldata-id.txt -output vectors.txt -cbow 0 -size 100 -window 10 -negative 5 -hs 0 -sample 1e-4 -threads 40 -binary 0 -iter 20 -min-count 1 -sentence-vectors 1 

编辑

Gensim(开发版)似乎有一种方法来推断新句子的向量。 在https://github.com/gojomo/gensim/blob/develop/gensim/models/doc2vec.py查看;model.infer_vector(NewDocument)方法

这取决于用法:

1)如果你只想得到一些已知数据的句子向量。 查看这些论文中的段落vector:

Quoc V. Le和Tomas Mikolov。 2014.分布式的句子和文件的表示。 Eprint Arxiv,4:1188-1196。

AM Dai,C. Olah和QV Le。 与段落载体的DocumentEmbedding。 ArXiv电子版,七月。

2)如果你想要一个模型来估计未知(testing)句子的语句向量与无监督的方法:

你可以看看这篇文章:

Steven Du和Xi Zhang。 SemEval-2016的Aicyber任务4:基于i向量的句子表示。 在第十届国际语义评估研讨会论文集(SemEval 2016),美国圣地亚哥

3)研究人员也在寻找RNN或LSTMnetworking中某一层的输出,最近的例子是:

http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12195

4)对于gensim doc2vec,很多研究人员不能得到好的结果,为了克服这个问题,本文使用基于预先训练的单词向量的doc2vec。

Jey Han Lau和Timothy Baldwin(2016)。 文档2embedded式生成的实证研究。 在2016年第一届NLP代表性学习研讨会论文集中。

5) tweet2vec或sent2vec 。

Facebook有SentEval项目来评估句子的质量。

https://github.com/facebookresearch/SentEval

我从以下方面得到了好的结果:

  1. 总结单词向量(用tf-idf加权)。 这忽略了词序,但对于许多应用程序来说是足够的(特别是对于短文档)
  2. Fastsent