无法从您给我们的内容中分辨出来,但是您是否尝试过逐步解决问题?似乎在任何情况下t.split('/')[1] == 'NP' 都不会评估为 True。所以你应该从:
- 打印/调试以查看
f.split() 究竟包含什么
- 确保您的条件实际上是正确的,从您提供的输出的小样本来看,我认为您正在寻找更多:
if t.split('/')[1].startswith('NP'),但无法确定。
编辑:
好的,首先,如果这确实是 f.split() 打印给您的内容,那么您应该得到一个异常 sicne t is a tuple 并且 tuple 没有 split() 方法。所以你让我好奇,我安装了nltk 并下载了“棕色”语料库并尝试了你的代码。现在首先,如果我这样做的话:
import nltk
from nltk.corpus import brown
f = brown.raw('ca01')
print f.split()
['The/at', 'Fulton/np-tl', 'County/nn-tl', 'Grand/jj-tl', 'Jury/nn-tl', 'said/vbd', 'Friday/nr', 'an/at', 'investigation/nn', 'of/in', "Atlanta's/np$", 'recent/jj', 'primary/nn', 'election/nn', 'produced/vbd', '``/``', 'no/at', 'evidence/nn', "''/''", 'that/cs', 'any/dti', 'irregularities/nns', 'took/vbd', 'place/nn', './.', 'The/at', 'jury/nn', 'further/rbr', 'said/vbd', 'in/in', 'term-end/nn', 'presentments/nns', 'that/cs', 'the/at', 'City/nn-tl', 'Executive/jj-tl', 'Committee/nn-tl', ',/,', 'which/wdt', 'had/hvd', 'over-all/jj', 'charge/nn', 'of/in', 'the/at', 'election/nn', ',/,', '``/``', 'deserves/vbz', 'the/at', 'praise/nn', 'and/cc', 'thanks/nns', 'of/in', 'the/at', 'City/nn-tl' .....]
所以我不知道你在那里做了什么来得到结果,但它是不正确的。现在,正如您从组中看到的那样,单词的第二部分是小写的,这就是您的代码失败的原因。所以如果你这样做:
w=[nltk.tag.str2tuple(t) for t in f.split() if t.split('/')[1].lower() == 'np']
这将为您提供结果:
[('September-October', 'NP'), ('Durwood', 'NP'), ('Pye', 'NP'), ('Ivan', 'NP'), ('Allen', 'NP'), ('Jr.', 'NP'), ('Fulton', 'NP'), ('Atlanta', 'NP'), ('Fulton', 'NP'), ('Fulton', 'NP'), ('Jan.', 'NP'), ('Fulton', 'NP'), ('Bellwood', 'NP'), ('Alpharetta', 'NP'), ('William', 'NP'), ('B.', 'NP'), ('Hartsfield', 'NP'), ('Pearl', 'NP'), ('Williams', 'NP'), ('Hartsfield', 'NP'), ('Aug.', 'NP'), ('William', 'NP'), ('Berry', 'NP'), ('Jr.', 'NP'), ('Mrs.', 'NP'), ('J.', 'NP'), ('M.', 'NP'), ('Cheshire', 'NP'), ('Griffin', 'NP'), ('Opelika', 'NP'), ('Ala.', 'NP'), ('Hartsfield', 'NP'), ('E.', 'NP'), ('Pelham', 'NP'), ('Henry', 'NP'), ('L.', 'NP'), ('Bowden', 'NP'), ('Hartsfield', 'NP'), ('Atlanta', 'NP'), ('Jan.', 'NP'), ('Ivan', 'NP'), ....]
现在,在您发布我要求的信息之前,请仔细检查以供将来参考,因为如果它不正确,那么它就会产生误导,它既不会帮助那些试图帮助你的人,也不会帮助你自己。不是作为批评者,而是作为建设性的建议:)