句子或文档如何转换为vector?

我们有将单词转换成vector的模型(例如word2vec模型)。 是否存在将句子/文档转换成vector的类似模型,或许是使用为单个词学习的vector?

1)跳过克法: 这里是纸张和使用它的工具, google word2vec

2)使用LSTM-RNN形成句子的语义表示。

3) 句子和文件的表示 。 段落vector在本文中介绍。 它基本上是一个无监督的algorithm,可以从不同长度的文本片段(如句子,段落和文档)中学习固定长度的特征表示。

4)虽然本文不形成句子/段向量,但它足够简单。 可以插入单个单词向量( 手套 单词向量被发现给出最好的performance),然后可以形成整个句子/段落的向量表示。

5)使用CNN来汇总文件。

这一切都取决于:

  • 你正在使用的vector模型
  • 这个模型的目的是什么?
  • 你的创造力将单词向量组合成一个文档向量

如果您使用Word2Vec生成模型,则可以尝试:

  • Doc2Vec : https : //radimrehurek.com/gensim/models/doc2vec.html
  • Wiki2Vec : https : //github.com/idio/wiki2vec

或者你可以做一些人做的事情,即总结文档中的所有内容词,并除以内容词,例如https://github.com/alvations/oque/blob/master/o.py#L13 (注意:行17-18是降低噪音的手段):

def sent_vectorizer(sent, model): sent_vec = np.zeros(400) numw = 0 for w in sent: try: sent_vec = np.add(sent_vec, model[w]) numw+=1 except: pass return sent_vec / np.sqrt(sent_vec.dot(sent_vec)) 

有很多方法可以回答这个问题。 答案取决于你对短语和句子的解释。

这些为每个单词提供向量表示的分布式模型(例如word2vec只能显示一个单词如何在基于窗口的上下文中与其他单词相关联。 基于对上下文词关系的这种解释,可以将一个句子中所有词的平均向量作为该句子的向量表示。 例如,在这句话中:

素食主义者吃蔬菜。

V_S

我们可以把归一化的vector作为vector表示:

V(句子)

问题在于句子的构成性质。 如果如上所述取平均单词向量,则这两个句子具有相同的向量表示:

蔬菜吃素食者。

通过语料处理学习树结构,分布式研究有很多。 例如: parsing与组成vector文法 。 这个video也解释了这个方法。

我想再次强调解释。 这些语句向量在你的应用程序中可能有其自己的含义。 例如,在斯坦福大学的这个项目的情感分析中,他们所追求的意思是一个句子的正面/负面情绪。 即使你find了一个完美的句子向量表示,如果你不能判断真实的条件(David Lewis“General Semantics”,1970),哲学上的争论就是这些句子不是真正意义上的句子。 这就是为什么有一些专注于计算机视觉的作品( 本文或本文 )。 我的观点是,它可以完全取决于你的应用和向量的解释。

如果你有一个特定的事情你想要做的一个解决scheme,略低于现成的,但可能难以击败的准确性:

build立一个RNN(使用LSTM或GRU存储单元, 在这里比较 ),并优化你试图完成的实际任务的错误function。 你喂它你的句子,并训练它产生你想要的输出。 被喂食你的句子后,networking的激活是句子的表示(尽pipe你可能只关心networking输出)。

您可以将该句子表示为一个热门编码字符序列,一个热门编码字词序列或一个字向量序列(例如GloVe或word2vec )。 如果你使用单词向量,你可以反向传播单词向量,更新自己的权重,所以你也可以为你正在做的任务调整专门的单词向量。