如何减少文件嵌入的尺寸?

时间:2018-12-21 11:22:11

标签: tensorflow machine-learning deep-learning nlp word-embedding

让我们假设我有一组文档嵌入。 (D) 每个文档嵌入都由N个词向量组成,其中每个预训练向量的维数均为300。

语料库将表示为[D,N,300]。

我的问题是,将[D,N,300]减少为[D,1,300]的最佳方法是什么?我应该如何在单个矢量而不是N个矢量中表示文档?

谢谢。

3 个答案:

答案 0 :(得分:1)

我想说的是您要寻找的是doc2vec。使用此工具,您可以将整个文档转换为一个一维的300维向量。您可以像这样使用它:

from gensim.test.utils import common_texts
from gensim.models.doc2vec import Doc2Vec, TaggedDocument

documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(your_documents)]
model = Doc2Vec(documents, vector_size=300, window=2, min_count=1, workers=4)

这将在您的数据上训练模型,并且您将能够仅使用问题中指定的一个向量来表示每个文档。

您可以通过以下方式进行推断:

vector = model.infer_vector(doc_words)

我希望这会有所帮助:)

答案 1 :(得分:0)

仅对单词向量求平均是相当普遍且相当(也许令人惊讶)的效果。

答案 2 :(得分:0)

很好的问题,但是所有答案都将导致部分信息丢失。最好的方法是使用Bi-LSTM / GRU层,并将单词嵌入作为该层的输入。并采取上一步的输出。

上一个时间步的输出将同时包含文档的所有上下文信息(向前和向后)。因此,这是在模型学习表示形式时获得所需内容的最佳方法。

请注意,文档越大,信息丢失越多。