pymorphy2: неверно распознается часть речи

С помощью библиотеки pymorphy2 пытаюсь привести слово к родительному падежу.

Пример:

osnov = "Устав"
morph = pymorphy2.MorphAnalyzer()
osnov_rp = morph.parse(osnov)[0]
gent = osnov_rp.inflect({'gent'})
print(gent.word)

Результат: уставших.

Ожидаемый результат: Устава.


Ответы (1 шт):

Автор решения: strawdog

Pymorphy2 после парсинга слова выдает все возможные части речи, которые он распознал, указывая их score, по убыванию. В вашем случае, слово "устав" распознается как деепричастие с большей вероятностью, чем как существительное. Вы можете это проверить сами, выведя на печать

print(morph.parse(osnov))

Для вашего случая можно сделать такое решение:

import pymorphy2
osnov = "Устав"
morph = pymorphy2.MorphAnalyzer(lang="ru")
osnov_rp = [x for x in morph.parse(osnov) if "NOUN" in  x.tag][0]
gent = osnov_rp.inflect({'gent'})
print(gent.word)

устава

→ Ссылка