all*_*ang 6 python nlp typeerror
我尝试了"使用python进行自然语言处理"的代码,但发生了类型错误.
import nltk
from nltk.corpus import brown
suffix_fdist = nltk.FreqDist()
for word in brown.words():
word = word.lower()
suffix_fdist.inc(word[-1:])
suffix_fdist.inc(word[-2:])
suffix_fdist.inc(word[-3:])
common_suffixes = suffix_fdist.items()[:100]
def pos_features(word):
features = {}
for suffix in common_suffixes:
features['endswith(%s)' % suffix] = word.lower().endswith(suffix)
return features
pos_features('people')
Run Code Online (Sandbox Code Playgroud)
错误如下:
Traceback (most recent call last):
File "/home/wanglan/javadevelop/TestPython/src/FirstModule.py", line 323, in <module>
pos_features('people')
File "/home/wanglan/javadevelop/TestPython/src/FirstModule.py", line 321, in pos_features
features['endswith(%s)' % suffix] = word.lower().endswith(suffix)
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
有谁能帮助我找出我错在哪里?
suffix是一个元组,因为.items()返回 (key,value) 元组。当您使用 % 时,如果右侧是元组,则这些值将被解包并按顺序替换为每个 % 格式。您收到的错误是抱怨元组的条目多于 % 格式。
您可能只需要键(实际后缀),在这种情况下您应该使用suffix[0], 或.keys()仅检索字典键。