Pull to refresh

Comments 18

Пользуясь случаем спрошу — а нет ли свободных решений (можно не идеально работающих) для разбивки слов на слоги. Мне это нужно для генерирования картинок из текста — для чтения на устройствах, не поддерживающих нормальные программы для чтения.
А если предложение все же заканчивается на 'ул.' например: '… Пушкинская ул.' я так понимаю отработает не корректно и в конфиг не поможет?

К сожалению в этом случае и конфиг не помогает, по крайней мере я не нашел возможности задать более точные настройки. Пришлось смириться, так как подобные случаи — редкость.

А зачем для подобной задачи целый парсер, который даже не имеет встроенной библиотеки исключений?
Разбивка по ". " [точка-пробел] дала бы такой же результат. Остальное — в исключение.

Там есть исключения и правила, которые определяют — когда исключения работают, а когда нет. Несколько примеров как работают исключения я описал.

Для английского использовал spaCy. Выбрал, отчасти, потому что нужен был и POS tagger, который в нем тоже есть.
Вот ссылка. Сам пользуюсь решением от Солярикс и доволен.

Хочу просто упомянуть не совсем тривиальные элементы токенизации:

«у.е.»
«по моему»
«Васисуалий Пупкин»
«В.И. Ленин»

Это всё единичные токены. Без словаря вы такое не сделаете.

Попробовал разбить — все корректно:


$ echo "Уважаемый В.И. Ленин, сколько в у.е. это стоит? По моему 5 у.е., не больше - сказал Васисуалий Пупкин и ушел." | ./tomita-linux64 config.proto
[11:01:17 13:49:36] - Start.  (Processing files.)
Уважаемый В. И. Ленин , сколько в у.е . это стоит ? 
По моему 5 у.е . , не больше - сказал Васисуалий Пупкин и ушел . 
[11:01:17 13:49:36] - End.  (Processing files.)
UFO just landed and posted this here
Речь идёт про парсинг реальных текстов, не все из которых написаны профессиональными лингвистами.
Там ещё и не такие ошибки встречаются, и такие тексты тоже нужно правильно парсить.
UFO just landed and posted this here
Напомню: этот пост совершенно про другую задачу — разбиение текста на предложения.
> в спорных случаях парсер должен работать исключительно по правилам русского языка, иначе будет полный бардак.
Ваши слова означают, что вы не знаете, как решать задачу исправления ошибок для произвольных текстов, и умеете делать парсинг только для грамматичных текстов.
Задача исправления ошибок комплексная, обычно решается на разных уровнях, потому что ошибки бывают совершенно разные.
Конкретно, исправление для «по моему» чаще всего делается на уровне вероятностного морфологического парсера, который должен учитывать возможность отсутствия дефиса в словах. Также возможна корректировка принятого морфологическом парсером решения на уровне синтактико-семантического анализа.
Было упомянуто исправление ошибок. А как быть, если была пропущена именно «точка»? Или какой-нибудь другой знак препинания, завершающий предложение.

С этим сложнее. Я так понял что Томита-парсер опирается именно на знаки препинания и правила там организованы вокруг знаков препинания и токенов.


Тут от задачи зависит. Если нужно парсить новостные сайты например, то там текст более-менее аккуратно написан и грубые ошибки встречаются редко. Если нужно парсить текст из соцсетей, то нужно искать более продвинутый инструмент.

По идее «правильный» парсер должен дополнительно опираться на синтаксические конструкции и семантику (тут сложнее). А пока по ощущениям: предложение есть то, что начинается с заглавной буквы и заканчивается на ". или! или? или ...", а в gzt файл как раз добавляются места спотыканий (то же «ул.»).

В целом да, если текст более менее грамотный и не изобилует специфическими сокращениями, то этот вариант парсера более чем достаточный.
Разбить текст с точками на предложения у вас получилось, а что если в тексте нет точек — есть возможность с томито-парсером попытаться их расставить?
Sign up to leave a comment.

Articles