Проблема в том, что chunked
- это не строка, а последовательность кортежей из двух элементов:
[('What', 'WP'), ("'s", 'VBZ'), ('the', 'DT'), ('weather', 'NN'), ('like', 'IN'), ('?', '.')]
Итак, этот кортеж - это то, что вы должны проверять:
if ("weather", "NN") in chunked:
print("I found weather as noun")
В целом, вы можете отладить это, посмотрев на фактические значения, вместо того, чтобы просто распечатать их str
представления.Например:
for chunk in chunked:
print(type(chunk), chunk)
… это то, как вы обнаруживаете, что это последовательность кортежей, потому что она показывает:
<class 'tuple'> ('What', 'WP')
… в то время как строка показывает:
<class 'str'> W
<class 'str'> h
<class 'str'> a
… потому что строки - это последовательности символов, а не последовательности кортежей.
Они выглядят как кортежи строк.Но если вы хотите проверить это наверняка:
for chunk, typ in chunked:
print(type(chunk), chunk, chunk(typ), typ)
Если это строки, вы получите что-то вроде:
<class 'str'> 'What' <class 'str'> 'WP'
… и тогда приведенный выше код будет работать.Если вместо этого вы видите что-то вроде:
<class 'nltk._spam.Eggs'> 'What' <class 'str'> 'WP'
... тогда вы, вероятно, не можете просто сделать ("weather", "NN")
;Вы должны посмотреть, как создать объект Eggs
.