Разбивка текста на смысловые части?
Единственно-верный вариант здесь: построение "дерева" связей между частями речи (внутри одного предложения), собранное из множества разных текстов с помощью человека на конкретных эталонных примерах.
Т.е., алгоритму нужно чётко знать: где какая часть речи может находиться внутри предложения (с наибольшей долей вероятности) относительно других частей речи (расположенных вокруг, до, после или отсутствующих вовсе).А задача такого плана решается исключительно только с помощью создания и обучения НС.Пример:
Подаём текст на анализ: "Сервер не включался из-за сломанного блока питания."
Отправляем на вход: "Почему не включался сервер?"
Получить должны: "Был сломан блок питания."
или
Отправляем на вход: "Блок питания был сломан?"
Получить должны: "Да."Возможно, что автор имел ввиду разделить и заменить местоимения на цельно-выраженные сущности.
"Вот дом, который построил Джек":
1. "Дом" ("вот" - удаляем, т.к. это частица)
2. "Дом построил Джек" ("который" заменяем на управляющее существительное "Дом")
PS: По ссылкам от Mikhail есть только простой шаблонный/словарный поиск с использованием правил и регулярных выражений - это не решение задачи в том виде, в котором возможно добиться правильной работы и корректного результата.
Перед разбивкой на смысловые части ("семантический" разбор) имеет смысл научиться делать его синтаксический разбор, в результате которого предложение будет представлено в более "компьютерочитаемом" виде. Алгоритмов на то и то масса, реализаций тоже, литература уходит своими корнями глубоко в прошлый век. Можете начать смотреть здесь:
https://habrahabr.ru/post/148124/
https://nlpub.ru/Обработка_текста
otipl.philol.msu.ru/~soiza/testsynt/files/info-par...
https://tech.yandex.ru/tomita/doc/dg/concept/inter...
Программы по извлечению информации (фактов) из текста
https://dmkpress.com/catalog/computer/databases/97...