【问题标题】:NLTK 2.0 classifier batch classifier methodNLTK 2.0分类器批量分类器方法
【发布时间】:2017-03-04 13:19:57
【问题描述】:

当我运行此代码时,它会抛出一个错误,我认为这是由于 NLTK 3.0 中不存在 batch_classify 方法。我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题。

def accuracy(classifier, gold):
    results = classifier.batch_classify([fs for (fs,l) in gold])
    correct = [l==r for ((fs,l), r) in zip(gold, results)]
    if correct:
        return float(sum(correct))/len(correct)
    else:
        return 0

def apr (classifier, gold):
    results = classifier.batch_classify([fs for (fs,l) in gold])
    #gold_class_dict = defaultdict(list)
    #classifier_class_dict = {}
    sys_correct_dict = Counter()
    num_guessed = Counter()
    gold_num = Counter()
    num_right = 0
    total = 0

【问题讨论】:

标签: python nlp nltk


【解决方案1】:

该方法已重命名为 classify_many()(我找不到 NLTK 2.0 的文档来检查它,但我很确定发生了什么)。

您必须在代码中将所有出现的batch_classify(...) 替换为classify_many(...)。 当从一个库的主要版本迁移到另一个库时,您必须预料到这种向后不兼容的更改;理想情况下,它们应该记录在变更日志中。但是,我不得不承认,过去 NLTK 甚至在次要版本之间也引入了向后不兼容的更改,我认为这是不好的做法。

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 2016-08-26
    • 2018-10-31
    • 2011-06-21
    • 2013-07-22
    • 2019-01-17
    • 1970-01-01
    • 2017-01-14
    • 2012-09-05
    相关资源
    最近更新 更多