560 likes | 720 Views
دانشکده مهندسی گروه مهندسی کامپیوتر. Parsing (1). ارائه دهنده: مجید یاقوتی استاد: دکتر کاهانی درس: سیستمهای مبتنی بر دانش فروردین 92. Parsing (1). 1. فهرست. مقدمه استراتژیهای جستجو تجزیهی بالا به پایین تجزیهی پایین به بالا. Parsing (1). 2. فهرست. برنامهنویسی پویا
E N D
دانشکده مهندسی گروه مهندسی کامپیوتر Parsing(1) ارائه دهنده: مجید یاقوتی استاد: دکتر کاهانی درس: سیستمهای مبتنی بر دانش فروردین 92
Parsing (1) 1 فهرست • مقدمه • استراتژیهای جستجو • تجزیهی بالا به پایین • تجزیهی پایین به بالا
Parsing (1) 2 فهرست • برنامهنویسی پویا • الگوریتم CKY • الگوریتم Earley • نرمافزارهای موجود
Parsing (1) 3 مقدمه • Parsing یا تجزیهی یک جمله • ساختن یک درخت یا اشتقاق صحیح با داشتن گرامر • «صحیح»: صرفا به معنی سازگار بودن درخت با ورودی و گرامر • یک درخت با وجود صحیح بودن ممکن است درخت واقعی عبارت ورودی و گرامر داده شده نباشد. • برگهای درخت: اجزای جملهی ورودی
Parsing (1) 4 مقدمه • پارسر: الگوریتمی برای محاسبهی یک ساختاری برای رشتهی ورودی با توجه به گرامر • دو ویژگی همهی پارسرها • جهت: روند یا مراحل تولید ساختار • بالا به پایین یا پایین به بالا • استراتژی جستجو: روش پیمایش فضای جستجوی انواع مختلف تجزیهها • اول سطح یا اول عمق
Parsing (1) 5 مقدمه • فرضهای اولیه قبل از تجزیه • همهی کلمات را در یک بافر در اختیار داریم. • همهی کلمات شناخته شده هستند.
Parsing (1) 6 مقدمه • مثال: یک گرامر و دیکشنری لغات • درخت متناظر با عبارت «Book that flight»
Parsing (1) 7 تجزیهی بالا به پایین • از ریشهی درخت شروع به ساختن آن میکنیم. • حرکت به سمت برگهای درخت (کلمات) با استفاده از قوانین گرامر و عمل اشتقاق • هدف نهایی • پیدا کردن درختی که ریشه اش S باشد و رشتهی ورودی را تولید کند. • دارای سرعت کمتر نسبت به سایر روشها
Parsing (1) 8 تجزیهی بالا به پایین • نمونهای از یک تجزیهی بالا به پایین
Parsing (1) 9 تجزیهی بالا به پایین • نحوهی اشتقاق و رسیدن از ریشه به برگها • روش اول عمق: پیمایش یک شاخه از فضای جستجو در هر زمان • بازگشت به عقب در صورت بن بست • اول سطح: پیمایش موازی تمام شاخههای ممکن • محدودیت حافظه
Parsing (1) 10 تجزیهی بالا به پایین • مشکلات روش بالا به پایین • جستجو توسط ورودی هدایت نمیشود. • تولید درختهای صحیحی که رشتهی ورودی را تولید نمیکنند.
Parsing (1) 11 تجزیهی بالا به پایین • مشکلات روش بالا به پایین • ابهام سراسری و محلی • ابهام سراسری: چندین تجزیهی ساختاری به دلیل قوانین گرامری و یا لغوی • ابهام محلی: حتی اگر کل جمله بدون ابهام باشد، ممکن است زیر رشته هایی وجود داشته باشند که ابهام دارند. • «book» در جملهی «Book that flight» دو تفسیر متفاوت دارد (اسم و فعل). • ابهام محلی در زبانهای طبیعی بسیار معمول است.
Parsing (1) 12 تجزیهی بالا به پایین • مشکلات روش بالا به پایین • اثر ابهام ساختاری در گرامر و ابهام لغوی در کلمات • حرکت در مسیر اشتباه • تولید چند بارهی یک زیر درخت خاص • بازگشت به عقب شروع مجدد • پیچیدگی این بازگشت به عقب در بدترین حالت از مرتبهی نمایی است.
Parsing (1) 13 تجزیهی پایین به بالا • حرکت از کلمات رشتهی ورودی به سمت بالای درخت • با تطبیق دادن یک یا چند گره در لبهی بالایی درخت با سمت راست یک قانون از گرامر • افزودن سمت چپ آن قانون به درخت به عنوان والد آن گره یا گرهها • به کار گیری جستجوی اول عمق و اول سطح
Parsing (1) 14 تجزیهی پایین به بالا • نمونهای از تجزیهی پایین به بالا با رویکرد اول سطح
Parsing (1) 15 تجزیهی پایین به بالا • مزیت • سازگاری هر درخت ختم شده به Sبا رشتهی ورودی • مشکلات روش پایین به بالا • ابهام سراسری و محلی و در نتیجه محاسبات تکراری • تولید درخت هایی که از لحاظ ساختار کلی، بدون معنا هستند. • در فضاهای نامتناهی به مشکل بر خواهد خورد.
Parsing (1) 16 برنامهنویسی پویا • پارسر باید بتواند از آنالیز تکراری زیررشتهها اجتناب کند. • آنالیز هر زیررشته، به بقیهی فرآیند تجزیه وابسته نیست. • کشف این عدم وابستگیها با استفاده از برنامهنویسی پویا • برنامهنویسی پویا اساس همهی الگوریتمهای تجزیهی مبتنی بر چارت است.
Parsing (1) 17 برنامهنویسی پویا • در برنامهنویسی پویا • پر کردن یک جدول که حاوی راه حل بهینهی زیرمسئلههاست • ذخیرهی جوابهای بهینه تا در آینده مجبور به محاسبهی مجدد آنها نباشیم. • رسیدن به جواب مسئلهی کلی با ترکیب جوابهای زیرمسائل
Parsing (1) 18 برنامهنویسی پویا • در مسائل تجزیه، زیرمسئلهها آنالیز زیررشتهها هستند. • هر آنالیز • مربوط به یک ساختار (زیردرخت) کامل است که توسط محلهای شروع و پایان زیررشته مشخص شده است. • و یا یک فرض در مورد یک ساختار کامل که ممکن است پیدا شود.
Parsing (1) 19 برنامهنویسی پویا • در این روش • جستجوی زیردرختها به جای آنالیز دوبارهی آنها • کمک در مواجهه با ابهام • ذخیرهی تمام تجزیههای ممکن را در چارت • بازنمایی بصورت ماتریس یا گراف • سطرها و ستونهای ماتریس، نشان دهندهی محلهای شروع و پایان یک محدوده
Parsing (1) 20 برنامهنویسی پویا • هر خانه از ماتریس مربوط به زیررشته ای است که شروعش اندیس سطر و پایانش اندیس ستون آن خانه است. • حاوی اطلاعاتی دربارهی • نوع ساختار آن محدوده از زیررشته • اشاره گرهایی به زیرساختارهای آن • و یا پیشبینی هایی در مورد ساختارهایی که ممکن است در ادامهی زیررشته ظاهر شوند.
Parsing (1) 21 برنامهنویسی پویا • مثال: تجزیهی عبارت «See with a telescope in hand» با روش برنامهنویسی پویا و استفاده از ماتریس
Parsing (1) 22 برنامهنویسی پویا • در بازنمایی گرافی • رئوس گراف: نشان دهندهی محلهای شروع و پایان • یالهای گراف: مشخص کنندهی شروع و پایان یک محدوده از یک زیررشته • قرارگیری اطلاعات خانههای ماتریس در یالها
Parsing (1) 23 برنامهنویسی پویا • تجزیهی زیررشتهی «with a telescope» با روش برنامهنویسی پویا و استفاده از گراف
Parsing (1) 24 برنامهنویسی پویا • الگوریتمهایی برای تجزیهی مبتنی بر چارت: • الگوریتم CKY:فقط ساختارها را ذخیره میکند. • الگوریتم Earley:هم ساختارها و هم پیش شرطها را ذخیره میکند.
Parsing (1) 25 الگوریتم CKY • برای تشخیص ساختارها و ذخیرهی آنها در چارت طراحی شد. • طراحی اولیه برای فرم نرمال چامسکی (ABC; Aa) • توسط گری و هریسون تعمیم داده شد. • ساختار A را در خانهی i,j وارد میشود اگر یک قانون وجود داشته باشد که: • AB و B در خانهی i,j وجود داشته باشد و یا • ABCو B در خانهی i,k و C در خانهی k,j وجود داشته باشد.
Parsing (1) 26 الگوریتم CKY • الگوریتم CKY برای تجزیهی مبتنی بر چارت • این الگوریتم کامل و از مرتبهی O(n3) است.
Parsing (1) 27 الگوریتم CKY - مثال • گرامر
Parsing (1) 28 الگوریتم CKY - مثال • مراحل پر شدن جدول برای عبارت «the frogs ate fish»: Unary branching rules: detthe
Parsing (1) 29 الگوریتم CKY - مثال • مراحل پر شدن جدول برای عبارت «the frogs ate fish»: Unary branching rules: Nfrogs, NomN, NPNom Unary branching rules: tvate
Parsing (1) 30 الگوریتم CKY - مثال • مراحل پر شدن جدول برای عبارت «the frogs ate fish»: Unary branching rules: Nfrogs, NomN, NPNom, ivfish, vpiv Binary branching rules: NPDet Nom(0,1) & (1,2) (0,2)
Parsing (1) 31 الگوریتم CKY - مثال • مراحل پر شدن جدول برای عبارت «the frogs ate fish»: (1,2) & (2,3) × Binary branching rule: VPTV NP(2,3) & (3,4) (2,4)
Parsing (1) 32 الگوریتم CKY - مثال • مراحل پر شدن جدول برای عبارت «the frogs ate fish»: Binary branching rule: S NP VP(0,1) & (1,4) ×(0,2) & (2,4) (0,4)(0,3) & (3,4) × Binary branching rule: S NP VP(1,2) & (2,4) (1,4)(1,3) & (3,4) ×
Parsing (1) 33 الگوریتم CKY • محدودیتهای CKY • علت ذخیرهی اطلاعات هر خانه از ماتریس یا گراف را نگه نمیدارد. • اگر دو قانون به صورت VP V NPو VP VP PPداشته باشیم و رشتهی ورودی «The boy opened the box on the floor» باشد، نمیدانیم یال VP چه چیزی را تولید میکند؛ VP V NPو یا VP VP PP؟
Parsing (1) 34 الگوریتم CKY • با در نظر گرفتن قانون VP V NP
Parsing (1) 35 الگوریتم CKY • با در نظر گرفتن قانون VP VP PP
Parsing (1) 36 الگوریتم CKY • رفع این محدودیت • افزودن یک فیلد اضافه برای ذخیرهی نحوهی تولید هر خانه از جدول
Parsing (1) 37 الگوریتم CKY • محدودیتهای CKY • استفاده از روش پایین به بالا • ختم نشدن بسیاری از زیردرختهای تولید شده، به ریشه • رفع مشکل: • استفاده از روشهای فیلترینگ خاصی برای تشخیص این زیردرختها • استفاده از استراتژی بالا به پایین
Parsing (1) 38 الگوریتم Earley • مجبور نیستم فقط قوانین کامل شده را ذخیره کنیم. • ذخیرهی قوانین کامل نشده • ساختارهای ناقص: پیشبینیهایی از آنچه که در ادامه ظاهر خواهد شد. • بیان ساختارهای ناقص با استفاده از قوانین نقطهدار • نقطه، مشخص میکند که چه مقدار از سمت راست یک قانون تاکنون پیدا شده است و مابقی آن، یک پیشبینی از چیزی است که در ادامه ظاهر خواهد شد.
Parsing (1) 39 الگوریتم Earley - مثال • قانون VP V NP میتواند قوانین نقطهدار زیر را تولید کند: VP ● V NPیال ناقصVP V ● NPیال ناقصVP V NP ●یال کامل
Parsing (1) 40 الگوریتم Earley • ذخیرهی قوانین تولید برای ساختارهای کامل • از ابتدا تا انتهایش ظاهر شده است • ذخیرهی قوانین نقطهدار برای ساختارهای ناقص • بخشی از قانون (سمت چپ نقطه) ظاهر شده است و بخش دیگر آن (سمت راست نقطه) انتظار میرود که ظاهر شود.
Parsing (1) 41 الگوریتم Earley • مثال: برای زیررشتهی «…5 on 6 the 7 floor 8» عبارت NP Det ● N, [6,7]در چارت ذخیره میشود. • مشخص میکند کلمهی بین 6 و 7 یک Det است و پیشبینی میشود یک N در ادامه ظاهر شود. • اگر ظاهر شود، یک رشتهی NPرا در موقعیت 6 خواهیم داشت.
Parsing (1) 42 الگوریتم Earley • یک چارت با قوانین نقطهدار
Parsing (1) 43 الگوریتم Earley • اگوریتم Earley چارت را با یک بار عبور از روی ورودی پر میکند. • اندازهی چارت N+1 و N تعداد کلمات ورودی است. • چارت برای هر موقعیت کلمه در ورودی، لیستی از حالتها را نگه میدارد. • درختهای تجزیهی جزئی که تاکنون تولید شدهاند.
Parsing (1) 44 الگوریتم Earley • ورودیهای چارت سه نوع مختلف دارند: • ساختارهای کامل شده • ساختارهای در حال پردازش • ساختارهای پیشبینی شده
Parsing (1) 45 الگوریتم Earley • مثال • نمایش گرافی حالتها
Parsing (1) 46 الگوریتم Earley • روند تجزیه: • حرکت از حالت صفر تا N بر روی جدول • شروع از S و حرکت از بالا به پایین • تولید 3 نوع حالتی که در بالا بیان شد • تولید حالتهای پیشبینی شده بر اساس ورودیهای موجود در جدول • تولید حالتهای در حال پردازش جدید با توسعهی حالتهای موجود • تولید حالتهای کامل شدهی جدید زمانی که نقطه در یک حالت در حال پردازش به انتهای قانون میرسد.
Parsing (1) 47 الگوریتم Earley • بازگشت به عقبی وجود ندارد. • هیچ حالتی حذف نمیشود. • تجزیهی موفقیتآمیز • حالت S α ● [0,N]در آخرین ورودی چارت
Parsing (1) 48 الگوریتم Earley – شبه کد
Parsing (1) 49 الگوریتم Earley • الگوریتم Earley سه تابع اصلی دارد: • Predictor: پیشبینیها را به چارت اضافه میکند. • Completer: زمانی که ساختارهای جدید پیدا میشوند، نقطه را به سمت راست حرکت میدهد. • Scanner: کلمات ورودی را خوانده و حالتهایی که بیانکنندهی آن کلمات هستند را وارد چارت میکند.