代码之家  ›  专栏  ›  技术社区  ›  Arun

TypeError:classify()缺少1个必需的位置参数:“featureset”

  •  4
  • Arun  · 技术社区  · 10 年前

    这是我调用方法classify()的代码:

    def sentiment(text):
        feats = find_features(text)
        return voted_classifier.classify(feats),voted_classifier.confidence(feats)
    

    find_features()方法的定义:

    def find_features(document):
        words = word_tokenize(document)
        features = {}
        for w in word_features:
            features[w] = (w in words)
    
        return features
    

    我得到错误:

    TypeError: classify() missing 1 required positional argument: 'featureset'
    

    其中特征集为:

    featuresets_f = open("pickled_algos/featuresets.pickle", "rb")
    featuresets = pickle.load(featuresets_f)
    featuresets_f.close()
    
    random.shuffle(featuresets)
    print(len(featuresets))
    
    testing_set = featuresets[8000:]
    training_set = featuresets[:8000]
    

    (注意:我正在Ubuntu 14.04上使用Python 3.4、nltk进行twitter情绪分析)

    1 回复  |  直到 10 年前
        1
  •  3
  •   Justin O Barber    10 年前

    我怀疑你没有训练分类器。请注意以下错误:

    >>> from nltk import NaiveBayesClassifier  # for example
    >>> NaiveBayesClassifier.classify(feats)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: classify() missing 1 required positional argument: 'featureset'
    

    你需要先训练它:

    >>> classifier = NaiveBayesClassifier.train(training_set)
    

    然后可以对特征进行分类:

    >>> classifier.classify(feats)  # feats == a dict of features