如何从句子中的标记word2vec获取句子的向量

tri*_*tic 64 word2vec

我使用word2vec从大型文档生成了一个标记列表的向量.给定一个句子,是否可以从句子中的标记向量中获取句子的向量.

nee*_*eel 81

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

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

  • 处理可变长度的句子 (16认同)
  • 在这里,我找到了一个2-3的例子http://nadbordrozd.github.io/blog/2016/05/20/text-classification-with-word2vec/ (6认同)
  • 为何平均与总和? (4认同)
  • 你将*N*字的w2v代表的平均值用于长度为*N*的句子; 我明白了.但为什么平均值与总和相比?(这也可以为你提供可变长度句子的复合代表) (2认同)
  • 总和的问题在于,句子的长度会留下非常强的信号,如果你想抓住单词组合的本质,这个数据源将只是噪音。例如,考虑对句子进行聚类的努力。像“fast”这样的非常短的句子往往与具有相同含义“fast fast fast”的长句子相去甚远 (2认同)

Ant*_*aux 26

有几种方法可以获得句子的向量.每种方法都有优点和缺点.选择一个取决于您想要使用向量执行的任务.

首先,您可以简单地平均来自word2vec的向量.根据Le和Mikolov的观点,这种方法对于情绪分析任务表现不佳,因为它"以与标准词袋模型相同的方式失去了单词顺序",并且"无法识别许多复杂的语言现象,例如讽刺".另一方面,根据Kenter等人的观点.2016年,"简单地平均文本中所有单词的词语嵌入已经证明是跨多个任务的强大基线或特征",例如短文本相似性任务.一种变体是用它们的TF-IDF对单词向量进行加权以减少最常见单词的影响.

由Socher等人开发的更复杂的方法.是使用矩阵向量运算以由句子的解析树给出的顺序组合单词向量.这种方法适用于句子情感分析,因为它依赖于解析.


Cla*_*diu 24

这是可能的,但不是来自word2vec.为了获得更高级别的句子(以及段落和文档),单词向量的组成是一个非常活跃的研究课题.没有一个最佳解决方案可以做到这一点,它实际上取决于你想要应用这些向量的任务.您可以尝试连接,简单求和,逐点乘法,卷积等.有几个出版物可供您学习,但最终您只需要进行实验,看看哪种最适合您.

  • 你可以从这些开始:1.Mitchell,2008.基于矢量的语义合成模型.[链接](http://homepages.inf.ed.ac.uk/s0453356/composition.pdf)2.Blacoe,2012.基于矢量的语义合成表示的比较.[链接](http://www.aclweb.org/anthology/D12-1050) (4认同)
  • 3.在向量空间模型中使用最近邻居检测多词表达式的组合性(http://www.cl.cam.ac.uk/~dk427/papers/emnlp2013.pdf)4.用于构造句子的词语张量的先前消歧载体http://www.cs.ox.ac.uk/files/5725/karts_sadr_emnlp.pdf (3认同)
  • 我正在尝试使用标记向量对文档进行分类。由于令牌太多(200k),因此我想生成要分类的文档向量,这将大大减少因素(例如500)。想知道这是否可能。 (2认同)

Ste*_* Du 19

这取决于用法:

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

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

AM Dai,C.Olah和QV Le.2015.带有段落向量的DocumentEmbedding.ArXiv e-prints,7月.

2)如果您希望模型使用无监督方法估计未知(测试)句子的句子向量:

你可以查看这篇论文:

史蒂文杜和张曦.2016.Aicyber在SemEval-2016任务4:基于i-vector的句子表示.在第10届国际语义评估研讨会(SemEval 2016)的会议录中,美国圣地亚哥

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

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

4)对于gensim doc2vec,许多研究人员在使用基于预训练的单词向量的doc2vec的论文后,无法获得良好的结果来克服这个问题.

Jey Han Lau和Timothy Baldwin(2016年).文献嵌入生成实践见解的doc2vec实证评价.在第一届NLP代表性学习研讨会论文集中,2016年.

5)tweet2vec或sent2vec .

Facebook有SentEval项目用于评估句子向量的质量.

https://github.com/facebookresearch/SentEval

6)以下文章中有更多信息:

复述识别,语义文本相似度,自然语言推理和问答的神经网络模型


现在你可以使用'BERT':

谷歌发布源代码以及预训练模型.

https://github.com/google-research/bert

以下是运行bert作为服务的示例:

https://github.com/hanxiao/bert-as-service


kam*_*pta 10

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

tomas Mikolov 在这里分享了sentence2vec的代码.它假设一行的第一个单词是句子id.使用编译代码

gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -funroll-loops
Run Code Online (Sandbox Code Playgroud)

并使用它运行它

./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
Run Code Online (Sandbox Code Playgroud)

编辑

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


Zac*_*ach 5

我在以下方面取得了良好的成果:

  1. 对词向量求和(使用 tf-idf 加权)。这忽略了词序,但对于许多应用程序来说就足够了(特别是对于短文档)
  2. 快讯


Lea*_*ple 5

Google 的通用句子编码器嵌入是针对此问题的更新解决方案。它不使用 Word2vec,但产生了一个竞争解决方案。

以下是TFHub 和 Keras 的演练。