Python NLP:TypeError:并非在字符串格式化期间转换所有参数

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)

有谁能帮助我找出我错在哪里?

nne*_*neo 3

suffix是一个元组,因为.items()返回 (key,value) 元组。当您使用 % 时,如果右侧是元组,则这些值将被解包并按顺序替换为每个 % 格式。您收到的错误是抱怨元组的条目多于 % 格式。

您可能只需要键(实际后缀),在这种情况下您应该使用suffix[0], 或.keys()仅检索字典键。