当我训练我的doc2vec模型时,我多次通过数据集并每次改组训练评论以提高准确性。然后python给了我 AttributeError:'numpy.ndarray'对象没有属性'words'。以下是我的python代码:
Enable (Always)
然后以下是我的错误消息:
Go configuration
有谁知道如何解决这个问题? 非常感谢!!!
答案 0 :(得分:1)
选择一个好的演示/教程作为指导 - 首先运行它以查看正确的操作,然后调整它以使用您的数据或参数。
例如,gensim Doc2Vec
附带了一个doc2vec-lee.ipynb
介绍Jupyter笔记本。您可以在已安装的gensim目录中的docs/notebooks
子目录中找到它,也可以在以下位置在线查看:
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb
现在,该演示是关于不切实际的微小玩具数据集 - 只有300短的几百字的文件。 Doc2Vec
通常不会在这么小的数据集上给出好的结果。但是这个演示使用非典型小size
(50维)和非典型大iter
(55)来实现某些有用性。
(对于数万到数百万个文档的更典型的训练集,您可以使用100或更多维度的典型size
,而更典型的iter
只需10-20。) 。
但是,如果你建立在这样一个好的,有效的例子上,你就不会犯某些错误。例如:
您将使用当前推荐的示例类TaggedDocument
,而不是旧版本LabeledSentence
。
你不会把你的语料库变成一个numpy ndarray--一个完全不必要的步骤,这也是你所看到的错误的直接原因。
你不会在你自己的循环中多次调用train()
,这很容易出错并且几乎总是做错事,除非你是专家用户,要特别注意所有参数管理。 (你正在进行10次循环,并且在每个循环中对数据执行10次传递,对于每个循环,类将管理学习速率alpha
从0.025到0.0001 - 这意味着它将在训练期间上下跳跃,这几乎肯定不是你想要的。)
您不会让每个文档都具有相同的单个标记'TRAIN`` – which means
Doc2Vec`不可能做任何有用的事情。该算法需要具有不同标签的各种文档,以学习不同文档/标签的对比向量。