Doc2Vec gensim带监控数据预定义标签

2024-04-26 23:01:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用gensim的doc2vec来创建一个模型,该模型将根据一组文档和一组标签进行训练。标签是手动创建的,需要放入程序中进行培训。到目前为止,我有两个列表:一个句子列表,以及一个对应于该句子的标签列表。我需要特别使用doc2vec。我已经试过了。在

from gensim import utils
from gensim.models import Doc2Vec

tweets = ["A tweet", "Another tweet", "A third tweet", ... , "A thousandth-something tweet"]
labels_list = [1, 1, 3, ... , 16]

tagged_data = [tweets, labels_list]
model = Doc2Vec(size=20, alpha=0.025, min_alpha=0.00025, min_count=1, dm=1)
model.build_vocab(tagged_data)
for epoch in range(max_epochs):
    model.train(tagged_data, total_examples=model.corpus_count, 
epochs=model.iter)
    model.alpha -= 0.0002
    model.min_alpha = model.alpha

我在model.build_vocab(tagged_data)的行中得到一个错误,即有一个AttributeError: 'list' object has no attribute 'words'。我在google上搜索了这个,它说要把它放到一个带标签的句子对象中,但是如果我有预定义的标签,我不确定这是否行得通。那么有人知道如何将预定义的标签放入doc2vec吗?提前谢谢。在


Tags: from模型importalpha列表datamodel标签
1条回答
网友
1楼 · 发布于 2024-04-26 23:01:34

Doc2Vec的语料库应该是一个对象的iterable,这些对象类似于gensim:中包含的TaggedDocument示例类,具有一个words字符串标记列表和一个tags列表。(标记是通过训练从每个文本中学习的文档向量的关键,通常是唯一的文档ID,但也可以是重复多个文档的已知标签,或者同时是ID和标签。)

您的tagged_data有一个非标记化字符串列表和一个标签列表,与预期的格式完全不同。在

您应该看看gensim docs/notebooks目录中关于docs/notebooks的一些示例Jupyter笔记本,例如doc2vec-lee.ipynb或{}。也可以在线查看,例如:

https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb

另外,您可能不需要或不想多次调用train()这很容易出错。(如果你从一个在线例子中复制了这种方法,那么这个例子可能已经过时了。)调用它一次,在epochs参数中输入你喜欢的训练次数。在

相关问题 更多 >