موضوع مقاله: سوئیبل | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سوئیبل | مقدمه: تجزیه‌کننده‌ی متون ویکی سوئیبل(به انگلیسی: Sweble) ابزاری متن باز برای تجزیه زبان نشانه‌گذاری متن ویکی است که توسط مدیاویکی، نرم‌افزار پشت ویکی‌پدیا، استفاده شده‌است. | ## بخش 1: سوئیبل | توسعه اولیه این تجزیه‌کننده توسط هانس دورن به عنوان پروژه پایان‌نامه دکتری در گروه پژوهشی منبع آزاد استاد دیرک ریه در دانشگاه ارلانگن-نورنبرگ از سال ۲۰۰۹ تا ۲۰۱۱ انجام شد. نتایج پایان نامه وی برای اولین بار در کنفرانس ویکی‌سیم(WikiSym) در سال 2011 به عموم مردم ارائه شد. پیش از آن ، پایان‌نامه از نظر علمی مورد بازرسی مستقل و تأیید قرار گرفته و در انجمن ماشین‌های حسابگر منتشر شده‌بود. براساس آمار فعلی موجود در Ohloh، تجزیه‌کننده سوئیبل اکثراً به زبان برنامه نویسی جاوا نوشته شده‌است و در مه ۲۰۱۱ منبع باز بوده‌است. رمزگذاری‌ها نیز با استفاده از تحلیل‌گر واژگانی فلکس که در JFlex نوشته شده اعتبارسنجی می‌شود. نسخه پیش از انتشار مقاله در مورد تجزیه متون ویکی سوئیبل را می‌توانید در صفحه اصلی پروژه‌ها مشاهده کنید. حالت کنونی تجزیه کردن تجزیه‌کننده‌ای که در مدیاویکی استفاده می‌شود، محتوا را به طور مستقیم از متن‌ویکی به اچ‌تی‌ام‌ال تبدیل می‌کند. جستجو و انبساط الگوها (مانند جعبه‌های اطلاعات)، متغیرها، و ابر اطلاعات (برای مثال lc:ABC به متن با حروف کوچک abc تبدیل می‌شود). صفحه‌های الگو می‌توانند دوباره شامل چنین ابر اطلاعاتی باشند تا دوباره مورد ارزیابی قرار بگیرند (بازگشتی). این روش شبیه روش گسترش ماکرو است که برای مثال در زبان‌های برنامه‌نویسی مانند سی پلاس‌پلاس استفاده می‌شود. بدین وسیله، متن توسط تعدادی از توابع تعبیه شده مدیاویکی پردازش می‌شود که هر کدام یک ساختار خاص را تشخیص می‌دهند. در بیشتر موارد، این قدم‌ها خط به خط انجام می‌شود، مگر در مورد جدول‌ها یا لیست‌ها. همان‌طور که نویسندگان سوئیبل در مقاله‌شان ذکر کرده‌اند، آنالیزی بر روی کد منبع تجزیه‌کننده مدیاویکی نشان داد که استراتژی استفاده از قدم‌های تبدیل جداگانه خود باعث بروز مشکلاتی می‌شود: بیشتر توابع استفاده شده اهمیتی به دامنه‌ی عناصر اطراف نمی‌دهند. در نتیجه، ارزیابی و تفسیر خروجی امکان دارد مبهم شود که به موتور تفسیر مرورگر وب استفاده‌شده بستگی دارد. | ## بخش 2: سوئیبل | آن‌ها می‌گویند: «مراحل پردازش فردی اغلب منجر به رفتار غیرمنتظره و متناقض از تجزیه‌کننده می شود. به عنوان مثال، لیست‌ها در داخل سلول‌های جدول شناخته می شوند؛ اما اگر خود جدول در داخل یک تصویر فریم ظاهر شود، لیست‌ها شناخته نمی‌شوند.» همانطور که در کنفرانس ویکی‌سیم (WikiSym) در سال ۲۰۰۸ میلادی مطرح شد، دو عامل عدم دقت زبان و جداشدن مؤلفه، مانع از تکامل نرم‌افزار ویکی می‌شوند. اگر محتوای ویکی دارای بازنویسی مشخص و کاملاً قابل پردازش در دستگاه باشد، این امر نه تنها به دستیابی به محتوای بهتر آن منجر می‌شود بلکه روش‌های پردازش آن را نیز بهبود می‌بخشد و گسترش می‌دهد. علاوه بر این ، یک مدل شیءگرایی خوب تعریف شده برای محتوای ویکی، اجازه می‌دهد تا ابزارهای بیشتری روی آن کار کنند. تاکنون تلاش‌های بسیاری در زمینه اجرای یک تجزیه‌کننده جدید برای مدیاویکی انجام شده‌است(را ببینید)؛ اما هیچکدام از آن‌ها تاکنون موفق نشده‌اند. نویسندگان سوئیبل معتقدند که این موضوع ممکن است «به دلیل انتخاب گرامرهای مشهور (LALR(1 و (LL(k باشد. در صورتی که متن ویکی احتیاج به یک حالت تجزیه‌کننده جهانی دارد و در نتیجه می‌تواند نوعی از زبان‌های حساس به متن تلقی شود.» در نتیجه، آن‌ها تجزیه‌کننده خود را بر اساس دستور زبان بیان تجزیه (PEG) پایه گذاری می‌کنند. این کار کمک می‌کند که جلوی اشتباهاتی که ناشی از کد نشانه‌گذاری نادرست است گرفته شود. (خطاهایی مانند داشتن پیوند بین چندین خانه یک جدول) اطلاعات بیشتر در مورد مدل درخت نحوی انتزاعی در گزارش فنی مدل شی‌گرای متون ویکی‌پدیا موجود است. گام‌های تجزیه کردن تجزیه کننده‌ی سوئیبل متون ویکی‌پدیا را در ۵ گام تجزیه می‌کند. اعتبار سنجی رمزگذاری از آن‌جایی که استفاده از همه کاراکترهای ممکن در متون ویکی‌پدیا مجاز نیست لازم است قبل از پردازش یک مرحله کاراکترهای ورودی فیلتر شوند تا کاراکترهایی (مثل کاراکترهای کنترلی یونی‌کد)که غیرمجاز هستند، حذف شوند. علاوه بر این، بعضی وقت‌ها برای برخی از نام‌های ورودی، یک نام‌گذاری داخلی انجام می‌شود تا در مراحل بعدی نام منحصر به فردی برای هر یک از ورودی‌ها وجود داشته‌باشد و روند کار با آن‌ها در مراحل بعدی ساده‌تر شود. با این حال، این مرحله نباید به خاطر حذف کردن از ورودی باعث از دست رفتن اطلاعات شود. پیش‌پردازش پس از این که متن ویکی از کاراکترهای غیرمجاز تمیز شد، متن ویکی حاصل برای بسط دادن آماده می‌شود. | ## بخش 3: سوئیبل | برای این منظور متن ویکی اسکن می‌شود تا نظرات شبیه اکس‌ام‌ال، ابر اطلاعاتی مانند تغییر مسیرها و سایر چیزها از این دست ، برچسب‌های شرطی و برچسب‌های اضافی را پیدا کنیم. سپس باید به حواسمان به عناصر اکس‌ام‌ال باشد که ممکن است مشابه توابع تجزیه کننده یا متغیرها شناخته شوند. نتیجه این مرحله یک درخت نحوی انتزاعی است که اغلب از گره‌های متنی تشکیل شده است و پیوندهای تغییر مسیر ، گره‌های انتقال و گره‌های با برچسب اضافی را نیز شامل می‌شود. بسط دادن صفحات در مدیاویکی اغلب با استفاده از قالب ها، کلمات جادویی، توابع تجزیه کننده و برچسب های اضافی ساخته می شوند. برای استفاده از درخت نحوی انتزاعی در یک ویرایشگر دریافت عین مشاهده، می‌بایست یک بار از بسط دادن صرف‌نظر شود تا انتشار گزاره‌های تراگنجانش و صدا زدن تابع‌های تجزیه‌کننده در صفحه اصلی دیده‌شود. با این حال، برای آن که بتوان مطلب را به عنوان مثال به شکل یک صفحه اچ‌تی‌ام‌ال نشان داد، همچنان باید این‌ها پردازش شوند تا خروجی کاملی به دست آید. علاوه بر این، صفحات مورد استفاده به عنوان قالب خود می‌توانند صفحات دیگر را منتقل کنند و این امر باعث می شود که بسط دادن یک تابع بازگشتی باشد. تجزیه کردن قبل از شروع تجزیه، درخت نحوی انتزاعی باید دوباره به متن ویکی تبدیل شود. پس از طی این قدم، یک تجزیه‌کننده دستور زبان بیان تجزیه (PEG) متن را تحلیل می‌کند و یک درخت نحوی انتزاعی تولید می‌کند که نحو و معناشناسی صفحه ویکی را ضبط می‌کند. پس‌پردازش در این مرحله برچسب‌ها با یکدیگر جفت و جور می‌شوند تا عناصر خروجی کامل را تشکیل دهند. علاوه بر این، آپاستروف‌ها مورد تجزیه و تحلیل قرار می گیرند تا مشخص شود کدام یک از آنها آپاستروف واقعی نثر هستند و کدام یک را باید به عنوان زبان نشانه‌گذاری برای فونت های ضخیم یا ایتالیک در متن ویکی تفسیر کرد. بدین ترتیب، درخت نحوی انتزاعی با استفاده از یک الگوریتم جستجوی اول عمق روی ساختار درخت پردازش می‌شود. تفسیر انواع مختلف خروجی و هم‌چنین توابع تحلیل به عنوان الگوی بازدیدگر برداشت می‌شوند. | ## جمع‌بندی | این امر به جداسازی ساختار داده‌ی درخت نحوی انتزاعی از الگوریتم‌هایی که روی داده‌ها کار می‌کنند، کمک می کند.