标签: doc2vec

doc2vec - python中doc2vec training和infer_vector()的输入格式

在gensim中,当我提供一个字符串作为训练doc2vec模型的输入时,我收到此错误:

TypeError('不知道如何处理uri%s'%repr(uri))

我提到了这个问题Doc2vec:TaggedLineDocument() 但仍然对输入格式有疑问.

documents = TaggedLineDocument('myfile.txt')

myFile.txt是否应该将令牌作为列表列表,或者每个文档或字符串的每行中都有单独的列表?

For eg - 我有2份文件.

Doc 1:机器学习是从模式识别研究演变而来的计算机科学的一个子领域.

Doc 2:Arthur Samuel将机器学习定义为"让计算机具备学习能力的研究领域".

那么,它应该是myFile.txt什么样的?

案例1:每行中每个文档的简单文本

机器学习是从模式识别研究演变而来的计算机科学的一个子领域

Arthur Samuel将机器学习定义为一个让计算机具备学习能力的研究领域

案例2:列表中包含每个文档的标记

[ ["Machine", "learning", "is", "a", "subfield", "of", "computer", "science", "that", "evolved", "from", "the", "study", "of", "pattern", "recognition"],

["Arthur", "Samuel", "defined", "machine", "learning", "as", "a", "Field", "of", "study", "that", "gives", "computers" ,"the", "ability", "to", "learn"] ]
Run Code Online (Sandbox Code Playgroud)

案例3:单独行中每个文档的标记列表

["Machine", "learning", "is", "a", "subfield", "of", "computer", "science", "that", "evolved", "from", "the", "study", "of", "pattern", "recognition"]

["Arthur", …
Run Code Online (Sandbox Code Playgroud)

python gensim word2vec doc2vec

2
推荐指数
1
解决办法
1486
查看次数

使用doc2vec表示的scikit-learn分类

我想使用doc2vec表示和scikit-learn模型对文本文档进行分类.

我的问题是我迷失了如何开始.有人可以解释通常使用doc2vec与scikit-learn采取的一般步骤吗?

machine-learning scikit-learn text-classification doc2vec

2
推荐指数
1
解决办法
2171
查看次数

如何加载预训练的 doc2vec 模型并使用它的向量

如果我想使用本网站https://github.com/jhlau/doc2vec 中预先训练的 doc2vec 模型,有谁知道我应该使用哪个函数?

我知道我们可以使用Keyvectors.load_word2vec_format()来加载来自预训练的 word2vec 模型的词向量,但是我们是否有类似的功能来加载预训练的 doc2vec 模型以及在 gensim 中?

非常感谢。

python numpy gensim doc2vec

1
推荐指数
1
解决办法
5492
查看次数

Gensim Doc2Vec - 为什么 infer_vector() 使用 alpha?

我尝试将句子映射到向量,以使句子相互比较。为了测试 gensim 的 Doc2Vec 模型,我下载了 sklearn 的新闻组数据集并在其上训练模型。

为了比较两个句子,我使用 model.infer_vector() 并且我想知道为什么使用同一句子的两个调用会为我提供不同的向量:

model = Doc2Vec(vector_size=100, window=8, min_count=5, workers=6)
model.build_vocab(documents)

epochs=10
for epoch in range(epochs):
    print("Training epoch %d" % (epoch+1))
    model.train(documents,  total_examples=len(documents), epochs=epochs)

    v1 = model.infer_vector("I feel good")
    v2 = model.infer_vector("I feel good")
    print(np.linalg.norm(v1-v2)) 
Run Code Online (Sandbox Code Playgroud)

输出:

训练时期 1

0.41606528

训练时期 2

0.43440753

训练纪元 3

0.3203116

训练纪元 4

0.3039317

训练纪元 5

0.68224543

训练时期 6

0.5862567

训练纪元 7

0.5424634

训练纪元 8

0.7618142

训练纪元 9

0.8170159

训练纪元 10

0.6028216

如果我设置 alpha 和 min_alpha = 0,我会得到“我感觉很好”和“我感觉很好”的一致向量,但模型在每个时期都给我相同的向量,所以它似乎没有学到任何东西:

训练时期 1 …

embedding sentence gensim doc2vec

1
推荐指数
1
解决办法
2779
查看次数

gensim doc2vec - 如何推断标签

我正在使用 gensim 的 doc2vec 实现,并且我有几千个标有四个标签的文档。

yield TaggedDocument(text_tokens, [labels])
Run Code Online (Sandbox Code Playgroud)

我正在训练一个带有这些TaggedDocument列表的 Doc2Vec 模型。但是,我不确定如何推断训练期间未看到的文档的标签。我看到有一个 infer_vector 方法可以返回嵌入向量。但是我怎样才能从中得到最有可能的标签呢?

一个想法是推断我拥有的每个标签的向量,然后计算这些向量与我想要分类的新文档的向量之间的余弦相似度。这是要走的路吗?如果是这样,我怎样才能获得四个标签中每一个的向量?

python nlp gensim doc2vec

1
推荐指数
1
解决办法
1400
查看次数

Doc2Vec:获取标签的文本

我已经训练了Doc2Vec模型,试图获得预测。

我用

test_data = word_tokenize("????? ?????? ???????? ?.?.".lower())
model = Doc2Vec.load(model_path)
v1 = model.infer_vector(test_data)
sims = model.docvecs.most_similar([v1])
print(sims)
Run Code Online (Sandbox Code Playgroud)

退货

[('624319', 0.7534812092781067), ('566511', 0.7333904504776001), ('517382', 0.7264763116836548), ('523368', 0.7254455089569092), ('494248', 0.7212602496147156), ('382920', 0.7092794179916382), ('530910', 0.7086726427078247), ('513421', 0.6893941760063171), ('196931', 0.6776881814002991), ('196947', 0.6705600023269653)]
Run Code Online (Sandbox Code Playgroud)

接下来我试图知道,这个数字是什么文字

model.docvecs['624319']
Run Code Online (Sandbox Code Playgroud)

但是它只返回矢量表示形式

array([ 0.36298314, -0.8048847 , -1.4890883 , -0.3737898 , -0.00292279,
   -0.6606688 , -0.12611026, -0.14547637,  0.78830665,  0.6172428 ,
   -0.04928801,  0.36754376, -0.54034036,  0.04631123,  0.24066721,
    0.22503968,  0.02870891,  0.28329515,  0.05591608,  0.00457001],
  dtype=float32)
Run Code Online (Sandbox Code Playgroud)

那么,有什么方法可以从模型中获取该标签的文本吗?加载火车数据集需要很多时间,因此我尝试寻找另一种方法。

python gensim doc2vec

1
推荐指数
1
解决办法
419
查看次数

如何有效地调整 Gensim Doc2Vec 的超参数以在文档相似度问题上实现最大精度?

我有大约 20k 个包含 60 - 150 个单词的文档。在这 20K 份文档中,有 400 份文档的相似文档是已知的。这400个文档作为我的测试数据。

目前我正在删除这 400 个文档,并使用剩余的 19600 个文档来训练 doc2vec。然后我提取训练数据和测试数据的向量。现在,对于每个测试数据文档,我找到它与所有 19600 个训练文档的余弦距离,并选择余弦距离最小的前 5 个。如果标记的相似文档出现在前 5 个文档中,则认为它是准确的。准确率% = 准确记录数/记录总数。

我找到类似文档的另一种方法是使用 doc2Vec 最相似的方法。然后使用上面的公式计算准确度。

上面两个精度不匹配。随着每个时期,一个增加,另一个减少。

我正在使用此处给出的代码:https ://medium.com/scaleabout/a-gentle-introduction-to-doc2vec-db3e8c0cce5e 。用于训练 Doc2Vec。

我想知道如何调整超参数,以便我可以使用上述公式获得准确度。我应该使用余弦距离来查找最相似的文档还是应该使用 gensim 的最相似函数?

python nlp gensim sentence-similarity doc2vec

1
推荐指数
1
解决办法
4852
查看次数

如何衡量 Doc2vec 模型的准确性?

我有不同酒店的评论数据集。我试图通过酒店的评论找到类似的酒店。所以,我正在使用一种Doc2vec算法来实现这一目标。

Doc2Vec有没有什么方法可以使用 来衡量模型的准确性Gensim,而不是使用 的most_similar()函数来评估结果Gensim

unsupervised-learning gensim doc2vec

1
推荐指数
1
解决办法
1551
查看次数

我的 Doc2Vec 代码,经过多次训练循环后,并没有给出好的结果。可能有什么问题?

我正在Doc2Vec使用以下代码训练模型,其中tagged_dataTaggedDocument我之前设置的实例列表:

max_epochs = 40

model = Doc2Vec(alpha=0.025, 
                min_alpha=0.001)

model.build_vocab(tagged_data)

for epoch in range(max_epochs):
    print('iteration {0}'.format(epoch))
    model.train(tagged_data,
                total_examples=model.corpus_count,
                epochs=model.iter)
    # decrease the learning rate
    model.alpha -= 0.001
    # fix the learning rate, no decay
    model.min_alpha = model.alpha

model.save("d2v.model")
print("Model Saved")
Run Code Online (Sandbox Code Playgroud)

当我后来检查模型结果时,它们并不好。可能出了什么问题?

gensim word2vec doc2vec

1
推荐指数
1
解决办法
378
查看次数

Top2Vec 错误 - 'KeyedVectors' 对象没有属性 'vectors_docs'

在 Python 3.9.2 中训练 Top2Vec 模型时,出现以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-17-edc5d3cec713> in <module>
----> 1 model = Top2Vec(documents=data, speed="learn", workers=12)

~/opt/anaconda3/envs/py39/lib/python3.9/site-packages/top2vec/Top2Vec.py in __init__(self, documents, min_count, embedding_model, embedding_model_path, speed, use_corpus_file, document_ids, keep_documents, workers, tokenizer, use_embedding_model_tokenizer, umap_args, hdbscan_args, verbose)
    353                          'metric': 'cosine'}
    354 
--> 355         umap_model = umap.UMAP(**umap_args).fit(self._get_document_vectors(norm=False))
    356 
    357         # find dense areas of document vectors

~/opt/anaconda3/envs/py39/lib/python3.9/site-packages/top2vec/Top2Vec.py in _get_document_vectors(self, norm)
    545                 return self.model.docvecs.vectors_docs_norm
    546             else:
--> 547                 return self.model.docvecs.vectors_docs
    548         else:
    549             return self.document_vectors

AttributeError: 'KeyedVectors' object has no …
Run Code Online (Sandbox Code Playgroud)

python topic-modeling doc2vec

1
推荐指数
1
解决办法
7477
查看次数