Python, Обработка документов, Саморазвитие

Кастомизация токенизатора Razdel

Время прочтения: 3 мин.

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

В этой статье мы рассмотрим способы доработки модуля разбиения текста на предложения «Razdel».

Библиотека «Razdel» является частью проекта «Natasha» и предназначена для деления русскоязычных текстов на токены и предложения. Алгоритм ее работы построен на правилах.

Принцип работы следующий:

  1. Сбор кандидатов. В тексте находятся все кандидаты на конец предложения: точки, многоточия, скобки, кавычки.
  2. Объединение. Последовательно проходятся все кандидаты на разделение и, используя набор эвристик, кандидат либо склеивается с предыдущим, либо считается концом предложения.

Эвристики построены на правилах, в которых используются заранее определенные сокращения. Таким образом, для доработки библиотеки под наш формат документов мы можем корректировать следующие сущности:

  • правила;
  • сокращения;
  • пунктуацию.

Библиотека «Razdel» имеет следующую структуру файлов:

Нам понадобятся только следующие три файла из списка:

  1. Файл «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» содержит перечень правил, по которым текст делится на предложения, а также регулярные выражения, на которых построены эти правила.

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

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

Советуем почитать