Как при помощи pymorphy3 перевести в родительный падеж всё предложение целиком?

Рейтинг: 2Ответов: 2Опубликовано: 13.01.2023

Могли бы вы помочь с модулем pymorphy3? Хочу перевести в родительный падеж фразу целиком и получить "первого числа месяца", но это не работает с фразой:

spasibo = ("первое число месяца")
morph = pymorphy3.MorphAnalyzer()
one = morph.parse(spasibo)[0]
spasibo = (one.inflect({'gent'}).word)

только с отдельными словами, а как склонять предложения целиком?

Ответы

▲ 2Принят

В данном случае можете просто разбить предложение на отдельные слова и просклонять их по отдельности, а потом обратно собрать предложение:

import pymorphy3

phrase = "первое число месяца"
morph = pymorphy3.MorphAnalyzer()
result = ' '.join(morph.parse(word)[0].inflect({'gent'}).word for word in phrase.split())
print(result)

Вывод:

первого числа месяца
▲ 0

вот способ как исключать из морфологического анализа знаки препинания и союзы:

import pymorphy3
import string

text = "первое число месяца, дня и года".translate(str.maketrans('', '', string.punctuation))

morph = pymorphy3.MorphAnalyzer()
words = text.split()
conjunctions = [word for word in words if morph.parse(word)[0].tag.POS == 'CONJ']
sentence = [word for word in words if word not in conjunctions]
st = (' '.join(sentence))
status = ' '.join(morph.parse(word)[0].inflect({'gent'}).word for word in st.split())

print(status)

вывод

первого числа месяца дня года