Python 如何在Tensorflow中使用Doc2Vec中的向量

Python 如何在Tensorflow中使用Doc2Vec中的向量,python,tensorflow,nlp,word2vec,doc2vec,Python,Tensorflow,Nlp,Word2vec,Doc2vec,我尝试使用Doc2Vec将句子转换为向量,然后使用这些向量来训练tensorflow分类器 我有点困惑于标签的用途,以及在完成培训后如何从Doc2Vec中提取所有文档向量 我的代码如下: fake_data = pd.read_csv('./sentences/fake.txt', sep='\n') real_data = pd.read_csv('./sentences/real.txt', sep='\n') sentences = [] for i, row in fake_data.

我尝试使用
Doc2Vec
将句子转换为向量,然后使用这些向量来训练tensorflow分类器

我有点困惑于标签的用途,以及在完成培训后如何从
Doc2Vec
中提取所有文档向量

我的代码如下:

fake_data = pd.read_csv('./sentences/fake.txt', sep='\n')
real_data = pd.read_csv('./sentences/real.txt', sep='\n')
sentences = []

for i, row in fake_data.iterrows():
    sentences.append(TaggedDocument(row['title'].lower().split(), ['fake', len(sentences)]))

for i, row in real_data.iterrows():
    sentences.append(TaggedDocument(row['title'].lower().split(), ['real', len(sentences)]))

model = gensim.models.Doc2Vec(sentences)
当我打印(model.docvecs[1])等时,我会得到向量,但每次我重新制作模型时,向量都是不同的

首先:我是否正确使用了
Doc2Vec

第二:有没有一种方法可以抓取所有标记为“真”或“假”的文档,然后将它们转换成一个numpy数组并将其传递到tensorflow中?

我相信您用于每个
标记文档的
标记不是您所期望的。Doc2Vec算法学习指定标记的向量表示(其中一些可以在文档之间共享)。因此,如果您的目标只是将句子转换为向量,那么建议选择某种独特的句子标识符,例如句子索引

然后,学习的模型存储在
model.docvecs
中。例如,如果使用句子索引作为标记,则可以通过访问标记
“0”
model.docvecs
获取第一个文档向量,访问标记
“1”
的第二个文档,依此类推

示例代码:

documents=[doc2vec.TaggedDocument(句子,['real-%d'%i])
对于i,枚举中的句子(句子)]
model=doc2vec.doc2vec(文档,向量大小=10)#10仅用于说明
#原始向量存储在“model.docvecs.vectors\u docs”中。
#通过存储在'model.docvecs.doctags'中的标记,可以更容易地访问每个文件。
对于model.docvecs.doctags.keys()中的标记:
打印(标记,model.docvecs[tag])#打印该标记的已学习numpy数组

顺便说一下,为了控制模型的随机性,使用
Doc2Vec
类的
seed
参数。

gensim包中的Doc2Vec不是tensorflow,它是独立的。