Multi-Saxon
Multi-Saxon: پردازش موازی XSLT برای پیکرههای بزرگ TEI
Multi-Saxon خلأ مهمی را در ابزارهای پردازش XML پر میکند: اجرای موازی تبدیلهای XSLT 2.0 و 3.0 که LXML (کتابخانهٔ پرکاربرد XML در Python) از عهدهشان برنمیآید. Multi-Saxon که بهطور خاص برای مجموعههای بزرگ اسناد XML TEI طراحی شده، با اجرای موازیِ بهینه زمان پردازش را بهطور چشمگیری کوتاه میکند.
ویژگیهای کلیدی
- پشتیبانی پیشرفتهٔ XSLT: تبدیلهای XSLT 2.0 و 3.0 را فراتر از تواناییهای LXML پردازش میکند
- پردازش موازی: زمان تبدیل مجموعههای بزرگ اسناد را با موازیسازی بهشدت کاهش میدهد
- بهینه برای TEI: بهطور خاص برای اسناد XML استاندارد Text Encoding Initiative (TEI) مهندسی شده است
- کارایی مقیاسپذیر: پیکرههایی از صدها تا هزاران سند را بهخوبی مدیریت میکند
- چندسکویی: در سیستمعاملها و محیطهای گوناگون کار میکند
مشکلی که Multi-Saxon حل میکند
پژوهشگران علوم انسانی دیجیتال که با TEI کار میکنند اغلب با دو چالش جدی روبهرویند:
- LXML (کتابخانهٔ رایج پردازش XML در Python) تنها از XSLT 1.0 پشتیبانی میکند و استفاده از امکانات پیشرفتهتر XSLT 2.0/3.0 را ناممکن میسازد
- پردازش ترتیبی پیکرههای بزرگ اسناد TEI میتواند بهطرزی بازدارنده زمانبر باشد
Multi-Saxon هر دو مشکل را حل میکند: از تواناییهای پیشرفتهٔ XSLT در Saxon بهره میگیرد و پردازش را میان چند هسته توزیع میکند تا کارایی بهطور چشمگیری بالا رود.
پیادهسازی
Multi-Saxon، Python را با پردازشگر Saxon جاوا ترکیب میکند تا خط لولهٔ تبدیلی پرکارایی بسازد:
- از کتابخانهٔ 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 بیابید.
