3-1 ) مقدمه
Prolog يك موتور رابط با تسلسل پس رونده [1] دارد كه ميتواند تا حدودي بعنوان ابزار سيستم خبره استفاده شود. قواعد در prolog براي ارائهي دانش [2] استفاده ميشوند و موتور رابط[3] Prolog براي استنتاج [4] استفاده ميشود. ديگر اجزاي سيستم مثل رابط كاربر[5] بايد به زبان برنامهنويسي prolog كدبندي شوند. موتور رابط يك تسلسل پس روندهي ساده دارد هر قاعده يك هدف [6] چند زير هدف [7] دارد كه بعضي از آنها تأیيد ميشوند و بعضي ديگر رد ميشوند اما هيچ عدم اطمينان به نتيجهي استنتاج سيستم خبره وجود ندارد.
ساختار قواعد و استرانژي استنتاج براي بسياري از سيستمهاي خبره كافي و مناسب است تنها امكان مکالمه با كاربر بايد به سيستم اضافه شود تا يك سيستم خبره ی ساده ساخته شود. ما از اين خصوصيات ساده استفاده ميكنيم تا در اين بخش يك برنامهي ساده كه “Bird” ناميده ميشود را طراحي كنيم و به كمك آن نوع پرندگان را شناسايي كنيم.
3-2 ) سيستم شناسايي پرنده [8]
سيستمي كه نوع پرندگان را شناسايي ميكند براي تشريح يك سيستم خبره در prolog استفاده ميشود. قواعد سيستم بگونهاي طراحي شدهاند تا چگونگي ارائه انواع مختلف دانش را در مقايسه با عرضه داشتن اطلاعات دقيق را تشريح كنند.
3-3 ) فرمت قواعد [9]
همانطور كه ميدانيم قواعد سيستمهاي خبره معمولاً بصورت زير نوشته ميشوند.
If firs premise and second premise ... THEN conclusion
بخش IF با نام LHS[10] و بخش THEN با نام RHS[11] شناخته شدهاند. از لحاظ معنایی قواعد فوق در prolog به صورت زير نمايش داده ميشوند:
Conciusion:-
First premise
Second premise
……
توجه كنيد تا زمانيكه گرامر [12] در Prolog واقعاً بصورت IF , THEN است. ولی LHS , و RHS در سمتهاي كاملاً مخالف قرار ميگيرند، قضيه مقداري گيج كننده خواهد بود.
اساسيترين قواعد در سيستم، انواع مختلف پرندگان را مشخص ميكند. ما ميتوانيم ساختن سيستم را فوراً با چند قاعده شروع كنيم. با استفاده از فرمت عادي IF , THEN يك قاعده براي شناسايي نوع خاص از Albatross [13] شكل زير است:
IF family is albatross and colour is white
THEN bird is laysan – albatross
قاعده فوق در prolog بصورت زير نمايش داده ميشود:
bird (laysan – albatross):
Ramily (albatross),
Coloar (white).
قواعد زير بين دو نوع از Swan , Albatross [14] تميز قائل ميشوند آنها قسمت های شرطی برای گزاره ی "bird" هستند:
bird(laysan_albatross):-
family(albatross),
color(white).
bird(black_footed_albatross):-
family(albatross),
color(dark).
bird(whistling_swan) :-
family(swan),
voice(muffled_musical_whistle).
bird(trumpeter_swan) :-
family(swan),
voice(loud_trumpeting).
به منظور موفقيت اين قواعد براي تشخيص دو نوع پرنده نياز خواهيم داشت تا حقايق دربارهي يك پرندهي خاص براي شناسايي توسط سيستم را ذخيره كنيم. براي مثال اگر ما حقايق زير را به برنامه اضافه كنيم، داريم:
family (albatross)
colour (bark)
پرسش مقابل ميتواند براي شناسايي پرنده استفاده شود:
?- bird(X).
X = black_footed_albatross
توجه داشته باشيد كه در اين مرحلهي خيلي ابتدايي يك برنامهي كامل prolog وجود دارد كه به عنوان تابعي از سيستم خبره براي تميز دادن [15] بين اين چهار پرنده عمل ميكند.
رابط كاربر، رابط مفسر براي prolog است و اطلاعات ورودي بصورت مستقيم در برنامه ذخيره ميشوند.
3-5 ) قواعد براي ارتباط با سلسله مراتبي [16]
قدم بعدي در ساختن سيستم، ارائه رتبهبندي طبيعي سيستم طبقهبندي پرنده ميباشد. اين بايد شامل قواعدي براي شناسايي خانواده و دستهي پرنده باشد. در ادامهي كد مربوط به swan , Albatross گزارهها [17] براي دسته[18] ، خانواده [19] به صورت زير ميباشند:
order(tubenose) :-
nostrils(external_tubular),
live(at_sea),
bill(hooked).
order(waterfowl) :-
feet(webbed),
bill(flat).
family(albatross) :-
order(tubenose),
size(large),
wings(long_narrow).
family(swan) :-
order(waterfowl),
neck(long),
color(white),
flight(ponderous).
اكنون سيستم خبره ، albatross را با ملاحظات پايهاي بيشتري شناسايي خواهد كرد. در سيستم اوليه مستندات براي family بعنوان يك حقيقت ساده اجرا شده بودند. اكنون family به عنوان يك قاعده اجرا ميشود اكنون در اين سيستم حقايق ميتوانند اطلاعات پايهاي بيشتري را ارائه دهند :
nostrils(external_tubular).
live(at_sea).
bill(hooked).
size(large).
wings(long_narrow).
color(dark).
براي شناسايي پرنده داريم:
? – bird (x)
x= black – footed – albatross
تا كنون قواعد تنها خواص پرندگان را مختلف را بيان ميكردند و سيستم طبقهبندي مرتبهاي بود. اين نوع از سازماندهي ميتواند در زبانهاي متداولتري، بهمان خوبي كه در prolog يا ديگر زبانهاي برمبناي قواعد استفاده ميشوند بكار گرفته شوند. شكل زير ارتباط بين بعضي از قواعد را در سيستم شناسايي پرنده را نشان ميدهد.
[1] backward chaining
[2] knowledge representation
[3] interface engine
[4] inference
[5] user interface
[6] Goal
[7] sub – goal
[8] Bird identtification system
[9] Rule format
[10] Left Hand side
[11] Right Hand Side
[12] syntax
[13] نوعي مرغابي دريايي
[14] قو
[15] distinguish
[16] hierarchical relation
[17] predicates
[18] order
[19] family
در سری جدید مطالب خودم به طور کامل به چگوگی طراحی سیستم خبره با prolog رو آموزش میدم.
راستی اگه به وبلاگ من سر زدین یه پیامی بزارین تا دلگرم شم که وبلاگ من مفید هست!!
با تشکر از شما دوستان
صابر