Как разделить текст на русском на предложения и слоги?

На вход подается произвольный текст, например,

день весенний наступил кот на крыше завопил скоро тоже завоплю замуж очень я хочу

Мне нужно его разбить на предложения -

день весенний наступил. кот на крыше завопил. скоро тоже завоплю. замуж очень я хочу.

Смотрел NLTK - но он вроде такого с русским текстом сделать не сможет?

Со слогами планирую вот этот скрипт использовать. Может, как-то по количеству слог можно предложения бить?


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

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

Если стихи - изучайте филологию, там есть какие-то правила, сколько в какой строке должно быть слогов (ямб, хорей, дактиль, анапест и пр.) Не всегда, но может сработать. Для произвольных строк - вряд-ли даже в теории этот возможно.

→ Ссылка
Автор решения: CrazyElf

Если структура предложений более-менее стабильная, вот как у вас глаголом вроде все предложения заканчиваются и этот глагол в предложении единственный, тогда можно взять pymorphy2, найти глаголы и вуаля:

import pymorphy2

text = "день весенний наступил кот на крыше завопил скоро тоже завоплю замуж очень я хочу"

ma = pymorphy2.MorphAnalyzer()
phrases = []
phrase = []
for word in text.split():
    phrase.append(word)
    if ma.parse(word)[0].tag.POS == 'VERB':
        phrases.append(' '.join(phrase).capitalize() + '.')
        phrase = []
print(' '.join(phrases))

Вывод:

День весенний наступил. Кот на крыше завопил. Скоро тоже завоплю. Замуж очень я хочу.

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

→ Ссылка