繁体   English   中英

nltk 不识别列表

[英]nltk do not recognize list

我有一个名为VoteClassifier的 class,如下所示。 我创建了一个名为unpickled_model的列表,将所有经过训练的 model 放入其中,但 nltk 无法识别列表。 请问你有什么想法吗? 任何贡献将不胜感激。

投票分类器 class:

class VoteClassifier(ClassifierI):
    def __init__(self, *classifiers):
        self._classifiers = classifiers

    def classify(self, features):
        votes = []
        for c in self._classifiers:
            v = c.classify(features)
            votes.append(v)
        return mode(votes)

    def confidence(self, features):
        votes = []
        for c in self._classifiers:
            v = c.classify(features)
            votes.append(v)

        choice_votes = votes.count(mode(votes))
        conf = choice_votes / len(votes)
        return conf

models = MultinomialNB, BernoulliNB, LogisticRegression, SGDClassifier, SVC, LinearSVC

unpickeled_models = []
for model in models:
    classifier_f = open("{0}.pickle".format(model),"rb")
    unpickeled_models.append(pickle.load(classifier_f))
    classifier_f.close()

    
voted_classifier = VoteClassifier(unpickeled_models)
print("voted classifier accuracy pct:", (nltk.classify.accuracy(voted_classifier, testing_set))*100)

错误:

Traceback (most recent call last):
  File "model.py", line 152, in <module>
    print("voted classifier accuracy pct:", (nltk.classify.accuracy(voted_classifier, testing_set))*100)
  File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/nltk/classify/util.py", line 91, in accuracy
    results = classifier.classify_many([fs for (fs, l) in gold])
  File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/nltk/classify/api.py", line 79, in classify_many
    return [self.classify(fs) for fs in featuresets]
  File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/nltk/classify/api.py", line 79, in <listcomp>
    return [self.classify(fs) for fs in featuresets]
  File "model.py", line 45, in classify
    v = c.classify(features)
AttributeError: 'list' object has no attribute 'classify'

这是关于如何用*定义__init__ function ;

def test_function(*classifiers):
    classifiers = classifiers
    print(classifiers)

list_ = ['hello', 'world']

test_function(list_)

输出一个带有列表的元组;

(['hello', 'world'],)

如果您删除* ;

def test_function(classifiers):
    classifiers = classifiers
    print(classifiers)

list_ = ['hello', 'world']

test_function(list_)

输出一个列表;

['hello', 'world']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM