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