首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:“列表”对象没有属性“复制”

AttributeError:“列表”对象没有属性“复制”
EN

Stack Overflow用户
提问于 2016-05-05 20:02:07
回答 4查看 64.5K关注 0票数 23

我有下面的代码片段

代码语言:javascript
复制
classifier = NaiveBayesClassifier.train(train_data)
#classifier.show_most_informative_features(n=20)
results = classifier.classify(test_data)

错误显示在下面的一行

代码语言:javascript
复制
results = classifier.classify(test_data)

错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "trial_trial.py", line 46, in <module>
    results = classifier.classify(test_data)
  File "c:\Users\Amr\Anaconda\lib\site-packages\nltk\classify\naivebayes.py", line 88, in classify
    return self.prob_classify(featureset).max()
  File "c:\Users\Amr\Anaconda\lib\site-packages\nltk\classify\naivebayes.py", line 94, in prob_classify
    featureset = featureset.copy()
AttributeError: 'list' object has no attribute 'copy'

我想在python中扩展基类列表并添加复制函数,但我并不擅长python,也不知道如何解决这个问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-05 20:12:51

NLTK分类器与特征集一起工作;这些分类器总是以字典的形式给出,特征名映射到一个值。相反,您正在传递一个列表,因此您不会像NLTK文档那样生成特性。代码只需一个Python字典,Python字典就有一个.copy()方法。

NLTK tutorial chapter on

返回的字典(称为feature )从特征名映射到它们的值。特性名称是区分大小写的字符串,通常提供对该特性的简短的人类可读的描述,如示例'last_letter'中所示。特征值是具有简单类型的值,例如布尔值、数字和字符串。

还请参阅 section of the NLTK Classify API documentation

描述令牌的特性使用“功能重置”进行编码,这是一种从“功能名称”映射到“功能值”的字典。功能名称是唯一的字符串,指示标记的哪个方面由该特性编码。

您还没有共享train_data列表包含什么样的对象;如果这些对象是功能集字典,则需要使用classify_many()

代码语言:javascript
复制
results = classifier.classify_many(test_data)

该方法确实包含一个列表,但每个元素仍然必须是一个有效的功能集。

票数 3
EN

Stack Overflow用户

发布于 2018-01-19 07:40:02

list.copy方法在python2.x和python3.x中都不能工作,我想知道为什么它还在文档中。要实现复制列表的结果,请使用list关键字:

代码语言:javascript
复制
fruits = ['banana', 'cucumber', 'apple', 'water mellon']
my_fruits = list(fruits)

或者,您可以通过切片复制列表:

代码语言:javascript
复制
my_fruits_copy = fruits[:]
票数 58
EN

Stack Overflow用户

发布于 2020-10-19 14:13:23

解决方案: classifier.classify接收一个python字典作为param。

在此之后:test_set1 = sentiment_analyzer.apply_features(test_sentence1)

你有这样的东西:[({'contains()': False, 'contains(im)': False,...

classifier.classify想要这个:

代码语言:javascript
复制
test_set1[0][0]
...
{'contains()': False, 'contains(im)': False, ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37059269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档