Парсер предложений из текста

Тема в разделе "Как сделать...", создана пользователем Croner, 10 мар 2008.

Статус темы:
Закрыта.
  1. Croner

    Croner Постоялец

    Регистр.:
    12 ноя 2006
    Сообщения:
    117
    Симпатии:
    19
    Нужно из русских текстов выдирать предложения. Помогите с регуляркой какой нибуть.
    Тексты в текстовых файлах пока что, но могуть быть и в html.
     
  2. Karlasan

    Karlasan Постоялец

    Регистр.:
    7 дек 2007
    Сообщения:
    75
    Симпатии:
    153
    а если без регулярок?

    PHP:
    $text="Нужно из русских текстов выдирать предложения. Помогите с регуляркой какой нибуть.
    Тексты в текстовых файлах пока что, но могуть быть и в html."
    ;
    $predl=explode(".",$text);
    print_r($predl);
    выдаст:

    HTML:
    
    Array
    (
        [0] => Нужно из русских текстов выдирать предложения
        [1] =>  Помогите с регуляркой какой нибуть
        [2] => 
    Тексты в текстовых файлах пока что, но могуть быть и в html
        [3] => 
    )
    
    недостатков конечно куча - например если в тексте встретится "Иванов А.Б." - скрипт примет это за 3 предложения :)
    с другой стороны всё и не предусмотришь - нюансов куча будет.
     
  3. Croner

    Croner Постоялец

    Регистр.:
    12 ноя 2006
    Сообщения:
    117
    Симпатии:
    19
    Это простейший вариант.
    Проблема вылазит с ткого рода текстами
    Код:
     - К "Авроре". - И поясним для непонятливых, чтоб не  переспросили  насчет
    кафе, магазина, ресторана или гостиницы: - К крейсеру.  -  И  уж  для  самых
    туповатых уточним: - На Петроградскую набережную. К Сампсониевскому мостику.
    
    А также всякие фамилии, сокращения и т.д. :confused:
     
  4. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    зато есть повод усовершенствовать свои знания пхп
     
  5. puika

    puika

    Регистр.:
    25 ноя 2006
    Сообщения:
    262
    Симпатии:
    277
  6. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Я тоже в свое время парился над подобной задачей, более-менее приемлемых результатов удалось добиться таким алгоритмом:

    1) удаляем теги (через strip_tags())
    2) в полученном тексте ищем фрагменты, которые
    - начинаются на заглавную букву
    - заканчиваются на точку
    - содержат от 3 до 32 слов.

    Кол-во слов определять через split() по пробелу и потом count() получившегося массивчика. Простого подсчета пробельных символов здесь недостаточно.
     
  7. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    Я разбивал предложения по точке/многоточию/вопр.знаку/воскл.знаку и пробелу за ними. Перед этим удалил все отдельные тире, кавычки и прочий мусор.
     
Статус темы:
Закрыта.