Не можете действительно сказать из того, что вы нам дали, но пытались ли вы идти к проблеме шаг за шагом? Кажется, что ни при каких обстоятельствах t.split('/')[1] == 'NP'
не оценивается как Истина. Итак, вы должны начать с:
- print / debug, чтобы увидеть, что именно содержит
f.split()
- убедитесь, что ваше состояние действительно правильное, из небольшой выборки, которую вы там дали, мне кажется, вы ищете больше:
if t.split('/')[1].startswith('NP')
, но не можете сказать точно.
EDIT:
Хорошо, сначала, если это действительно то, что печатает f.split()
, тогда вы должны получить исключение sicne t
- это кортеж, а у кортежа нет метода 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'), ....]
Теперь для будущей ссылки дважды проверьте, прежде чем публиковать информацию, подобную той, которую я просил, просто потому, что, если она не верна, она вводит в заблуждение и не поможет ни тем, кто пытается помочь вам, ни вам самим. Не как критик, а как конструктивный совет:)