| hunspell(5) | File Formats Manual | hunspell(5) |
نام (NAME)
hunspell - قالب پروندههای لغتنامه و وند هانسپل
توضیحات (DESCRIPTION)
Hunspell(1) برای تعیین نحوه غلطیابی املایی یک زبان به دو پرونده نیاز دارد: یک پرونده لغتنامه شامل واژگان و فلگهای مربوطه، و یک پرونده وند که مشخص میکند این فلگها چگونه غلطیابی املایی را کنترل میکنند. پرونده لغتنامه شخصی یک پرونده اختیاری سوم است.
پرونده لغتنامه (Dictionary file)
یک پرونده لغتنامه (*.dic) حاوی فهرستی از واژگان است که در هر سطر یک واژه قرار دارد. سطر اول پرونده (به جز لغتنامههای شخصی) حاوی تعداد تقریبی واژگان است (برای بهینهسازی اندازه حافظه درهمسازی). هر واژه میتواند به صورت اختیاری با یک اسلش ("/") و یک یا چند فلگ همراه باشد که ویژگیهای واژه (مانند وندها) را نشان میدهند.
نکته: واژگان لغتنامه نیز میتوانند حاوی اسلش باشند، به شرطی که به صورت "\/" اسکیپ شوند.
ارزش دارد که علاوه بر واژگان منفرد، جفتواژهها را نیز به لغتنامه اضافه کنید تا برای اشتباهات املایی رایجی که فاصله را جا انداختهاند، پیشنهادات درستی دریافت کنید، مانند مثال زیر برای موارد نادرست "alot" و "inspite" (همچنین "REP" و فیلد "ph:" را برای پیشنهادات درست اشتباهات املایی رایج ببینید):
3 word a lot in spite
پرونده لغتنامه شخصی (Personal dictionary file)
لغتنامههای شخصی فهرستهای سادهای از واژگان هستند. یک ستاره در اولین موقعیت نویسه، مدخل را به عنوان ممنوع علامتگذاری میکند. واژه دوم که با اسلش جدا میشود، پیوند وند را تعیین میکند.
foo Foo/Simpson *bar
در این مثال، "foo" و "Foo" واژگان شخصی هستند، به علاوه Foo با وندهای Simpson شناخته میشود (مانند Foo's و غیره) و bar یک واژه ممنوعه است.
مثال کوتاه (Short example)
پرونده لغتنامه:
3 hello try/B work/AB
فلگهای B و A ویژگیهای این واژگان را مشخص میکنند.
پرونده وند:
SET UTF-8 TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' REP 2 REP f ph REP ph f PFX A Y 1 PFX A 0 re . SFX B Y 2 SFX B 0 ed [^y] SFX B y ied y
در پرونده وند، پیشوند A و پسوند B تعریف شدهاند. فلگ A پیشوند `re-' را تعریف میکند. کلاس B دو پسوند `ed-' را تعریف میکند. اولین پسوند B میتواند به یک واژه اضافه شود اگر آخرین نویسه واژه `y' نباشد. دومین پسوند میتواند به واژگانی اضافه شود که به `y' ختم میشوند.
تمام واژگان پذیرفتهشده با این ترکیب لغتنامه و وند عبارتند از: "hello"، "try"، "tried"، "work"، "worked"، "rework"، "reworked".
گزینههای عمومی پرونده وند (AFFIX FILE GENERAL OPTIONS)
توزیع کد منبع هانسپل شامل بیش از ۸۰ مثال برای استفاده از گزینهها است.
- SET encoding
- کدگذاری نویسههای واژگان و تکواژها را در پروندههای وند و لغتنامه تنظیم میکند. مقادیر مجاز: UTF-8، ISO8859-1 تا ISO8859-10، ISO8859-13 تا ISO8859-15، KOI8-R، KOI8-U، cp1251، ISCII-DEVANAGARI.
SET UTF-8
- FLAG value
- نوع فلگ را تعیین میکند. نوع پیشفرض نویسه هشتبیتی (ASCII گسترشیافته) است. پارامتر `UTF-8' فلگهای نویسهای یونیکد با کدگذاری UTF-8 را تنظیم میکند. مقدار `long' نوع فلگ نویسهای ASCII گسترشیافته دوگانه را تنظیم میکند؛ مقدار `num' نوع فلگ عددی دهدهی را تنظیم میکند. فلگهای دهدهی از ۱ تا ۶۵۰۰۰ شمارهگذاری میشوند و در فیلدهای فلگ با کاما از هم جدا میگردند.
FLAG long
- COMPLEXPREFIXES
- حذف دوگانه پیشوند (اما حذف تکی پسوند) را تنظیم میکند، مثلاً برای زبانهای دارای ساختواژه پیچیده با سامانه نوشتاری راستبهچپ.
- LANG langcode
- کد زبان را برای عملکردهای وابسته به زبان هانسپل تنظیم میکند. از آن برای فعال کردن تغییر اندازه حروف خاص در زبانهای آذری (LANG az)، ترکی (LANG tr) و تاتاری کریمه (LANG crh)، و قواعد ترکیب شمارش هجا در مجاری (LANG hu) استفاده کنید.
- IGNORE characters
- نویسههایی را برای نادیده گرفتن در واژگان لغتنامه، وندها و واژگان ورودی تنظیم میکند. برای نویسههای اختیاری مانند حرکات عربی (harakat) یا نشانههای عبری (niqqud) مفید است (لغتنامههای آزمایشی tests/ignore.* را در توزیع هانسپل ببینید).
- AF number_of_flag_vector_aliases
- AF flag_vector
- هانسپل میتواند مجموعههای فلگ وند را با اعداد ترتیبی در قواعد وند جایگزین کند (فشردهسازی نام مستعار، ابزار makealias را ببینید). اولین مثال با فشردهسازی نام مستعار:
3 hello try/1 work/2
تعاریف AF در پرونده وند:
AF 2 AF A AF AB
این معادل پرونده dic زیر است:
3 hello try/A work/AB
همچنین مثالهای tests/alias* در توزیع سورس را ببینید.
نکته ۱: اگر پرونده وند شامل پارامتر FLAG باشد، آن را قبل از تعاریف AF تعریف کنید.
نکته ۲: از ابزار makealias در توزیع هانسپل برای فشردهسازی پروندههای aff و dic استفاده کنید.
- AM number_of_morphological_aliases
- AM morphological_fields
- هانسپل همچنین میتواند دادههای ساختواژی را با اعداد ترتیبی در قواعد وند جایگزین کند (فشردهسازی نام مستعار). مثالهای tests/alias* را ببینید.
گزینههای پیشنهادات در پرونده وند (AFFIX FILE OPTIONS FOR SUGGESTION)
پارامترهای پیشنهاد میتوانند n-gram پیشفرض هانسپل (جستجوی شباهت در واژگان لغتنامه بر اساس توالیهای مشترک ۱، ۲، ۳ و ۴ نویسهای)، جابجایی نویسهها و پیشنهادات حذفی را بهینهسازی کنند. گزینه REP برای اصلاح خطاهای املایی معمولی و بد مخصوص یک زبان توصیه میشود، زیرا پیشنهادات REP دارای بالاترین اولویت در فهرست پیشنهادات هستند. PHONE برای زبانهایی است که رسمالخط آنها مبتنی بر تلفظ نیست.
برای اشتباهات املایی کوتاه رایج، استفاده از فیلد :ph (که بعداً ذکر میشود) برای ارائه بهترین پیشنهادات مهم است.
- KEY characters_separated_by_vertical_line_optionally
- هانسپل واژگانی را جستجو و پیشنهاد میکند که در آنها یک نویسه منفرد با نویسه مجاور KEY جایگزین شده باشد. نویسههای غیرمجاور در رشته KEY با نویسه خط عمودی جدا میشوند. پارامترهای KEY پیشنهادی برای چیدمانهای صفحهکلید QWERTY و Dvorak:
KEY qwertyuiop|asdfghjkl|zxcvbnm KEY pyfgcrl|aeouidhtns|qjkxbmwvz
با استفاده از اولین چیدمان QWERTY، هانسپل "nude" و "node" را برای "*nide" پیشنهاد میکند. یک نویسه میتواند همسایگان بیشتری نیز داشته باشد:
KEY qwertzuop|yxcvbnm|qaw|say|wse|dsx|sy|edr|fdc|dx|rft|gfv|fc|tgz|hgb|gv|zhu|jhn|hb|uji|kjm|jn|iko|lkm
- TRY characters
- هانسپل میتواند اشکال درست واژه را زمانی پیشنهاد دهد که با واژه ورودی نادرست به اندازه یک نویسه TRY تفاوت داشته باشند. پارامتر TRY به بزرگی و کوچکی حروف حساس است.
- NOSUGGEST flag
- واژگانی که با فلگ NOSUGGEST علامتگذاری شدهاند پیشنهاد داده نمیشوند (اما همچنان در صورت تایپ صحیح پذیرفته میشوند). برای کلمات رکیک و نامناسب پیشنهاد شده است (همچنین SUBSTANDARD را ببینید).
- MAXCPDSUGS num
- حداکثر تعداد واژگان مرکب پیشنهادی تولیدشده توسط قواعد ترکیب را تنظیم میکند.
- MAXNGRAMSUGS num
- حداکثر تعداد پیشنهادات n-gram را تنظیم میکند. مقدار 0 پیشنهادات n-gram را غیرفعال میکند (همچنین MAXDIFF را ببینید).
- MAXDIFF [0-10]
- ضریب شباهت را برای پیشنهادات مبتنی بر n-gram تنظیم میکند (5 = مقدار پیشفرض؛ 0 = پیشنهادات n-gram کمتر اما حداقل ۱؛ 10 = حداکثر پیشنهادات MAXNGRAMSUGS).
- ONLYMAXDIFF
- تمام پیشنهادات بد n-gram را حذف میکند (حالت پیشفرض یکی را نگه میدارد، MAXDIFF را ببینید).
- NOSPLITSUGS
- پیشنهادات واژگان حاوی فاصله را غیرفعال میکند.
- SUGSWITHDOTS
- در صورتی که واژه ورودی به نقطه ختم شود، به پیشنهادات نقطه اضافه میکند (برای لغتنامههای LibreOffice کاربرد ندارد زیرا خود سازوکار گسترش نقطه خودکار دارد).
- REP number_of_replacement_definitions
- REP what replacement
- این جدول تغییراتی را مشخص میکند که ابتدا باید امتحان شوند. اولین سطر REP سرآیند جدول است و پس از آن یک یا چند سطر داده REP قرار میگیرد. با این جدول، هانسپل میتواند اشکال صحیح را برای اشتباهات املایی متداولی که در آنها شکل نادرست بیش از یک حرف با شکل صحیح تفاوت دارد، پیشنهاد دهد (همچنین ":ph" را ببینید). رشته جستجو از لنگرهای مرزی عبارات منظم (^ و $) پشتیبانی میکند. برای مثال، یک تعریف جدول جایگزینی ممکن در انگلیسی برای مدیریت صامتهای با املای نادرست:
REP 5 REP f ph REP ph f REP tion$ shun REP ^cooccurr co-occurr REP ^alot$ a_lot
نکته ۱: تعریف جایگزینیها برای خطاهای تکنویسهای متداول نیز بسیار مفید است: با REP میتوانید اولویت بالاتری به زیرمجموعهای از پیشنهادات TRY بدهید (فهرست پیشنهادات با پیشنهادات REP آغاز میشود).
نکته ۲: برای پیشنهاد واژگان جداشده، فاصلهها را با زیرخط مشخص کنید:
REP 1 REP onetwothree one_two_three
نکته ۳: جدول جایگزینی را میتوان برای بررسی دقیقتر واژگان مرکب با گزینه CHECKCOMPOUNDREP استفاده کرد.
- MAP number_of_map_definitions
- MAP string_of_related_chars_or_parenthesized_character_sequences
- میتوان
اطلاعات
وابسته به
زبان را
درباره
نویسهها و
توالیهای
نویسهای
که باید
مرتبط در
نظر گرفته
شوند (یعنی
نزدیکتر
از سایر
نویسههای
خارج از
مجموعه)، در
پرونده وند
(.aff) با یک جدول
map تعریف کرد.
با این
جدول،
هانسپل
میتواند
اشکال درست
را برای
واژگانی
پیشنهاد
دهد که به
اشتباه حرف
یا
گروههای
حروفی
نادرست را
از یک
مجموعه
مرتبط
انتخاب
کردهاند.
برای مثال، یک نگاشت ممکن میتواند برای ü دارای اوملاوت آلمانی در برابر u معمولی باشد؛ کلمه Frühstück باید با u دارای اوملاوت نوشته شود نه معمولی.
MAP 1 MAP uü
از گروههای داخل پرانتز برای توالیهای نویسهای استفاده کنید (مثلاً برای نویسههای یونیکد ترکیبی):
MAP 3
MAP ß(ss) (character sequence)
MAP fi(fi) ("fi" compatibility characters for Unicode fi ligature)
MAP (ọ́)o (composed Unicode character: ó with bottom dot)
- PHONE number_of_phone_definitions
- PHONE what replacement
- گزینه PHONE از یک الگوریتم آوانویسی واجشناختی جدولمحور که از Aspell قرض گرفته شده است استفاده میکند. این گزینه برای زبانهایی که رسمالخط آنها مبتنی بر تلفظ نیست مفید است. میتوانید تبدیل کامل الفبا و سایر قواعد را برای تبدیل توالیهای حروفی خاص اضافه کنید. برای مستندات دقیق به نشانی http://aspell.net/man-html/Phonetic-Code.html مراجعه کنید. نکته: نویسههای چندبایتی UTF-8 هنوز با عبارات کروشهای کار نمیکنند. عبارات محدوده خط تیره همچنان روی تکبایتها عمل میکنند نه نویسههای UTF-8.
- WARN flag
- این فلگ برای واژگان نادر است که معمولاً اشتباهات املایی نیز هستند؛ گزینه r- در خط فرمان هانسپل و FORBIDWARN را ببینید.
- FORBIDWARN
- واژگان دارای فلگ WARN با استفاده از این پارامتر توسط غلطیاب املایی پذیرفته نمیشوند.
گزینههای کلمات مرکب (OPTIONS FOR COMPOUNDING)
- BREAK number_of_break_definitions
- BREAK character_or_character_sequence
- نقاط شکست جدیدی را برای تقسیم واژگان و بررسی جداگانه بخشهای واژه تعریف میکند. از ^ و $ برای حذف نویسهها در ابتدا و انتهای واژه استفاده کنید. منطق: برای ترکیب با نویسهها یا رشتههای اتصالدهنده (مثلاً خط تیره در انگلیسی و آلمانی یا خط تیره و خط تیره کشیده در مجاری) مفید است. خط تیرهها اغلب نقاط شکست بدی برای توکنسازی هستند، زیرا کلمات مرکب با خط تیره ممکن است حاوی بخشهای نامعتبر نیز باشند. با BREAK، هانسپل میتواند هر دو طرف این کلمات مرکب را با شکستن واژهها در خط تیرهها و خط تیرههای کشیده بررسی کند:
BREAK 2 BREAK - BREAK -- # n-dash
شکستها بازگشتی هستند، بنابراین foo-bar، bar-foo و foo-foo--bar-bar همگی کلمات مرکب معتبر خواهند بود. نکته: شکست پیشفرض واژه در هانسپل معادل تعریف BREAK زیر است:
BREAK 3 BREAK - BREAK ^- BREAK -$
با این تعریف BREAK، هانسپل اشکال "-word" و "word-" را نمیپذیرد:
BREAK 1 BREAK -
خاموش کردن مقادیر پیشفرض:
BREAK 0
نکته ۲: گزینه COMPOUNDRULE برای مدیریت خط تیرهها و سایر نویسهها یا رشتههای پیوند کلمات مرکب بهتر است. اگر میخواهید واژگان دارای خط تیره یا سایر نویسههای پیوند را بررسی کنید و زمان یا امکان توصیف قواعد دقیق با COMPOUNDRULE را ندارید از BREAK استفاده کنید (گزینه COMPOUNDRULE فقط پسوندگذاری آخرین بخش واژه مرکب را مدیریت میکند).
نکته ۳: برای غلطیابی املایی واژگان دارای نویسههای اضافی در خط فرمان، پارامتر WORDCHARS را تنظیم کنید: WORDCHARS --- (مثال tests/break.* را ببینید).
- COMPOUNDRULE number_of_compound_definitions
- COMPOUNDRULE compound_pattern
- الگوهای
مرکب
سفارشی را
با نحوی
شبیه به
عبارات
منظم (regex)
تعریف
میکند. سطر
اول COMPOUNDRULE یک
سرآیند
حاوی تعداد
تعاریف
بعدی COMPOUNDRULE است.
الگوهای
مرکب شامل
فلگهای
ترکیب،
پرانتزها و
فرانویسههای
`*' یا `?' هستند.
فلگی که پس
از آن `*'
بیاید با
دنبالهای
از ۰ یا چند
واژه که با
این فلگ
ترکیب
نشانهگذاری
شدهاند
مطابقت
دارد. فلگی
که پس از آن `?'
بیاید با ۰
یا ۱ واژه
نشانهگذاریشده
مطابقت
میکند.
مثالهای
tests/compound*.* را
ببینید.
نکته: لغتنامه en_US در OpenOffice.org از COMPOUNDRULE برای شناسایی اعداد ترتیبی (1st، 2nd، 11th، 12th، 22nd و غیره) استفاده میکند.
نکته ۲: با انواع فلگهای طولانی و عددی، فقط از فلگهای درون پرانتز استفاده کنید: (1500)*(2000)?
نکته ۳: فلگهای COMPOUNDRULE کاملاً مستقل از سازوکارهای ترکیب با استفاده از COMPOUNDFLAG، COMPOUNDBEGIN و غیره عمل میکنند (از این فلگها روی مدخلهای واژه متفاوتی استفاده کنید).
- COMPOUNDMIN num
- حداقل طول واژگان مورد استفاده برای ترکیب. مقدار پیشفرض ۳ حرف است.
- MAXCPDSUGS num
- حداکثر پیشنهادات کلمات مرکب. از 0 برای غیرفعال کردن پیشنهاد از کلمات مرکب استفاده کنید. مقدار پیشفرض نامحدود است.
- COMPOUNDFLAG flag
- واژگانی که با فلگ COMPOUNDFLAG علامتگذاری شدهاند میتوانند در واژگان مرکب ظاهر شوند (مگر اینکه واژه کوتاهتر از COMPOUNDMIN باشد). وندهای دارای COMPOUNDFLAG نیز ترکیب واژگان دارای وند را مجاز میکنند.
- COMPOUNDBEGIN flag
- واژگان نشانهگذاریشده با COMPOUNDBEGIN (یا دارای یک وند نشانهگذاریشده) میتوانند اولین عناصر در واژگان مرکب باشند.
- COMPOUNDLAST flag
- واژگان نشانهگذاریشده با COMPOUNDLAST (یا دارای یک وند نشانهگذاریشده) میتوانند آخرین عناصر در واژگان مرکب باشند.
- COMPOUNDMIDDLE flag
- واژگان نشانهگذاریشده با COMPOUNDMIDDLE (یا دارای یک وند نشانهگذاریشده) میتوانند عناصر میانی در واژگان مرکب باشند.
- ONLYINCOMPOUND flag
- پسوندهای نشانهگذاریشده با ONLYINCOMPOUND فقط میتوانند در داخل کلمات مرکب ظاهر شوند (عناصر Fuge در آلمانی). فلگ ONLYINCOMPOUND روی واژگان نیز کار میکند (tests/onlyincompound.* را ببینید). نکته: همچنین برای نشانهگذاری بخشهای ترکیبی که به خودی خود به عنوان یک واژه صحیح نیستند مفید است.
- COMPOUNDPERMITFLAG flag
- پیشوندها در ابتدای کلمات مرکب مجاز هستند، و پسوندها به طور پیشفرض در انتهای کلمات مرکب مجازند. وندهای دارای COMPOUNDPERMITFLAG میتوانند در داخل کلمات مرکب قرار گیرند.
- COMPOUNDFORBIDFLAG flag
- پسوندهای دارای این فلگ ترکیب واژه دارای وند را ممنوع میکنند. واژگان لغتنامه با این فلگ از ابتدا و وسط کلمات مرکب حذف میشوند و اثر COMPOUNDPERMITFLAG را خنثی میکنند.
- COMPOUNDMORESUFFIXES
- پسوندهای دوگانه را در کلمات مرکب مجاز میکند.
- COMPOUNDROOT flag
- فلگ COMPOUNDROOT کلمات مرکب را در لغتنامه علامتگذاری میکند (در حال حاضر فقط در کد خاص زبان مجاری استفاده میشود).
- COMPOUNDWORDMAX number
- حداکثر تعداد کلمات در یک کلمه مرکب را تنظیم میکند (پیشفرض نامحدود است).
- CHECKCOMPOUNDDUP
- تکرار کلمه در کلمات مرکب را ممنوع میکند (مانند foofoo).
- CHECKCOMPOUNDREP
- ترکیب را ممنوع میکند، اگر کلمه مرکب (معمولاً نادرست) بتواند یک کلمه غیرمرکب با خطای REP باشد. برای زبانهایی با قواعد املایی سازگار با کلمات مرکب مفید است.
- CHECKCOMPOUNDCASE
- نویسههای با حروف بزرگ در مرز کلمات در ترکیبات را ممنوع میکند.
- CHECKCOMPOUNDTRIPLE
- اگر کلمه مرکب شامل حروف تکراری سهگانه باشد ترکیب را ممنوع میکند (مانند foo|ox یا xo|oof).
- SIMPLIFIEDTRIPLE
- اشکال ۲ حرفی سادهشده کلمات مرکب ممنوعشده توسط CHECKCOMPOUNDTRIPLE را مجاز میکند. برای سوئدی و نروژی و املای قدیمی آلمانی مفید است (Schiff|fahrt -> Schiffahrt).
- CHECKCOMPOUNDPATTERN number_of_checkcompoundpattern_definitions
- CHECKCOMPOUNDPATTERN endchars[/flag] beginchars[/flag] [replacement]
- ترکیب را
ممنوع
میکند اگر
واژه اول در
ترکیب به endchars
ختم شود و
واژه بعدی
با beginchars آغاز
گردد و (به
صورت
اختیاری)
فلگهای
درخواستی
را داشته
باشند.
پارامتر
اختیاری replacement
شکل مرکب
سادهشده
را مجاز
میکند.
الگوی ویژه "endchars" با مقدار 0 (صفر) قاعده را به ریشههای تغییرنیافته محدود میکند:
CHECKCOMPOUNDPATTERN 0/x /y
نکته: COMPOUNDMIN با تناوب واژگان مرکب به درستی کار نمیکند، بنابراین ممکن است لازم باشد COMPOUNDMIN را روی مقدار کمتری تنظیم کنید.
- FORCEUCASE flag
- اگر آخرین بخش واژه یک ترکیب دارای فلگ FORCEUCASE باشد، بزرگنویسی تمام واژه مرکب را اجباری میکند.
- COMPOUNDSYLLABLE max_syllable vowels
- برای قواعد ترکیب خاص در زبان مجاری مورد نیاز است. پارامتر اول حداکثر تعداد هجا مجاز در یک ترکیب است هنگامی که تعداد کلمات در ترکیب از COMPOUNDWORDMAX فراتر رود. پارامتر دوم فهرست حروف صدادار است (که برای شمارش هجاها استفاده میشود).
- SYLLABLENUM flags
- برای قواعد ترکیب خاص در زبان مجاری مورد نیاز است.
گزینههای ساخت وند در پرونده وند (AFFIX FILE OPTIONS FOR AFFIX CREATION)
- PFX flag cross_product number
- PFX flag stripping prefix [condition [morphological_fields...]]
- SFX flag cross_product number
- SFX flag stripping suffix [condition [morphological_fields...]]
- وند یا
پیشوندی
است یا
پسوندی که
برای ساخت
واژگان
دیگر به
کلمات ریشه
متصل
میشود.
ردههای
وند را
میتوان با
تعداد
دلخواهی از
قواعد وند
تعریف کرد.
ردههای
وند با
فلگهای
وند
شناسایی
میشوند.
اولین سطر
تعریف رده
وند،
سرآیند است.
فیلدهای
سرآیند رده
وند:
(۰) نام گزینه (PFX یا SFX)
(۱) فلگ (نام رده وند)
(۲) ضرب متقاطع (مجوز ترکیب پیشوندها و پسوندها). مقادیر مجاز: Y (بله) یا N (خیر)
(۳) تعداد سطرهای قواعد بعدی.
فیلدهای یک قاعده وند:
(۰) نام گزینه
(۱) فلگ
(۲) نویسههای حذفی از ابتدا (در قواعد پیشوند) یا انتها (در قواعد پسوند) واژه
(۳) وند (به صورت اختیاری با فلگهای ردههای ادامهدهنده که با اسلش جدا میشوند)
(۴) شرط.
حذف صفر یا وند صفر با 0 نشان داده میشود. شرط صفر با یک نقطه نشان داده میشود. شرط یک الگوی سادهشده شبیه عبارات منظم است که باید قبل از اعمال وند برقرار باشد (نقطه با نویسه دلخواه مطابقت دارد؛ نویسههای داخل براکت با هر نویسهای از زیرمجموعه داخل براکت مطابقت دارند؛ خط تیره معنای خاصی ندارد اما علامت توان (^) بلافاصله پس از براکت باز، مجموعه نویسهها را معکوس میکند).
(۵) فیلدهای ساختواژی اختیاری که با فاصله یا تب جدا میشوند.
سایر گزینههای پرونده وند (AFFIX FILE OTHER OPTIONS)
- CIRCUMFIX flag
- وندی که با CIRCUMFIX نشانهگذاری شده فقط زمانی میتواند به یک واژه اعمال شود که آن واژه همچنین دارای پیشوندی با CIRCUMFIX باشد و بالعکس (پروندههای آزمایشی circumfix.* را در توزیع سورس ببینید).
- FORBIDDENWORD flag
- این فلگ یک شکل واژه ممنوعه را مشخص میکند. از آنجا که اشکال دارای وند نیز ممنوع هستند، میتوانیم زیرمجموعهای را از مجموعه واژگان دارای وند و مرکب پذیرفتهشده کم کنیم. نکته: برای ممنوع کردن واژگان اشتباه تولیدشده توسط سازوکار ترکیب مفید است.
- FULLSTRIP
- با FULLSTRIP، قواعد وند میتوانند کل واژه را (نه فقط همه به جز یک نویسه) قبل از افزودن وندها حذف کنند (پروندههای آزمایشی fullstrip.* را در توزیع سورس ببینید).
- KEEPCASE flag
- اشکال با حروف بزرگ و با حرف اول بزرگ واژگان دارای فلگ KEEPCASE را ممنوع میکند. برای رسمالخطهای خاص (واحدها و نمادهای ارز اغلب حتی در متون با حروف بزرگ، بزرگی و کوچکی حروف خود را حفظ میکنند) و سامانههای نوشتاری مفید است.
- ICONV number_of_ICONV_definitions
- ICONV pattern pattern2
- جدول تبدیل
ورودی را
تعریف
میکند. از
زیرخط '_'
برای نشان
دادن آخرین
نویسه رشته
استفاده
کنید. برای
مثال اگر
نیاز دارید
200D> را فقط در
صورتی که در
انتهای
واژه ظاهر
شود به FFF0>
تغییر دهید:
ICONV <200D>_ <FFF0>
نکته: برای تبدیل یک نوع نقلقول به نوعی دیگر یا تغییر پیوند نویسهها (لیگاتور) مفید است.
- OCONV number_of_OCONV_definitions
- OCONV pattern pattern2
- جدول تبدیل خروجی را تعریف میکند.
- LEMMA_PRESENT flag
- منسوخ شده است. به جای LEMMA_PRESENT از فیلد "st:" استفاده کنید.
- NEEDAFFIX flag
- این فلگ ریشههای مجازی را در لغتنامه مشخص میکند: واژگانی که فقط هنگام اتصال وند معتبر هستند (مگر اینکه واژه لغتنامه دارای همنام یا وند صفر باشد). NEEDAFFIX همچنین با پیشوندها و ترکیبات پیشوند + پسوند کار میکند (tests/needaffix5.* را ببینید).
- PSEUDOROOT flag
- منسوخ شده است (نام قبلی گزینه NEEDAFFIX).
- SUBSTANDARD flag
- فلگ SUBSTANDARD قواعد وند و واژگان لغتنامه (دگرواژهها) را مشخص میکند که در تولید ساختواژی استفاده نمیشوند، و کلمات ریشه را برای حذف از پیشنهادات تعیین میکند. همچنین NOSUGGEST را ببینید.
- WORDCHARS characters
- گزینه WORDCHARS توکنساز رابط خط فرمان هانسپل را با نویسههای واژهای اضافی گسترش میدهد. برای مثال، نقطه، خط تیره، خط تیره کشیده، ارقام و علامت درصد در مجاری نویسههای واژه هستند.
- CHECKSHARPS
- جفت حرف SS در کلمات آلمانی با حروف بزرگ میتواند ß باشد. هانسپل میتواند این حالت خاص را با اعلان CHECKSHARPS در هر دو حالت غلطیابی و پیشنهاد مدیریت کند.
تحلیل ساختواژی (Morphological analysis)
مدخلهای لغتنامه و قواعد وند هانسپل میتوانند فیلدهای توصیف ساختواژی اختیاری داشته باشند که با فاصله یا نویسه تب از هم جدا شده و با شناسههای فیلد ۳ نویسهای (دو حرف و یک دونقطه) شروع میشوند:
word/flags po:noun is:nom
مثال: ما یک منبع ساده با اطلاعات ساختواژی، یک پسوند اشتقاقی (:ds) و یک رده دستوری نقش کلمه (:po) تعریف میکنیم:
پرونده وند:
SFX X Y 1 SFX X 0 able . ds:able
پرونده لغتنامه:
drink/X po:verb
پرونده آزمایشی:
drink drinkable
آزمایش:
$ analyze test.aff test.dic test.txt > drink analyze(drink) = po:verb stem(drink) = po:verb > drinkable analyze(drinkable) = po:verb ds:able stem(drinkable) = drinkable
در این مثال میتوانید ببینید که تحلیلگر فیلدهای ساختواژی را به سبک عنصر و آرایش به یکدیگر متصل میکند.
فیلدهای داده اختیاری (Optional data fields)
شناسههای پیشفرض ساختواژی و غیره (مورد استفاده در پیشنهاد، ریشهیابی و تولید ساختواژی):
- ph:
- نویسهگردانی
جایگزین
برای
پیشنهادات
بهتر، یعنی
برای
اشتباهات
املایی
مربوط به
رسمالخط
خاص و تلفظ
واژه. این
بهترین راه
برای
رسیدگی به
اشتباهات
املایی
رایج است،
بنابراین
ارزش دارد
که یک فیلد :ph
به چند هزار
واژه
لغتنامه
که بیشتر
تحت تأثیر
قرار دارند
(یا
جفتواژهها
و غیره)
اضافه شود
تا
پیشنهادات
درستی برای
اشتباهات
املایی
آنها
دریافت
گردد.
برای مثال:
Wednesday ph:wendsay ph:wensday Marseille ph:maarsayl
هانسپل تمام نویسهگردانیهای :ph را به جدول داخلی REP اضافه میکند، بنابراین همیشه واژه درست را برای اشتباهات املایی مشخصشده با بالاترین اولویت پیشنهاد میدهد.
مثال قبلی معادل تعریف REP زیر است:
REP 6 REP wendsay Wednesday REP Wendsay Wednesday REP wensday Wednesday REP Wensday Wednesday REP maarsayl Marseille REP Maarsayl Marseille
ستاره در انتهای الگوی :ph به معنای حذف نویسه پایانی از الگو و واژه در قاعده REP مرتبط است:
pretty ph:prity*
منجر به قاعده REP زیر میشود:
REP 1 REP prit prett
که به پیشنهادات صحیح زیر میانجامد:
*prity -> pretty *pritier -> prettier *pritiest -> prettiest
علاوه بر این، فیلدهای :ph میتوانند پیشنهادات با بیش از دو واژه و همچنین پیشنهادات مختلف را برای یک اشتباه املایی مدیریت کنند:
do not know ph:dunno don't know ph:dunno
که نتیجه میدهد:
*dunno -> do not know, don't know
نکته: در صورت موجود بودن، :ph در شباهت n-gram نیز استفاده میشود.
پیکان "<-" در یک الگوی :ph به معنای قاعده REP است، و یک قاعده جایگزینی دلخواه مرتبط با مدخل لغتنامه ایجاد میکند:
happy/B ph:hepy ph:hepi->happi
نتیجه:
*hepy -> happy *hepiest -> happiest
- st:
- ریشه (Stem). اختیاری: ریشه پیشفرض در تحلیل ساختواژی همان مدخل لغتنامه است. فیلد ریشه برای ریشههای مجازی (واژگان لغتنامه با فلگ NEEDAFFIX) و برای استثناهای ساختواژی، به جای قواعد ساختواژی تککاربردی جدید مفید است.
feet st:foot is:plural mice st:mouse is:plural teeth st:tooth is:plural
اشکال واژه با چندین ریشه نیاز به چندین مدخل لغتنامه دارند:
lay po:verb st:lie is:past_2 lay po:verb is:present lay po:noun
- al:
- دگرواژه(ها) (Allomorphs). یک مدخل لغتنامه ریشه دگرواژههای آن است. تولید ساختواژی به فیلدهای ریشه، دگرواژه و وند نیاز دارد.
sing al:sang al:sung sang st:sing sung st:sing
- po:
- رده نقش کلمه (Part of speech).
- ds:
- پسوند(های)
اشتقاقی.
ریشهیابی
پسوندهای
اشتقاقی را
حذف
نمیکند.
تولید
ساختواژی
به ترتیب
فیلدهای
پسوند
بستگی دارد.
در قواعد وند:
SFX Y Y 1 SFX Y 0 ly . ds:ly_adj
در لغتنامه:
ably st:able ds:ly_adj able al:ably
- is:
- پسوند(های) تصریفی. تمام پسوندهای تصریفی توسط ریشهیابی حذف میشوند. تولید ساختواژی به ترتیب فیلدهای پسوند بستگی دارد.
feet st:foot is:plural
- ts:
- پسوند(های)
پایانی.
فیلدهای
پسوند
پایانی،
فیلدهای
پسوند
تصریفی
هستند که
توسط
پسوندهای
اضافی
(غیرپایانی)
"حذف"
شدهاند.
برای تکواژهای صفر و وندهای حذفشده توسط قواعد تقسیم مفید است.
work/D ts:present
SFX D Y 2 SFX D 0 ed . is:past_1 SFX D 0 ed . is:past_2
نمونه بارز پسوند پایانی، تکواژ صفر حالت فاعلی است.
حذف دوگانه پسوند (Twofold suffix stripping)
الگوریتم اصلی Ispell فقط یک پسوند را حذف میکند. هانسپل میتواند یک پسوند اضافی (یا یک پیشوند اضافی در حالت COMPLEXPREFIXES) را حذف کند.
حذف دوگانه پسوند بهبود قابل توجهی در رسیدگی به تعداد بیشمار پسوندهایی است که ویژگی زبانهای پیوندی هستند.
یک پسوند 's' دوم (رده وند Y) در مثال زیر رده ادامه پسوند 'able' خواهد بود:
SFX Y Y 1 SFX Y 0 s . SFX X Y 1 SFX X 0 able/Y .
پرونده لغتنامه:
drink/X
پرونده آزمایشی:
drink drinkable drinkables
آزمایش:
$ hunspell -m -d test <test.txt drink st:drink drinkable st:drink fl:X drinkables st:drink fl:X fl:Y
در تئوری، حذف دوگانه پسوند در مقایسه با پیادهسازی یکسطحی هانسپل تنها به ریشه دوم تعداد قواعد پسوند نیاز دارد. در عمل، این همان چیزی است که تشریح ساختواژه تصریفی مجاری را با حذف دوگانه پسوند ممکن ساخته است.
ردههای گسترشیافته وند (Extended affix classes)
هانسپل میتواند بیش از ۶۵۰۰۰ رده وند را مدیریت کند. سه نحو جدید برای تعیین فلگها در پروندههای وند و لغتنامه وجود دارد.
دستور FLAG long فلگهای ۲ نویسهای را تنظیم میکند:
FLAG long SFX Y1 Y 1 SFX Y1 0 s 1
رکورد لغتنامه با فلگهای Y1، Z3 و F?:
foo/Y1Z3F?
دستور FLAG num فلگهای عددی جداشده با کاما را تنظیم میکند:
FLAG num SFX 65000 Y 1 SFX 65000 0 s 1
مثال لغتنامه:
foo/65000,12,2756
مورد سوم فلگهای نویسهای یونیکد است.
کلمات همآوا/همنگاشت (Homonyms)
لغتنامه هانسپل میتواند شامل عناصر تکراری باشد که همنام یا همنگاشت هستند:
work/A po:verb work/B po:noun
یک پرونده وند:
SFX A Y 1 SFX A 0 s . sf:sg3 SFX B Y 1 SFX B 0 s . is:plur
پرونده آزمایشی:
works
آزمایش:
$ hunspell -d test -m <testwords work st:work po:verb is:sg3 work st:work po:noun is:plur
این قابلیت همچنین راهکاری برای ممنوع کردن ترکیبات غیرمجاز پیشوند/پسوند فراهم میکند.
وابستگیهای پیشوند-پسوند (Prefix--suffix dependencies)
یک اثر جانبی جالب از حذف چندمرحلهای این است که رسیدگی مناسب به پیراوندها اکنون به طور طبیعی و آسان حاصل میشود. برای نمونه، در زبان مجاری، صفت عالی با پیشوندگذاری همزمان leg- و پسوندگذاری -bb به پایه صفت ساخته میشود. مشکلی که در معماری تکسطحی وجود داشت این بود که هیچ راهی برای وابسته کردن مجوز واژگانی پیشوندها و پسوندهای خاص به یکدیگر وجود نداشت، و در نتیجه اشکال نادرست معتبر شناخته میشدند. در کلمات ساده، پیشوند un- فقط زمانی در انگلیسی مجاز است که پایه drink دارای پسوند -able باشد. اگر هر دوی این الگوها توسط قواعد وند برخط مدیریت شوند و قواعد فقط در برابر پایه بررسی شوند، هیچ راهی برای بیان این وابستگی وجود ندارد و سامانه دچار تولید بیش از حد یا کمتر از حد خواهد شد.
در مثال بعدی، رده پسوند R دارای یک رده پیشوند 'ادامهدهنده' (رده P) است:
PFX P Y 1 PFX P 0 un . [prefix_un]+ SFX S Y 1 SFX S 0 s . +PL SFX Q Y 1 SFX Q 0 s . +3SGV SFX R Y 1 SFX R 0 able/PS . +DER_V_ADJ_ABLE
لغتنامه:
2 drink/RQ [verb] drink/S [noun]
تحلیل ساختواژی:
> drink drink[verb] drink[noun] > drinks drink[verb]+3SGV drink[noun]+PL > drinkable drink[verb]+DER_V_ADJ_ABLE > drinkables drink[verb]+DER_V_ADJ_ABLE+PL > undrinkable [prefix_un]+drink[verb]+DER_V_ADJ_ABLE > undrinkables [prefix_un]+drink[verb]+DER_V_ADJ_ABLE+PL > undrink Unknown word. > undrinks Unknown word.
پیراوند (Circumfix)
وندهای شرطی پیادهسازیشده با رده ادامهدهنده برای پیراوندها کافی نیستند، زیرا یک پیراوند در ساختواژه یک وند واحد به شمار میرود. ما همچنین برای تحلیل ساختواژی صحیح به گزینه CIRCUMFIX نیاز داریم.
# circumfixes: ~ obligate prefix/suffix combinations # superlative in Hungarian: leg- (prefix) AND -bb (suffix) # nagy, nagyobb, legnagyobb, legeslegnagyobb # (great, greater, greatest, most greatest) CIRCUMFIX X PFX A Y 1 PFX A 0 leg/X . PFX B Y 1 PFX B 0 legesleg/X . SFX C Y 3 SFX C 0 obb . +COMPARATIVE SFX C 0 obb/AX . +SUPERLATIVE SFX C 0 obb/BX . +SUPERSUPERLATIVE
لغتنامه:
1 nagy/C [MN]
تحلیل:
> nagy nagy[MN] > nagyobb nagy[MN]+COMPARATIVE > legnagyobb nagy[MN]+SUPERLATIVE > legeslegnagyobb nagy[MN]+SUPERSUPERLATIVE
ترکیبات (Compounds)
مجاز ساختن ترکیب آزاد کلمات باعث کاهش دقت شناسایی میشود، بماند که ریشهیابی و تحلیل ساختواژی را نیز تحتالشعاع قرار میدهد. اگرچه Ispell سوییچهای واژگانی را برای مجاز ساختن ترکیب پایهها معرفی میکند، اما ثابت شده که این روش به اندازه کافی محدودکننده نیست. برای نمونه:
# affix file COMPOUNDFLAG X
2 foo/X bar/X
با این منبع، foobar و barfoo نیز کلمات پذیرفتهشده هستند.
این موضوع با معرفی ترکیب حساس به جهت بهبود یافته است، به طوری که ویژگیهای واژگانی میتوانند مشخص کنند که آیا پایه میتواند به عنوان جزء چپترین یا راستترین در کلمات مرکب ظاهر شود یا خیر. با این وجود، این راهکار هنوز برای رسیدگی به الگوهای پیچیده کلمات مرکب، به ویژه استانداردهای خط تیره ناکافی است.
الگوریتم Hunspell در حال حاضر هر شکل دارای وندی از واژگان را که به عنوان اعضای بالقوه کلمات مرکب علامتگذاری شدهاند مجاز میداند. Hunspell این روش را ارتقا داده و قواعد بازگشتی بررسی کلمات مرکب آن پیادهسازی قواعد املایی پیچیده کلمات مرکب مجاری را ممکن ساخته است. برای مثال گزینههای COMPOUNDWORDMAX، COMPOUNDSYLLABLE، COMPOUNDROOT و SYLLABLENUM را میتوان برای کدگذاری قاعده معروف '3-6' مجاری استفاده کرد. علاوه بر این، در مجاری پسوندهای اشتقاقی اغلب ویژگیهای ترکیبی را تغییر میدهند. هانسپل فلگهای ترکیب را روی وندها مجاز میداند و دو فلگ ویژه (COMPOUNDPERMITFLAG و COMPOUNDFORBIDFLAG) برای اجازه دادن یا ممنوع کردن ترکیب اشکال مشتق ارائه میدهد.
چندین قابلیت هانسپل برای رسیدگی به کلمات مرکب آلمانی مورد نیاز است:
# German compounding # set language to handle special casing of German sharp s LANG de_DE # compound flags COMPOUNDBEGIN U COMPOUNDMIDDLE V COMPOUNDEND W # Prefixes are allowed at the beginning of compounds, # suffixes are allowed at the end of compounds by default: # (prefix)?(root)+(affix)? # Affixes with COMPOUNDPERMITFLAG may be inside of compounds. COMPOUNDPERMITFLAG P # for German fogemorphemes (Fuge-element) # Hint: ONLYINCOMPOUND is not required everywhere, but the # checking will be a little faster with it. ONLYINCOMPOUND X # forbid uppercase characters at compound word bounds CHECKCOMPOUNDCASE # for handling Fuge-elements with dashes (Arbeits-) # dash will be a special word COMPOUNDMIN 1 WORDCHARS - # compound settings and fogemorpheme for `Arbeit' SFX A Y 3 SFX A 0 s/UPX . SFX A 0 s/VPDX . SFX A 0 0/WXD . SFX B Y 2 SFX B 0 0/UPX . SFX B 0 0/VWXDP . # a suffix for `Computer' SFX C Y 1 SFX C 0 n/WD . # for forbid exceptions (*Arbeitsnehmer) FORBIDDENWORD Z # dash prefix for compounds with dash (Arbeits-Computer) PFX - Y 1 PFX - 0 -/P . # decapitalizing prefix # circumfix for positioning in compounds PFX D Y 29 PFX D A a/PX A PFX D Ä ä/PX Ä . . PFX D Y y/PX Y PFX D Z z/PX Z
نمونه لغتنامه:
4 Arbeit/A- Computer/BC- -/W Arbeitsnehmer/Z
واژگان مرکب پذیرفتهشده با منبع قبلی:
Computer Computern Arbeit Arbeits- Computerarbeit Computerarbeits- Arbeitscomputer Arbeitscomputern Computerarbeitscomputer Computerarbeitscomputern Arbeitscomputerarbeit Computerarbeits-Computer Computerarbeits-Computern
کلمات مرکب پذیرفتهنشده:
computer arbeit Arbeits arbeits ComputerArbeit ComputerArbeits Arbeitcomputer ArbeitsComputer Computerarbeitcomputer ComputerArbeitcomputer ComputerArbeitscomputer Arbeitscomputerarbeits Computerarbeits-computer Arbeitsnehmer
این راهحل همچنان ایدهآل نیست و با یک الگوریتم بررسی کلمات مرکب الگومحور که با توکنسازی بافر ورودی یکپارچه شده است جایگزین خواهد شد.
رمزگذاری نویسههای یونیکد (Unicode character encoding)
هر دو غلطیاب Ispell و Myspell از رمزگذاری نویسهای ۸ بیتی استفاده میکنند که نقصی بزرگ در مقیاسپذیری به شمار میرود. اگرچه زبانی مانند مجاری دارای مجموعه نویسه استاندارد ۸ بیتی (ISO 8859-2) است، اما این مجموعه اجازه اجرای کامل قواعد املایی مجاری را نمیدهد. برای مثال نماد '--' (خط تیره کشیده یا n-dash) در این مجموعه نویسه وجود ندارد، با وجود اینکه نماد رسمی جداسازی جملات معترضه است و در کلمات مرکب نیز به عنوان خط تیره بزرگ به کار میرود.
برنامه MySpell جدولهای رمزگذاری ۸ بیتی دارد، اما زبانهایی نیز وجود دارند که استاندارد ۸ بیتی مشخصی ندارند، مانند زبانهای آفریقایی با نویسههای غیرلاتین یا لاتین گسترشیافته.
مشکلات ناشی از رمزگذاریهای ۸ بیتی مدتهاست که شناخته شده است. واضح است که فدا کردن بازدهی برای استقلال از رمزگذاری مزایای خود را در برنامههای واقعاً چندزبانه دارد. هانسپل مدیریت حافظه و زمان کارآمدی را برای یونیکد پیادهسازی میکند. با رمزگذاریهای غیر UTF-8، هانسپل با همان رشتههای اصلی ۸ بیتی کار میکند. با UTF-8، وندها و واژگان در UTF-8 ذخیره شده و بیشتر در UTF-8 تحلیل میشوند؛ برای بررسی شرط و پیشنهاد به UTF-16 تبدیل میگردند. تحلیل متنی و غلطیابی یونیکد سربار زمانی ناچیز (۰-۲۰٪) و سربار حافظه معقولی دارند که به زبان وابسته است.
تبدیل لغتنامههای aspell (Conversion of aspell dictionaries)
لغتنامههای Aspell را میتوان به سادگی به قالب هانسپل تبدیل کرد. مراحل تبدیل:
لغتنامه (xx.cwl -> xx.wl):
preunzip xx.cwl wc -l < xx.wl > xx.dic cat xx.wl >> xx.dic
پرونده وند
اگر پرونده وند موجود است آن را کپی کنید:
cp xx_affix.dat xx.affدر غیر این صورت آن را با کدگذاری مناسب ایجاد کنید (xx.dat را ببینید):
echo "SET ISO8859-x" > xx.affیا
echo "SET UTF-8" > xx.aff
مفید است که یک گزینه TRY اضافه کنید که نویسههای لغتنامه را به ترتیب فراوانی فهرست کند تا پیشنهادات فاصله ویرایشی هدایت شوند:
echo "TRY qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM" >>xx.aff
همچنین ببینید (SEE ALSO)
hunspell (1), ispell (1), ispell (4)
| 2026-04-30 |