Разбить текст на предложения C#

244
28 мая 2018, 08:10

Имеется срочная необходимость разбить русский текст из файла на предложения. Простое деление (split) по ., ! или ? не подойдет. Нужно учитывать варианты сокращений типа т. о., др., т. д.; сокращения перед именем собственным (г. Москва), сокращения типа Иванов И. И. и другие. Сейчас код регулярного выражения выглядит так:

string[] splitSentences = Regex.Split(sTemp, @"(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?)(\s|[A-Z].*)");

Понятно, что этого не достаточно. Помогите, пожалуйста.

Answer 1

Я конечно не могу ручаться за 100% валидные предложения.

[А-ЯЁ][\S\s]+?(?:[\S][^А-ЯЁ\.]){1,}(?:\.+|[?!])(?!(\s*[а-яё)\-"«0-9\.]))

Но такой вариант подошел на частные случаи г. Москва или Иванов И.И.

Жду комментариев если какой-то участок вам мозолит глаза!

Вот здесь тестировал

READ ALSO
Нужно отобразить кнопки найдя строку &ldquo;admin&rdquo; и пароль &ldquo;1234&rdquo; в БД

Нужно отобразить кнопки найдя строку “admin” и пароль “1234” в БД

Необходимо выбрать из базы данных строку с именем admin и паролем 1234, в программировании не особо понимаю, рассчитываю на Вашу помощь, заранее...

181
Метод простых итераций С++, С#, C

Метод простых итераций С++, С#, C

Помогите с решение нелинейного уравненияПроблема заключается в том, что необходимо выразить функцию как x=fi(x) - как это вообще делается? Функция:...

336
Проблема с подключением к Базе данных MySQL

Проблема с подключением к Базе данных MySQL

Проблема следующая, написал код, чтобы вывести графики, данные которых хранятся в БД MySQL (делал БД в Workbench), но при запуске программы выдаёт...

164
Отправка формы в AngleSharp

Отправка формы в AngleSharp

Пробую выполнять действия на сайте с помощью библиотеки AngleSharpОстановился на эмуляции нажатия кнопки

359