Как разделить текст на русском на предложения и слоги?
На вход подается произвольный текст, например,
день весенний наступил кот на крыше завопил скоро тоже завоплю замуж очень я хочу
Мне нужно его разбить на предложения -
день весенний наступил. кот на крыше завопил. скоро тоже завоплю. замуж очень я хочу.
Смотрел NLTK - но он вроде такого с русским текстом сделать не сможет?
Со слогами планирую вот этот скрипт использовать. Может, как-то по количеству слог можно предложения бить?
Ответы (2 шт):
Если стихи - изучайте филологию, там есть какие-то правила, сколько в какой строке должно быть слогов (ямб, хорей, дактиль, анапест и пр.) Не всегда, но может сработать. Для произвольных строк - вряд-ли даже в теории этот возможно.
Если структура предложений более-менее стабильная, вот как у вас глаголом вроде все предложения заканчиваются и этот глагол в предложении единственный, тогда можно взять 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))
Вывод:
День весенний наступил. Кот на крыше завопил. Скоро тоже завоплю. Замуж очень я хочу.
Но в более общем случае это задача для очень продвинутых нейросетей, на мой взгляд, предложения на русском языке могут быть очень заковыристыми.