Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разбиение текста на предложения. (http://www.flasher.ru/forum/showthread.php?t=162699)

Sergespb 03.08.2011 13:39

Разбиение текста на предложения.
 
Добрый день.

Есть определенная строка (проще говоря, текст).

Этот текст нужно разбить на предложения. Думается только в сторону regExp и split(). Массив получается. Всё удобно.

Но как составить регулярное выражение, которое будет бить на предложения без ошибок натыкаясь на инициалы, например.

Спасибо.

Wolsh 03.08.2011 13:45

Думаю такой точности не достичь. Пример - предложение "Ок." Как его отличить от "др. Хауз"?

SvetozarPNZ 03.08.2011 14:50

Определить минимальную длину предложения. После тестирования можно добавить исключения таких вариантов, который предположил Wolsh.

Wolsh 03.08.2011 15:03

В обычной речи предложением может быть "Я."
А уж в общении по мессенджерам и вовсе - ")"

Sergespb 05.08.2011 12:50

В итоге я сделал так.
Может кому понадобится.

Код AS3:

//бъем на предложения по данным символам.
var reSent:RegExp = /(\?+ |\!+ |\!\?+ |\?\!+ *|\.+ |\r+)/
//загоняем в массив
arrOfSent = proText.split(reSent);

Остается только сделать так чтобы исключались такие слова как "Mr.", "Mrs." и т.д. Ну то что как раз предложил Wolsh.

derhab 05.08.2011 14:10

ну сокращено внутри предложения может быть любое слово, вы не сможете предусмотреть все варианты

Sergespb 05.08.2011 14:16

Ну можно в процессе работы добавлять эти слова в словарь исключений. =)

fish_r 05.08.2011 14:46

Код:

/\W.{2,}[\. |\!{,3} |\?{,3} |\!\? |\?\! ]/gm
Любое, кроме "Я." (кто будет такое предложение писать?).

Код:

/[A-Z, А-Я].{2,}[\. |\!{,3} |\?{,3} |\?\! |\!\? ]/gm
Не, вот так лучше (пробелы значащие, в выражении).

Wolsh 05.08.2011 15:25

Кто будет)) Зависит от стилистики текста конечно. Нормальные междометия в русской речи - "А.", "О!" и даже акцентирование "И!"
Как вам такие конструкции -
"1. Блаблабла"
"а. Блаблабла"
Или такие - "Вася т. 8913202.."
Я не говорю что невозможно, я говорю что словарь будет огромным и увы, неоднозначным.

fish_r 05.08.2011 15:45

Да. Wolsh. Правда. Поймать всё не реально. Даже создав базу исключений.
Ещё например, иногда, пишут не так "В. Жутков", а так "Вл. Жутков", и всё - последующий текст теряется (в том выражении которое я привёл).


Часовой пояс GMT +4, время: 21:28.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.