Время прочтения: 3 мин.
При работе с текстовыми документами часто возникает необходимость разбить содержимое этого документа на отдельные строки для дальнейшей работы с ними. Для решения этой задачи существуют различные токенизаторы. Однако, документы, обрабатываемые в банковской сфере, очень часто имеют специфический формат и без дополнительной настройки эти токенизаторы плохо справляются со своей работой.
В этой статье мы рассмотрим способы доработки модуля разбиения текста на предложения «Razdel».
Библиотека «Razdel» является частью проекта «Natasha» и предназначена для деления русскоязычных текстов на токены и предложения. Алгоритм ее работы построен на правилах.
Принцип работы следующий:
- Сбор кандидатов. В тексте находятся все кандидаты на конец предложения: точки, многоточия, скобки, кавычки.
- Объединение. Последовательно проходятся все кандидаты на разделение и, используя набор эвристик, кандидат либо склеивается с предыдущим, либо считается концом предложения.
Эвристики построены на правилах, в которых используются заранее определенные сокращения. Таким образом, для доработки библиотеки под наш формат документов мы можем корректировать следующие сущности:
- правила;
- сокращения;
- пунктуацию.
Библиотека «Razdel» имеет следующую структуру файлов:
Нам понадобятся только следующие три файла из списка:
- Файл «punct.py» содержит знаки пунктуации, которые могут быть использованы в тексте. В том числе, в этом файле определены разновидности кавычек, скобок, а также «смайликов».
Если в наших текстах используются специфические кавычки, или всяческие «смайлики», мы можем дописать их в этом файле в соответствующие переменные.
2. Файл «sokr.py» содержит перечень сокращений, которые могут быть использованы в тексте. Нас тут могут интересовать следующие объекты:
- TAIL_SOKRS – содержит сокращения, которые обязательно идут после определяемого слова (например, ‘г’ – 1994 г.);
- HEAD_SOKRS – содержит сокращения, которые обязательно идут перед определяемым словов (например, ‘св’ – св. Иоанна (святая));
- OTHER_SOKRS – содержит сокращения, которые используются как самостоятельные слова (например, ‘устар’ – устаревший);
- TAIL_PAIR_SOKRS – содержит парные сокращения, которые обязательно идут после определяемого слова (например, ‘н г’ – 19 октября н. г. (настоящего года));
- HEAD_PAIR_SOKRS – содержит парные сокращения, которые обязательно идут перед определяемым словов (например, ‘к н’ – к.н. доцент Иванов (кандидат наук));
- OTHER_PAIR_SOKRS – содержит парные сокращения, которые используются как самостоятельные словосочетания (например, ‘жен р’ – женский род).
Чаще всего в документах используются специфические сокращения, которые зависят от сферы деятельности, поэтому большая часть доработки библиотеки может заключаться в дополнении этого файла новыми сокращения, уникальными для выбранного домена.
3. Файл «sentenize.py» содержит перечень правил, по которым текст делится на предложения, а также регулярные выражения, на которых построены эти правила.
В этом файле мы можем дописывать свои собственные правила, либо корректировать имеющиеся регулярные выражения под наши нужды.
В итоге, после доработки этих файлов, ими можно заменить старые файлы библиотеки и пользоваться уже доработанной версией, которая сможет разделять наш текст на предложения с большей точностью.