我有以下代码片段
classifier = NaiveBayesClassifier.train(train_data)
#classifier.show_most_informative_features(n=20)
results = classifier.classify(test_data)
Run Code Online (Sandbox Code Playgroud)
并且错误显示在以下行中
results = classifier.classify(test_data)
Run Code Online (Sandbox Code Playgroud)
错误:
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'
Run Code Online (Sandbox Code Playgroud)
我想在python中扩展基类列表并添加复制函数,但我不是python的专家,我不知道如何解决这个问题.
She*_*mbe 24
list.copy方法在python 2.x和python 3.x中都不起作用,我想知道为什么它仍然在文档中.要实现复制列表的结果,请使用list关键字:
fruits = ['banana', 'cucumber', 'apple', 'water mellon']
my_fruits = list(fruits)
Run Code Online (Sandbox Code Playgroud)
(可选)您可以通过切片来复制列表:
my_fruits_copy = fruits[:]
Run Code Online (Sandbox Code Playgroud)
NLTK 分类器与特征集一起工作;这些总是以字典的形式给出,其中的特征名称映射到一个值。您将传入一个列表,因此您不会按照 NLTK 文档生成功能。该代码只需要一个 Python 字典,而 Python 字典有一个.copy()
方法。
请参阅NLTK 教程中有关学习对文本进行分类的章节:
\n\n\n\n\n返回的字典称为特征集,从特征名称映射到它们的值。功能名称是区分大小写的字符串,通常提供功能的简短人类可读描述,如示例中所示
\n\'last_letter\'
。特征值是具有简单类型的值,例如布尔值、数字和字符串。
另请参阅NLTK Classify API 文档的功能集部分:
\n\n\n\n\n描述令牌的特征使用 \xe2\x80\x9cfeatureset\xe2\x80\x9d 进行编码,该字典是从 \xe2\x80\x9c 特征名称\xe2\x80\x9d 映射到 \xe2\x80\x9c 特征值的字典\xe2\x80\x9d。特征名称是唯一的字符串,指示该特征编码了令牌的哪些方面。
\n
您尚未共享该train_data
列表包含哪些类型的对象;如果这些是功能集字典,您想改用classify_many()
:
results = classifier.classify_many(test_data)\n
Run Code Online (Sandbox Code Playgroud)\n\n该方法确实需要一个列表,但每个元素仍然必须是有效的特征集。
\n 归档时间: |
|
查看次数: |
26704 次 |
最近记录: |