Error: 'module' object is not callable in Doc2Vec

Error: 'module' object is not callable in Doc2Vec

我正在尝试将 Doc2Vec 方法放入数据框中,其中第一列包含文本,第二列包含标签(作者)。我找到了这篇文章 https://towardsdatascience.com/multi-class-text-classification-with-doc2vec-logistic-regression-9da9947b43f4,它真的很有帮助。但是,我对如何构建模型感到困惑

import tqdm
cores = multiprocessing.cpu_count()
model_dbow = Doc2Vec(dm=0, vector_size=300, negative=5, hs=0, min_count=2, sample=0, workers=cores)
model_dbow.build_vocab([x for x in tqdm(train_tagged.values)])

TypeError: 'module' object is not callable

你能帮我解决这个问题吗?

之前我也有这个代码

train, test = train_test_split(df, test_size=0.3, random_state=42)
import nltk
from nltk.corpus import stopwords
def tokenize_text(text):
    tokens = []
    for sent in nltk.sent_tokenize(text):
        for word in nltk.word_tokenize(sent):
            if len(word) < 2:
                continue
            tokens.append(word.lower())
    return tokens
train_tagged = train.apply(
    lambda r: TaggedDocument(words=tokenize_text(r['text']), tags=[r.author]), axis=1)
test_tagged = test.apply(
    lambda r: TaggedDocument(words=tokenize_text(r['text']), tags=[r.author]), axis=1)

编辑: 如果我从代码中删除 tqdm 是有效的,但我不确定这是否被接受。据我所知,tqdm 是 Python 的一个包,它使您能够立即创建进度条并为您的函数和循环估计 TTC(完成时间),所以我的意思是如果我删除它,输出就没有问题.对吗?

Edit2: 另请参阅此问题 以改进教程的代码。再次感谢@gojomo

我找到了这个

我不确定 Doc2Vec

但是 python 中的这个错误是关于模块名称的

此错误语句 TypeError: 'module' object is not callable 在您对 Class 名称和模块名称感到困惑时引发。问题出在导入行中。您正在导入一个模块,而不是 class。这是因为模块名称和 class 名称具有相同的名称。

如果你在名为 MyClass.py 的文件中有一个 class MyClass,那么你应该写:

from MyClass import MyClass

来源:http://net-informations.com/python/iq/typeerror.htm

您正在导入 tqdm 模块而不是实际的 class。

替换import tqdm

from tqdm import tqdm