Multi-Saxon

28 марта 2025 г. · 2 мин. для прочтения
code

Multi-Saxon: параллельная обработка XSLT для больших корпусов TEI

Multi-Saxon закрывает серьёзный пробел в инструментах обработки XML: он позволяет параллельно выполнять преобразования XSLT 2.0 и 3.0, с которыми не справляется LXML (популярная библиотека Python для работы с XML). Созданный специально для больших собраний документов XML TEI, Multi-Saxon заметно ускоряет обработку за счёт эффективного параллельного выполнения.

Основные возможности

  • Продвинутая поддержка XSLT: выполняет преобразования XSLT 2.0 и 3.0, недоступные LXML
  • Параллельная обработка: резко сокращает время преобразования больших собраний документов за счёт распараллеливания
  • Оптимизация под TEI: спроектирован специально для XML-документов Text Encoding Initiative (TEI)
  • Масштабируемая производительность: эффективно обрабатывает корпуса от сотен до тысяч документов
  • Кроссплатформенность: работает в разных операционных системах и средах

Какую проблему решает Multi-Saxon

Специалисты по цифровым гуманитарным наукам, работающие с TEI, часто сталкиваются с двумя серьёзными трудностями:

  1. LXML (распространённая библиотека Python для обработки XML) поддерживает только XSLT 1.0, так что более продвинутыми возможностями XSLT 2.0/3.0 воспользоваться невозможно
  2. Последовательная обработка больших корпусов документов TEI может занимать непозволительно много времени

Multi-Saxon решает обе задачи: он использует продвинутые возможности XSLT в Saxon и распределяет обработку по нескольким ядрам, что даёт существенный выигрыш в производительности.

Реализация

Multi-Saxon сочетает Python с Java-процессором Saxon, образуя высокопроизводительный конвейер преобразований:

  • использует Java-библиотеку Saxon для надёжной обработки XSLT 2.0/3.0
  • применяет многопроцессность, распределяя преобразования по доступным ядрам CPU
  • эффективно управляет пулами процессов, чтобы максимизировать пропускную способность
  • предоставляет простой интерфейс для пакетной обработки документов TEI

Пример использования

from multi_saxon import MultiSaxon

# Initialize with your XSLT stylesheet
transformer = MultiSaxon("transform.xsl")

# Transform a single document
transformer.transform("input.xml", "output.xml")

# Transform an entire directory in parallel
transformer.transform_directory("input_dir", "output_dir")

Значение для цифровых гуманитарных наук

Проектам в цифровых гуманитарных науках, работающим с большими собраниями документов TEI, Multi-Saxon даёт:

  • сложные преобразования всего корпуса, невозможные с LXML
  • резко сокращённое время обработки (нередко в 5–10 раз на многоядерных системах)
  • более тонкий анализ благодаря продвинутым возможностям XSLT 2.0/3.0
  • упрощённый рабочий процесс для обработки целых собраний документов

Исходный код и документация — в репозитории на GitHub.

Clément Godbarge
Authors
Преподаватель цифровых гуманитарных наук
Клеман Годбарж — преподаватель цифровых гуманитарных наук в Университете Сент-Эндрюс. Его исследования посвящены науке и искусству управления в Европе раннего Нового времени. В готовящейся книге он рассматривает, как врачи при французских и итальянских дворах XVI века утверждали себя в качестве политических экспертов нового типа. Его работу поддерживали Фонд Эндрю У. Меллона, Комиссия Фулбрайта, Американское общество Ренессанса и Гарвардский университет.