让我们假设我有一组文档嵌入。 (D) 每个文档嵌入都由N个词向量组成,其中每个预训练向量的维数均为300。
语料库将表示为[D,N,300]。
我的问题是,将[D,N,300]减少为[D,1,300]的最佳方法是什么?我应该如何在单个矢量而不是N个矢量中表示文档?
谢谢。
答案 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层,并将单词嵌入作为该层的输入。并采取上一步的输出。
上一个时间步的输出将同时包含文档的所有上下文信息(向前和向后)。因此,这是在模型学习表示形式时获得所需内容的最佳方法。
请注意,文档越大,信息丢失越多。