LINK-PARSER(1) General Commands Manual LINK-PARSER(1)

link-parser - تجزیه جملات زبان طبیعی با استفاده از Link Grammar

link-parser --help
link-parser --version

link-parser [language|dict_location] [--quiet] [-<special_"!"_command>...]

link-parser یک واسط خط فرمانی برای کتابخانه تجزیه زبان طبیعی link-grammar است. این کتابخانه جملات نوشته‌شده به زبان‌های انگلیسی، روسی و سایر زبان‌ها را تجزیه کرده و درخت‌های پیوندی (linkage trees) تولید می‌کند که روابط میان فاعل، فعل و انواع صفت‌ها، قیدها و موارد دیگر را در جمله نشان می‌دهند.

link-parser

پوسته تعاملی تجزیه‌کننده را آغاز می‌کند. هر جمله‌ای را برای تجزیه وارد کنید:

linkparser> Reading a man page is informative.
Found 18 linkages (18 had no P.P. violations)
        Linkage 1, cost vector = (UNUSED=0 DIS= 0.00 LEN=16)
    +------------------------Xp------------------------+
    +--------------->WV-------------->+                |
    |         +----------Ss*g---------+                |
    |         +--------Os-------+     |                |
    |         |     +---Ds**x---+     |                |
    +--->Wd---+     +-PHc+---A--+     +---Pa---+       |
    |         |     |    |      |     |        |       |
LEFT-WALL reading.g a man.ij page.n is.v informative.a .
ابزار خط فرمانی link-parser برای کاوش کلی و استفاده کاربردی است،
هرچند فرض بر این است که توسعه‌دهندگان برای تجزیه مقادیر زیاد متن،
با استفاده از کتابخانه link-grammar یک برنامه سفارشی ایجاد خواهند کرد.
چندین برنامه از این دست در صفحه وب Link Grammar شرح داده شده‌اند
(بخش «همچنین ببینید» در زیر را ملاحظه کنید).
نظریه Link Grammar در مقالات دانشگاهی متعددی توضیح داده شده است.
در نخستینِ آن‌ها، دانیل سلیتر (Daniel Sleator) و دیوی تمپرلی (Davy Temperley)،
در «تجزیه زبان انگلیسی با دستور زبان پیوندی» (۱۹۹۱)، نویسندگان یک سامانه
دستور زبانی صوری جدید به نام «دستور زبان پیوندی» (link grammar) تعریف کردند.
دنباله‌ای از کلمات در زبان یک دستور زبان پیوندی قرار دارد اگر روشی برای برقراری
«پیوندها» بین کلمات وجود داشته باشد، به گونه‌ای که نیازمندی‌های محلی هر کلمه
برآورده شود، پیوندها با هم تقاطع نداشته باشند و کلمات یک گراف همبند و سازگار تشکیل دهند.
نویسندگان دستور زبان انگلیسی را در چنین سامانه‌ای پیاده‌سازی کردند و
link-parser را برای تجزیه زبان انگلیسی با استفاده از این گرامر نوشتند.
موتوری که تجزیه را انجام می‌دهد از واژه‌نامه‌های توصیف‌کننده زبان جدا است.
در حال حاضر، کامل‌ترین و توسعه‌یافته‌ترین واژه‌نامه‌ها برای زبان‌های انگلیسی
و روسی هستند، اگرچه واژه‌نامه‌های آزمایشی و ناقصی برای زبان آلمانی و هشت زبان
دیگر نیز وجود دارد.

link-parser هنگامی که به صورت دستی اجرا شود، یک شل تعاملی را آغاز کرده و کنترل ترمینال را در دست می‌گیرد. هر خطی که با یک علامت تعجب شروع شود، به عنوان یک «دستور ویژه» در نظر گرفته می‌شود؛ این دستورات در زیر شرح داده شده‌اند. دستور !help اطلاعات بیشتری ارائه می‌دهد؛ دستور !variables تمام دستورات ویژه را چاپ می‌کند. به این‌ها «متغیر» نیز گفته می‌شود، زیرا تقریباً تمام دستورات یک مقدار مرتبط با خود دارند: دستور معمولاً یک قابلیت را فعال یا غیرفعال می‌کند، یا تنظیمی چندمقداره را تغییر می‌دهد.

تمام ورودی‌های دیگر به عنوان یک تک‌جمله انگلیسی در نظر گرفته می‌شوند؛ جمله تجزیه شده و نتیجه تجزیه چاپ می‌شود. متغیرها تعیین می‌کنند چه چیزی چاپ شود: به‌طور پیش‌فرض، یک پیوندنگاشت گرافیکی اسکی (ASCII-graphics) چاپ می‌شود، هرچند خروجی PostScript نیز ممکن است. چاپ درخت سازه‌ها (constituent tree) نیز می‌تواند فعال شود. سایر کنترل‌های خروجی شامل چاپ منفصل‌ها (disjuncts) و داده‌های کامل پیوند است.

برای تحلیل جملات، link-parser به یک واژه‌نامه link-grammar وابسته است. این واژه‌نامه شامل فهرست‌هایی از کلمات و متاداده‌های مرتبط با ویژگی‌های گرامری آن‌ها است. به‌طور پیش‌فرض یک واژه‌نامه زبان انگلیسی ارائه شده است. در صورتی که واژه‌نامه‌های زبان‌های دیگر در مسیرهای جستجوی پیش‌فرض نصب شده باشند، می‌توان آن‌ها را صراحتاً با استفاده از یک کد زبان دورقمی ISO مشخص کرد؛ بنابراین، برای مثال:

link-parser de

شل تجزیه‌گر را با واژه‌نامه آلمانی راه‌اندازی می‌کند.

همچنین، مکان واژه‌نامه را می‌توان صراحتاً با یک مسیر فایل مطلق یا نسبی مشخص کرد؛ بنابراین، برای مثال:

link-parser /usr/share/link-grammar/en

ابزار link-parser را با استفاده از واژه‌نامه انگلیسی واقع در دایرکتوری نصب معمول اجرا می‌کند.

همچنین می‌توان از link-parser در حالت غیرتعاملی («حالت دسته‌ای» یا batch mode) از طریق گزینه -batch (یک دستور ویژه، زیر را ببینید) استفاده کرد؛ بنابراین، برای مثال:

cat thesis.txt | link-parser -batch

خطوط را از فایل thesis.txt خوانده و هر یک را به عنوان یک جمله کامل پردازش می‌کند. برای جملاتی که تجزیه کامل ندارند، عبارت زیر را
+++++ error N
(N یک عدد است) در خروجی استاندارد چاپ خواهد کرد.

همچنین، یک فایل ورودی را می‌توان با دستور ویژه !file filename که در ادامه شرح داده شده است، مشخص کرد.

توجه داشته باشید که استفاده از «حالت دسته‌ای» چاپ معمول پیوندهای گرافیکی اسکی را غیرفعال می‌کند. جملات ورودی نیز به‌طور پیش‌فرض در stdout ظاهر نمی‌شوند. این ویژگی‌ها را می‌توان از طریق دستورات ویژه دوباره فعال کرد؛ دستورات ویژه می‌توانند لابه‌لای ورودی قرار گیرند.

به جای مشخص کردن -batch در خط فرمان، می‌توان !batch را در فایل ورودی مذکور تعیین کرد.

برای جزئیات بیشتر، از !help batch در شل تعاملی link-parser استفاده کنید.

چاپ نحوه استفاده و خروج.
چاپ نسخه برنامه و جزئیات پیکربندی، و خروج.
جلوگیری از نمایش پیام‌های نسخه هنگام راه‌اندازی.

دستورات ویژه «!» را می‌توان به صورت گزینه‌های خط فرمان در خط فرمان مشخص کرد، یا درون خود شل تعاملی با قرار دادن پیشوند «!» در ابتدای خط به کار برد. نیازی به استفاده از نام کامل گزینه نیست؛ تنها وارد کردن تعداد حروفی که گزینه را یکتا سازد کافی است.

هنگام تعیین به عنوان یک گزینه خط فرمان، پیش از یک دستور ویژه به جای «!» از «-» استفاده می‌شود.

متغیرهای بولی (Boolean) را می‌توان به سادگی با وارد کردن !varname تغییر وضعیت داد (روشن/خاموش کرد)، برای مثال !batch. تنظیم سایر متغیرها نیازمند استفاده از علامت مساوی است: !varname=value، برای مثال !width=100.

دستور !help راهنمای کلی را چاپ می‌کند. هنگامی که از شل تعاملی صادر شود، می‌تواند یک آرگومان دریافت کند که معمولاً یک دستور ویژه است. دستور !variables تمام تنظیمات فعلی متغیرها را چاپ می‌کند. دستور !file ورودی را از فایل آرگومان خود می‌خواند. دستور !file یک متغیر نیست؛ نمی‌توان آن را مقداردهی کرد. می‌توان بارها از آن استفاده کرد.

دستور !exit به link-parser دستور خروج می‌دهد.

علامت تعجب «!» خود نیز به‌تنهایی یک دستور ویژه است که برای بررسی مدخل واژه‌نامه مربوط به هر کلمه مفروض (که اختیاری می‌تواند به یک زیرنویس ختم شود) به کار می‌رود. بنابراین هنگام انجام این کار از درون شل تعاملی، به دو علامت تعجب پیش از کلمه نیاز است. نویسه عمومی «*» را می‌توان به عنوان آخرین نویسه کلمه مشخص کرد تا چندین تطابق پیدا شود.

مقادیر پیش‌فرض دستورات ویژه زیر درون پرانتز نشان داده شده‌اند. بیشتر آن‌ها مقادیر پیش‌فرض کتابخانه link-grammar هستند.
مقادیر پیش‌فرض بولی به صورت on (۱) یا off (۰) نمایش داده می‌شوند.

!bad (off)
فعال‌سازی نمایش پیوندهای نامناسب.
!batch (off)
فعال‌سازی حالت دسته‌ای.
!constituents (0)
تولید خروجی سازه‌ها. مقدار آن می‌تواند چنین باشد:
0
غیرفعال
1
درخت سازه به سبک Treebank
2
درخت مسطح قلاب‌دار [A like [B this B] A]
3
درخت مسطح به سبک treebank با پرانتز (A like (B this))
!cost-max (2.7)
بیشترین هزینه (cost) برای در نظر گرفته شدن.
!dialect (no value)
استفاده از نام‌های مشخص‌شده (جداشده با کاما).
آن‌ها هزینه منفصل (disjunct cost) کلمات واژه‌نامه را که عبارت‌های آن‌ها شامل مشخصات هزینه نمادین است، تغییر می‌دهند.
!disjuncts (off)
نمایش منفصل‌های (disjuncts) استفاده‌شده.
!echo (off)
بازتاب جمله ورودی.
!graphics (on)
فعال‌سازی نمایش گرافیکی پیوندها. برای هر پیوند، جمله همراه با یک نمایش گرافیکی از پیوند آن در بالای آن چاپ می‌شود.
نشانه‌گذاری‌های زیر برای کلمات درون جمله به کار می‌روند:
[word]
کلمه‌ای بدون پیوند.
کلمه‌ای ناشناخته که دسته نقش دستوری (POS) آن به عنوان x توسط تجزیه‌گر شناسایی شده است.
کلمه‌ای ناشناخته که مدخل واژه‌نامه link-grammar آن توسط یک RegEx تخصیص یافته است. (برای مشاهده مدخل مذکور در واژه‌نامه از !morphology=1 استفاده کنید.)
یک کلمه ناشناخته در این موقعیت قرار داشته و با استفاده از حدس املایی، با این کلمه که در واژه‌نامه link-grammar یافت شده، جایگزین گردیده است..IP word[&] این کلمه بخشی از یک کلمهٔ ناشناخته است که مشخص شده از دو یا چند کلمهٔ موجود در لغت‌نامهٔ link-grammar تشکیل شده است.
این کلمه در لغت‌نامه به‌صورت word.POS یافت شد.
این کلمه احتمالاً یک غلط املایی است - به‌صورت کلمهٔ جایگزین CORRECTION پیوند خورد.

برای لغت‌نامه‌هایی که از ساخت‌واژه (صرف) پشتیبانی می‌کنند (فعال‌سازی با !morphology=1):

یک تکواژ پیشوندی
=word
یک تکواژ پسوندی
یک ریشه (ساقه)
!islands-ok (on)
استفاده از جزیره‌های پیوند-تهی (null-linked islands).
!limit (1000)
محدود کردن بیشینهٔ اتصالات پردازش‌شده.
!links (off)
فعال‌سازی نمایش کامل داده‌های پیوند.
!null (on)
مجاز دانستن پیوندهای تهی (null links).
!morphology (off)
نمایش ساخت‌واژه (صرف) کلمه. هنگامی که یک کلمه با یک عبارت منظم (RegEx) تطابق دارد، مدخلِ منطبق در لغت‌نامه نشان داده می‌شود.
!panic (on)
استفاده از «حالت اضطرار» (panic mode) در صورتی که یک تجزیه به سرعت پیدا نشود.
دستور !panic_variables متغیرهای ویژه‌ای را که فقط در «حالت اضطرار» استفاده می‌شوند چاپ می‌کند.
!postscript (off)
تولید خروجی postscript.
!short (16)
بیشینهٔ طول پیوندهای کوتاه.
!spell (7)
اگر صفر باشد، هیچ اصلاح املایی و اصلاح کلمات پیوسته‌نویسی‌شده (run-on) برای کلمات ناشناخته انجام نمی‌شود.
در غیر این صورت، تا این تعداد حدس املایی به ازای هر کلمهٔ ناشناخته استفاده می‌شود. در این حالت، تعداد تصحیحات پیوسته‌نویسی (تفکیک کلمه) برای کلمات ناشناخته محدود نیست.
!timeout (30)
لغو تجزیه پس از این تعداد ثانیه.
!use-sat (off)
استفاده از تجزیه‌گر بولی مبتنی بر SAT.
!verbosity (1)
سطح جزئیات در خروجی. برخی مقادیر کاربردی:
0
بدون اعلان (prompt)، حداقل پیام‌های کتابخانه
1
پُرگویی در سطح عادی
2
نمایش زمان مراحل تجزیه
3
نمایش برخی پیام‌های اطلاعاتی بیشتر
4
نمایش جستجوی فایل‌های داده و پیکربندی محلی (locale)
5-9
اشکال‌زدایی نشانه‌گذار (tokenizer) و تجزیه‌گر (parser)
10-19
اشکال‌زدایی لغت‌نامه
101
چاپ تمام رابط‌های لغت‌نامه، همراه با محدودیت طول آن‌ها
!walls (off)
نمایش کلمات دیواره (wall words).
!width (16381)(*)
عرض نمایشگر.
* هنگام نوشتن در ترمینال، این مقدار از عرض آن تنظیم می‌شود.
!wordgraph (0)
نمایش گراف کلمات (گراف تفکیک کلمه).
0
غیرفعال
1
نمایش پیش‌فرض
2
نمایش نشانه‌های والد به‌صورت زیرگراف‌ها
3
استفاده از پرچم‌های نمایشی خاص تنظیم‌شده توسط !test=wg:FLAGS

فایل‌های زیر به ازای هر زبان هستند، هنگامی که LL کد زبان ۲ حرفی ISO باشد.

لغت‌نامهٔ Link Grammar.
مقادیر موجودیت‌های مورد استفاده در نشانه‌گذاری (tokenization).
عبارات منظم (ببینید regex(7)) که برای مطابقت نشانه‌هایی که در لغت‌نامه یافت نشده‌اند استفاده می‌شوند.
تعاریف مؤلفه‌های لهجه.
تعاریف پس‌پردازش (Post-processing).
تعاریف تولید درخت سازه (constituent tree).
command-help-LL.txt or command-help-LL-CC.txt
متن راهنما برای دستور ویژهٔ «!» یعنی !help topic. اگر چندین فایل از این دست ارائه شده باشد، فایل مورد نظر می‌تواند مثلاً با متغیر محیطی LANGUAGE در صورتی که بر روی LL یا LL-CC تنظیم شده باشد، انتخاب شود (پیش‌فرض en است). در حال حاضر تنها command-help-en.txt ارائه شده است.
ترتیب جستجوی دایرکتوری برای این فایل‌ها عبارت است از:
• ./
• data/
• ../
• ../data/
•  یک دایرکتوری داده سفارشی، همان‌طور که توسط فراخوانی API با نام dictionary_set_data_dir() تنظیم می‌شود.
•  دایرکتوری داده‌های سیستم وابسته به نصب (*)

* این مکان هنگام ارائه آرگومان --version به link-parser در خط فرمان، به‌صورت DICTIONARY_DIR نمایش داده می‌شود. در ویندوز ممکن است نسبت به مکان DLL کتابخانهٔ link-grammar باشد؛ در این حالت وقتی link-parser با -verbosity=4 فراخوانی شود، مکان واقعی به‌صورت "System data directory" نمایش داده می‌شود..SH "همچنین ببینید (SEE ALSO)" از دستور link-generator می‌توان برای تولید جملات تصادفی از یک واژه‌نامهٔ مشخص استفاده کرد.

اطلاعات مربوط به API کتابخانهٔ اشتراکی link-grammar و انواع پیوندهای استفاده‌شده در تجزیه، در وبگاه Link Grammar در دسترس است.

مقاله‌های داوری‌شده‌ای که به توضیح Link Grammar می‌پردازند، در وبگاه اصلی CMU یافت می‌شوند.

کد منبع link-parser و کتابخانهٔ link-grammar در GitHub قرار دارد.

فهرست پستی برای گفت‌وگو پیرامون Link Grammar در گروه گوگل link-grammar در دسترس است.

برنامهٔ link-parser و کتابخانهٔ link-grammar توسط Daniel Sleator <sleator@cs.cmu.edu>،‏ Davy Temperley <dtemp@theory.esm.rochester.edu> و John Lafferty <lafferty@cs.cmu.edu> نوشته شده‌اند.

این صفحهٔ راهنما توسط Ken Bloom <kbloom@gmail.com> برای پروژهٔ Debian نوشته شده و توسط Linas Vepstas <linasvepstas@gmail.com> به‌روزرسانی گردیده است.

2021-03-30 Version 5.9.0