Чего мне не хватает при получении существительных в предложении и в обратном предложении с помощью nltk? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть is_noun определение с использованием nltk:

is_noun = lambda pos: pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS'

, затем у меня это в функции:

def test(text):
    tokenized = nltk.word_tokenize(text)
    nouns = [word for (word, pos) in nltk.pos_tag(tokenized) if is_noun(pos)]  
    print ('Nouns:', nouns)
    return nouns

, затем я вызываю функцию:

test('When will this long and tedious journey ever end? Like all good')

и получить:

Nouns: ['journey']

затем вызвать ту же функцию, но с обратным предложением и получить:

test('good all Like end? ever journey tedious and long this will When')

результаты:

  Nouns: ['end']

I Я ожидаю получить такое же количество существительных, но это не так. Что я делаю не так?

1 Ответ

1 голос
/ 01 апреля 2020

Резюме: GI GO (Garbage In => Garbage Out).

Как следует из комментария, порядок слов имеет значение. Английский sh изобилует словами, которые могут выступать в качестве нескольких частей речи, в зависимости от расположения внутри фразы. Подумайте:

You can cage a swallow.
You cannot swallow a cage.

Во втором тексте, который вы представляете, у вас нет законного приговора каким-либо образом. Лучшее, что может определить анализатор Engli sh, - это то, что «end» может быть прямым объектом глагола «like», и поэтому в данном случае является существительным. Точно так же «путешествие» является главным глаголом второй последовательности слов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...