Multi-Saxon

28 tháng 3, 2025 · 3 phút để đọc
code

Multi-Saxon: Xử lý XSLT song song cho kho ngữ liệu TEI lớn

Multi-Saxon lấp một khoảng trống đáng kể trong bộ công cụ xử lý XML: nó cho phép chạy song song các phép biến đổi XSLT 2.0 và 3.0 mà LXML (thư viện XML phổ biến của Python) không xử lý được. Được thiết kế riêng cho những bộ sưu tập tài liệu XML TEI lớn, Multi-Saxon rút ngắn đáng kể thời gian xử lý nhờ thực thi song song hiệu quả.

Tính năng chính

  • Hỗ trợ XSLT nâng cao: Xử lý các phép biến đổi XSLT 2.0 và 3.0, vượt ngoài khả năng của LXML
  • Xử lý song song: Giảm mạnh thời gian biến đổi trên các bộ sưu tập tài liệu lớn nhờ song song hóa
  • Tối ưu cho TEI: Được thiết kế riêng cho tài liệu XML theo chuẩn Text Encoding Initiative (TEI)
  • Hiệu năng mở rộng được: Xử lý hiệu quả những kho ngữ liệu từ vài trăm đến hàng nghìn tài liệu
  • Đa nền tảng: Chạy được trên nhiều hệ điều hành và môi trường khác nhau

Vấn đề mà Multi-Saxon giải quyết

Học giả nhân văn số làm việc với TEI thường vấp phải hai trở ngại lớn:

  1. LXML (thư viện xử lý XML thông dụng của Python) chỉ hỗ trợ XSLT 1.0, nên không thể dùng các tính năng nâng cao của XSLT 2.0/3.0
  2. Xử lý tuần tự những kho ngữ liệu TEI lớn có thể tốn thời gian đến mức không chấp nhận được

Multi-Saxon giải quyết cả hai bằng cách tận dụng năng lực XSLT nâng cao của Saxon, đồng thời phân phối việc xử lý trên nhiều lõi để đạt mức tăng hiệu năng đáng kể.

Triển khai

Multi-Saxon kết hợp Python với bộ xử lý Saxon của Java để tạo nên một đường ống biến đổi hiệu năng cao:

  • Dùng thư viện Saxon của Java để xử lý XSLT 2.0/3.0 một cách vững chắc
  • Dùng cơ chế đa tiến trình để phân phối các phép biến đổi trên những lõi CPU sẵn có
  • Quản lý hiệu quả các nhóm bộ xử lý nhằm tối đa hóa thông lượng
  • Cung cấp giao diện đơn giản để xử lý hàng loạt tài liệu TEI

Ví dụ sử dụng

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")

Tác động đối với nhân văn số

Với những dự án nhân văn số phải xử lý các bộ sưu tập tài liệu TEI lớn, Multi-Saxon cho phép:

  • Thực hiện những phép biến đổi phức tạp trên toàn bộ kho ngữ liệu, điều bất khả với LXML
  • Rút ngắn mạnh thời gian xử lý (thường gấp 5–10 lần trên hệ thống đa lõi)
  • Phân tích tinh vi hơn nhờ các tính năng nâng cao của XSLT 2.0/3.0
  • Đơn giản hóa quy trình xử lý trọn bộ sưu tập tài liệu

Mã nguồn và tài liệu có tại kho GitHub.

Clément Godbarge
Tác giả
Giảng viên Nhân văn số
Clément Godbarge là giảng viên Nhân văn số tại Đại học St Andrews. Nghiên cứu của ông xoay quanh khoa học và nghệ thuật trị quốc ở châu Âu đầu thời kỳ cận đại. Trong cuốn sách sắp xuất bản, ông khảo sát cách các thầy thuốc phục vụ tại triều đình Pháp và Ý thế kỷ XVI đã tự khẳng định mình như một kiểu chuyên gia chính trị mới. Nghiên cứu của ông đã nhận được tài trợ từ Quỹ Andrew W. Mellon, Ủy ban Fulbright, Hội Phục hưng Hoa Kỳ và Đại học Harvard.