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

| Комментариев: 4

Разбить текст на предложения — довольно распространенная задача. (Часто возникает схожая задача — выделить одно-два первых предложения.)

На спане есть несколько модулей, которые частично решают задачу. К сожалению, некоторые модули просят установить локаль (в наш век юникода), однако на поверку вполне уверенно работают и с русскими текстами безо всяких локалей.

Мне хочется, чтобы на входе был UTF-8, и не разрывались части предложения типа А. С. Пушкин, а еще лучше — зал им. А. Пушкина.

Text::Sentence

Модуль входит в состав комплекта HTML::Summary. Без установки локали в русских текстах лихо пропускает половину точек (да, я нагло тестировал юникод).

use Text::Sentence qw(split_sentences);

my @s = split_sentences($text); # возвращается список

Lingua::EN::Sentence

use Lingua::EN::Sentence qw(get_sentences);

my $s = get_sentences($text); # возвращается ссылка на список

Несмотря на название, модуль уверенно выделяет русские предложения, и не разбивает инициалы. Не прошел тест на немецкую дату 30. Dezember (разбил на точке), но на это есть другой модуль. Зал им. А. С. Пушкина поделил на части после им.

Lingua::DE::Sentence

use Lingua::DE::Sentence;

my $s = get_sentences($text); # ссылка на список

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

Text::ToSentences

Свежачок: модуль, добавленный на спан позавчера.

use Text::ToSentences qw(convert);

my $s = convert($text);

Функция convert возвращает ссылку на список предложений.

Здесь все хорошо с юникодом, но из зала им. А. С. Пушкина получислоь четыре предложения.

У этого модуля есть особенность — он выделяет из предложений части, заключенные в скобки, и помещает их в итоговый список как самостоятельное предложения (удаляя из охватывающего).

P. S. Это была история о том, почему рождаются велосипеды :-)

Комментариев: 4

С залом имени Пушкина ситуация сложная и неоднозначная, потому что «им» может быть и вполне самостоятельным словом:

В аренду дали зал им. А. С. Пушкина стихи читаю я.
Здесь в примере — два предложения.

P. S. Не работает авторизация через ЖЖ :-(

А нет ли у вас списка того же самого, только на python? Я как то с перлом не очень

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 30.12.2009 23:18. Автор — ash.

Предыдущая запись — Gearman::Driver

Следующая запись — Программа-минимум на 2010 год

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.