نگاشت و ادغام هستان شناسی

تغییرات پروژه از تاریخ 1393/10/13 تا تاریخ 1393/11/14
یکی از بزرگترین اهداف شاخه پردازش زبان طبیعی در هوش مصنوعی، تبدیل متن غیر ساخت‌یافته زبان طبیعی با دانش ساخت‌یافته و ماشین فهم می‌باشد. این هدف ذیل مسائل مختلفی در یادگیری ماشین و پردازش زبان طبیعی از قبیل استخراج اطلاعات، مطالعه ماشینی و ... بیان شده است.
یکی از اشکال مرسوم دانش قابل فهم پردازش توسط ماشین هستان شناسی می‌باشد. هستان‌شناسی مدلی انتزاعی از جهان واقع است که مفاهیم و روابط بین آن‌ها را در حوزه موضوعی مورد بحث نمایش می‌دهد.



در این پروژه قصد داریم روش‌های مختلف ادغام و نگاشت هستان‌شناسی ها را بررسی نموده و یکی از آن‌ها را پیاده‌سازی کنیم.






# مقدمه
هستان شناسی در اصل یک مفهوم فلسفی بود که طبیعت مفاهیم را توصیف می‌کرد. [2]امروزه هستان شناسی به عنوان یک مشخصه صریح صوری از ادراک مشترک تعریف می‌شود که یک درک مشترک از یک حوزه که می تواند در میان انسان‌ها و سیستم‌های کاربردی ارتباط ایجاد کند را فراهم می‌آورد. [1]
اجزای هستان شناسی، مفاهیم[^concept]، روابط [^relation]، نمونه‌ها [^instance] و بدیهیات [^axiom] است. یک مفهوم، یک مجموعه یا کلاس از موجودیت‌ها در یک زمینه را نمایش می دهند. روابط، ارتباط متقابل مفاهیم یا ویژگی‌ها یک مفهوم را نمایش می‌دهند که به دو دسته رده بندی و انجمنی تقسیم می‌شود. نمونه‌ها چیزهایی هستند که توسط مفاهیم نمایش داده می‌شوند. هستان شناسی به تنهایی دارای نمونه نیست بلکه هستان شناسی به همراه نمونه‌ها یک پایگاه دانش را تولید می‌کند. بدیهیات مقادیر اجباری برای کلاس‌ها یا نمونه‌ها هستند و معمولاً شامل قوانین کلی هستند، مثلاً یک دوره آموزشی حتماً یک مدرس دارد. [3]
بخاطراینکه هیچ معیار مشترکی برای ساخت هستان شناسی وجود ندارد، هستان‌شناسی‌های ناهمگن مختلفی در یک حوزه مشابه ساخته شده است. [2]
هستان شناسی ها دارای دو نوع ناهمگنی هستند: ناهمگنی metadata و ناهمگنی نمونه. موجودیت‌ها (مفهوم، رابطه یا نمونه)ممکن است با معنای یکسان در هستان‌شناسی‌های مختلف برچسب اسم متفاوت داشته باشند و برچسب اسم یکسان ممکن است برای دو موجودیت با معانی متفاوت در دو هستان شناسی به کار رفته باشد؛ نمونه‌ها در هستان شناسی های مختلف دارای نمایش‌های مختلف هستند و هستان شناسی‌های مختلف ممکن است دارای ساختار رده بندی متفاوت باشند. [3]
وب معنایی [^Semantic web] امکان به اشتراک گذاری مطالب مرتبط به یک زمینه خاص را فراهم آورده است. هدف اصلی آن گسترش تکنیک‌های بازیابی اطلاعات به صورت هوشمند است. در تکنیک‌های وب معنایی RDF  [^ Resource Description Framework] برای بازگرداندن داده غیرساختیافته به داده ساختیافته مورد استفاده قرار می‌گیرد . ‌شناسی[^ontology] در اصل یک مفهوم فلسفی بود که طبیعت مفاهیم را توصیف می‌کرد. [2]امروزه هستان شناسی به عنوان یک مشخصه صریح صوری از ادراک مشترک تعریف می‌شود که یک درک مشترک از یک حوزه که می تواند در میان انسان‌ها و سیستم‌های کاربردی ارتباط ایجاد کند را فراهم می‌آورد. [1]
اجزای هستان شناسی، مفاهیم[^concept]، روابط [^relation]، نمونه‌ها [^instance] و بدیهیات [^axiom] است. یک مفهوم، یک مجموعه یا کلاس از موجودیت‌ها در یک زمینه را نمایش می دهند. روابط، ارتباط متقابل مفاهیم یا ویژگی‌ها یک مفهوم را نمایش می‌دهند که به دو دسته رده بندی و انجمنی تقسیم می‌شود. نمونه‌ها چیزهایی هستند که توسط مفاهیم نمایش داده می‌شوند. هستان شناسی به تنهایی دارای نمونه نیست بلکه هستان شناسی به همراه نمونه‌ها یک پایگاه دانش را تولید می‌کند. بدیهیات مقادیر اجباری برای کلاس‌ها یا نمونه‌ها هستند و معمولاً شامل قوانین کلی هستند، مثلاً یک دوره آموزشی حتماً یک مدرس دارد. [3]یک مثال می‌تواند این باشد که مفاهیم "human"، "male" و "female" را تعریف کنیم و بین آنها رابطه "is a" را می‌گذاریم. نمونه‌ها در این مثال می‌توانند دو نفر به نام‌های زهرا و علی باشند. بدیهیات برای "human" هم این در نظر می‌گیریم که یک سر، یک قلب و یک مغز دارد. این بدیهیات به مفاهیم " male " و " female " به ارث می‌رسد.
![مثال](https://boute.s3.amazonaws.com/113-1111.jpg)
یک نمونه پرکاربرد از هستان‌شناسی، وردنت[^wordNet] است. وردنت یک پایگاه داده بزرگ از کلمات یک زبان است که  اسم‌ها، افعال، صفات و قیود را در گروه‌های هم معنا که یک معنای مشترک را می‌رسانند، قرار می‌گیرند.فارس نت (وردنت عمومی زبان فارسی) پایگاه دانشی است که حاوی اطلاعات درمورد واژه‌ها و ترکیبات زبان (مفاهیم)، اطلاعات نحوی آنها و روابط معنایی میان آنها است.[10] برای زبان‌های مختلف از جمله عربی، فارسی، انگلیسی و... وردنت تهیه شده است و قابل دسترس است.

بخاطراینکه هیچ معیار مشترکی برای ساخت هستان شناسی وجود ندارد، هستان‌شناسی‌های ناهمگن مختلفی در یک حوزه مشابه ساخته شده است. [2]
هستان شناسی ها دارای دو نوع ناهمگنی هستند: ناهمگنی metadata و ناهمگنی نمونه. موجودیت‌ها (مفهوم، رابطه یا نمونه)ممکن است با معنای یکسان در هستان‌شناسی‌های مختلف برچسب اسم متفاوت داشته باشند و برچسب اسم یکسان ممکن است برای دو موجودیت با معانی متفاوت در دو هستان شناسی به کار رفته باشد؛ نمونه‌ها در هستان شناسی های مختلف دارای نمایش‌های مختلف هستند و هستان شناسی‌های مختلف ممکن است دارای ساختار رده بندی متفاوت باشند. [3]
وب معنایی [^Semantic web] امکان به اشتراک گذاری مطالب مرتبط به یک زمینه خاص را فراهم آورده است. هدف اصلی آن گسترش تکنیک‌های بازیابی اطلاعات به صورت هوشمند است. در تکنیک‌های وب معنایی RDF  [^ Resource Description Framework] برای بازگرداندن داده غیرساختیافته به داده ساختیافته مورد استفاده قرار می‌گیرد . RDF یا چارچوب توصیف منابع نوعی مدل داده‌ای است که برای ذخیره و بازیابی معنای قابل پردازش توسط ماشین بکار می‌رود. معنا نسبت به اطلاعات در سطح انتزاعی بالاتری قرار می‌گیرد و هدف از RDF امکان پذیر کردن تفکر ماشینی‌ست. RDF/XMLنمایش مدل داده‌ای RDF به زبان XML می‌باشد. محتوای معناییِ ذخیره شده در یک فایل RDF، بوسیله‌ی زبان اسپارکل قابل بازیابیست.[8]
هستان شناسی نقش مهمی در استخراج دانش ایفا می‌کند. در سال‌های گذشته استفاده از هستان شناسی در سیستم‌های بازیابی اطلاعات در زمینه‌های تحقیقاتی مختلف مانند بازیابی اطلاعات مرتبط [^Relevant Information Retrieval]، تکنولوژی‌های وب، پردازش زبان طبیعی[^Natural Language Processing]، سیستم‌های مدیریت اطلاعات و غیره گسترش یافته است.[5]
شبکه معنایی از چارچوب چندلایه‌ای استفاده می کند و هستان شناسی در سطحی که از توصیف اسنادی به استنتاج دانش ارتباط ایجاد شده، قرار دارد، پس ساختار هستان شناسی کلید شناسایی وب معنایی است.هستان شناسی برای توصیف مفاهیم و ارتباط بین آنها در یک زمینه یا حتی طیف وسیع‌تری که این مفاهیم و ارتباطات تنها یک تعریف در حیطه مشترک دارند، استفاده می‌شود، بنابراین انسان و ماشین می‌تواند بین آنها ارتباط برقرار کند [4]. امروزه ما می‌توانیم تعداد روزافزونی هستان شناسی داشته باشیم و ساختار هستان شناسی ها متفاوت باشد و از متدهای مختلفی استفاده کنند. به این منظور که هستان شناسی هایی که توسط خبره‌های [^expert] متفاوت ساخته شده‌اند، برای هم قابل فهم باشد، نگاشت هستان شناسی [^ontology mapping] شکل گرفت. نگاشت هستان شناسی برای استفاده مجدد از هستان شناسی موجود، و توسعه و ترکیب آنها با یک متد خاص است که هستان شناسی‌های مختلف را برای دستیابی به یک پیکره اطلاعات و پایگاه دانش بزرگتر مخلوط می‌کند. [2]
در سال‌های اخیر نگاشت و ادغام هستان شناسی‌ها یک مسئله پیچیده برای محققین شده است و مسایل و نکات زیادی در این رابطه مطرح شده است. نگاشت و ادغام هستان شناسی یک رویه برای ساخت یک انباره مشترک با یک پایگاه دانش از دو یا چند هستان شناسی است. هدف اصلی ادغام هستان شناسی، حذف ناسازگاری‌ها است و ممکن است منجر به از دست رفتن برخی اطلاعات ارزشمند شود.
ایده پشتیبان ادغام هستان شناسی برای تولید یک هستان شناسی جدید، تقسیم هستان شناسی به کلاس‌ها یا مفاهیم و پیدا کردن روابط ممکن بین مفاهیم و کلاس‌ها است. دو هستان شناسی مختلف برای یک زمینه، روی هم افتادگی‌های زیادی دارد. 
ادغام هستان شناسی، هستان شناسی‌های مختلف را که متعلق به یک موضوع مشابه هستند را ترکیب می‌کند و یک هستان شناسی جدید تولید می‌کند. [5]
نگاشت هستان شناسی یک روش کارآمد برای شناخت ارتباط بین عملکرد هستان‌شناسی های ناهمگن است.نکته مهم در نگاشت هستان شناسی، محاسبه میزان مشابهت [^similarity]میان مفاهیم است. [2]
تفاوت عمده روش‌های مختلف موجود در ادغام و نگاشت هستان شناسی عموماً در روش و تکنیک‌های به کار رفته برای محاسبه مشابهت است. ما در این پژوهش به دنبال مطالعه روش‌های مختلف در نگاشت هستان‌شناسی هستیم.

در  شکل زیر دو نمونه از هستان‌شناسی‌های متفاوت برای یک زمینه خاص (در مورد airline reservation ) را نمایش می‌دهیم  که مشاهده می‌شود این دو هستان شناسی با هم تفاوت دارند.[6]
![هستان شناسی 1](http://upir.ir/aban93/11_107bd.jpg)
![هستان شناسی 2](http://upir.ir/aban93/12_dc478.jpg)



# کارهای مرتبط
در این بخش به مطالعه و بازنگری مقالاتی می‌پردازیم که به مقوله ادغام و نگاشت هستان شناسی پرداخته‌اند.
 در مقاله[5] با تکیه بر تحلیل معنایی روی هستان شناسی مشابه در یک زمینه خاص عمل ادغام انجام می‌پذیرد.این الگوریتم به صورت کاملاً اتوماتیک است که از معنای کلاس‌ها و خصوصیات [^property] با استفاده از[8] Wordnet بهره می‌برد. رویکرد مورد نظر در این مقاله، الگوریتم ادغام هستان شناسی معنایی [^ Semantic Ontology Mapping = SOM] است که یک الگوریتم ادغام و نگاشت خودکار هستان شناسی است و هستان شناسی را به دو بخش تقسیم می‌کند ابتدا کلاس‌ها را ادغام می‌کند و سپس ویژگی‌های دو هستان شناسی را ادغام می‌کند. الگوریتم‌های ادغام هستان شناسی در یک زمینه خاص، سعی می‌کنند معنای مشابه بین دو هستان شناسی مختلف را پیدا کنند تا یک هستان شناسی منسجم ایجاد کنند.ادغام معنایی هستان شناسی این مراحل را طی می‌کنند: اول، دو هستان شناسی روی یک زمینه مشترک را بارگذاری می‌کنند سپس پیش پردازش را با استفاده از ریشه یابی [^stemming] اجرا می‌کنند، گام بعدی، تحلیل معنایی با استفاده از Wordnet  است که در آن، مترادف کلاس‌ها در هستان شناسی های مختلف پیدا می‌شود. [5]
در مقاله[2] یک متد برای نگاشت هستان شناسی با چند استراتژی [^multi strategy mapping] معرفی شده است. شباهت مفاهیم از روی جنبه‌های اسم ، ویژگی و ارتباط مفهوم محاسبه می‌شود. شبیه سازی نشان می‌دهد این رویکرد ، یک الگوریتم کارامد است. چارچوب نگاشت هستان شناسی چند استراتژی، چند ماژول دارد: 1- یک هستان شناسی کاربردی: که شامل هستان شناسی سطح بالای موجود است که برخی مترادف کلمات را در خود دارد. 2- لایه مرجع: شامل جدول تطابق انواع داده و اطلاعات مرتبط با آنها است. جدول تطابق انواع داده یک درجه نگاشت بین همه انواع را توصیف می‌کند.اگر دو نوع داده مشابه هستند دیگر نیاز نیست جدول را چک کنیم. اگر دو نوع داده متفاوتند، باید در جدول جستجو شود. درجه مشابهت بین انواع مختلف داده بین صفر تا یک است. 3- لغات مشترک دامنه: یک اصطلاح واژگانی عمومی در ناحیه مشترک است که براساس Wordnet رده بندی می‌شود. هر خط در جدول برای یک مفهوم، مترادف و نزدیک مترادف است. هنگام محاسبه مشابهت مفاهیم، با واژگان به عنوان مرجع، تنها مشابهت میان مترادف و نزدیک مترادف‌ها محاسبه می‌شود که براساس سیستم Wordnet تعریف می‌شوند. 4- هستان شناسی محلی: توسط کاربران مختلف متناسب با نیازشان ساخته شده است. [2]
در مقاله [9] رویکرد نگاشت هستان شناسی ها مبتنی بر گرامر ساختار درخت بررسی شده است. از آنجاییکه هستان شناسی به صورت سلسله مراتبی طراحی شده است، ما به سادگی می‌توانیم با یک ساختار سلسله مراتبی درختی آن را نمایش بدهیم. جالب است که این رویکرد هم مشابهت ساختار داخلی مفاهیم در هستان شناسی های متفاوت را ترکیب می‌کند و هم مشابهت زبانی مفاهیم  را. در این راستا، روابط قویتری بین مفاهیم می‌توان یافت و اعتبار محاسبات تشابه افزایش می‌یابد. در این روش که مبتنی بر ساختار مفاهیم است، درباره سلسله مراتب مفاهیم مانند روابط آنها و معنای همسایگی هنگام عمل نگاشت مطالعه شده است.  [9]
در مقاله[3] نگاشت هستان شناسی به عنوان یک مسئله تصمیم گیری درنظر گرفته شده است. تصمیم گیری با کمترین ریسک باید صورت بگیرد و رویکرد Risk Minimization based Ontology Mapping  [^RiMOM] مورد نظر است که به صورت اتوماتیک پردازش کشف روی نگاشت‌های 1:1، 1:n ، null:1 و  1:null را انجام می‌دهد. استفاده از قانون بیز با همان فرمول‌های رایج برای محاسبه ریسک و احتمالات شرطی در نظر گرفته شده است. Xیک نمونه است که احتمال تعلق آن به یک کلاس مانند Y را به صورت P(X|Y) تعریف میکنیم. در این متد نگاشت، p(ei2|ei1) را به این صورت حساب میکنیم که چقدر احتمال دارد که یک نمونه از هستان شناسی اول با یک نمونه از هستان شناسی دوم نگاشت شود. با محاسبه این احتمالات و محاسبه ریسک تصمیم گیری صورت می‌گیرد. نتایج آزمایش‌ها حاکی از این بودند که روش مورد نظر نتایج بهتری را نسبت به روش های پایه برای کشف نگاشت عمل می‌کند. [3]

#شرح پیاده سازی

در فاز سوم این پروژه، برنامه‌ای پیاده سازی شده است که بتواند دو هستان شناسی را به عنوان ورودی بگیرد و آنها را ادغام کرده و در یک آنتولوژی جدید به عنوان خروجی تحویل دهد. این برنامه به زبان جاوا پیاده سازی شده است و در آن از پروژه متن باز [^open source] به نام Inria کمک گرفته شده است. از این رو، کدهای پیاده‌سازی این پروژه نیز متن باز بوده و استفاده از آن آزاد است تا حق کپی رایت رعایت شود.

 هنگام اجرای این برنامه لازم است که به اینترنت وصل باشید، زیرا از یک Alignment serverآنلاین استفاده شده است. مزیت استفاده از این سرور این است که هم زبان انگلیسی و هم زبان فرانسوی را پشتیبانی می‌کند. برای اطلاع از نحوه عملکرد این سرور می‌توانید به این لینک [http://alignapi.gforge.inria.fr/rest.html] مراجعه بفرمایید.

این پیاده سازی فاقد محیط گرافیکی است و با کنسول کار می‌کند. لازم است که محل ذخیره دو فایل آنتولوژی که با فرمت owl هستند را در کد قرار دهید و سپس برنامه را اجرا نمایید. در گام اول، به صورت محلی دو هستان‌شناسی با هم match شده و سپس باهم merge می‌شوند و در فایل خروجی به فرمتowl ذخیره می‌شود. محل فایل ذخیره شده در کنسول نمایش داده می‌شود.
در تصویر زیر نمایی از خروجی برنامه را مشاهده می‌نمایید.

![نمایی از خروجی برنامه](http://upir.ir/93dey/run.jpg)

# آزمایش‌ها

برای مشاهده و مقایسه خروجی برنامه پیاده سازی شده، لازم بود تا دو هستان شناسی را به عنوان نمونه  مورد تست قرار گیرند. از این رو ابزار دیگری برای ادغام هستان شناسی که در دسترس باشد، نیاز داشتیم. 
نرم افزار متن باز protegeé نیز امکان ادغام دو هستان شناسی را فراهم آورده است. برای آشنایی بیشتر و دانلود این نرم افزار به لینک [http://protege.stanford.edu/] مراجعه نمایید. نحوه کار در آن به این صورت است که در ابتدا دو فایل آنتولوژی موردنظر را در محیط باز کرده و سپس از مسیر "Refactor > Merge Ontologies"می‌توان خروجی را به صورت یک فایل آنتولوژی جدید حاصل از ادغام دو آنتولوژی اولیه ذخیره کرد. 
 
 برای آزمایش دو آنتولوژی، یکی به زبان فرانسوی و دیگری به زبان انگلیسی را به دو طریق با هم ادغام کردیم و نتیجه را در شکل زیر مشاهده می‌نمایید. 
 در دو تصویر زیر، نمای درختی از دو هستان شناسی که برای تست درنظر گرفتیم در محیط گرافیکی protegeé  را ملاحظه می‌کنید.
 ![هستان شناسی 1](http://upir.ir/93dey/ont1.jpg)
 ![هستان شناسی 2](http://upir.ir/93dey/ont2.jpg)
 در تصویر زیر نتیجه ادغام دو هستان شناسی با ابزار ادغام در protegeé  را ملاحظه می‌نمایید.
 ![پروتژ](http://upir.ir/93dey/protege-result.jpg)
 در این تصویر نیز خروجی کد پیاده سازی شده را می‌بینید که در محیط گرافیکی به نمایش درآمده است.
 
 ![خروجی کد](http://upir.ir/93dey/MyApp_7ea4e.jpg)
همانطور که مشاهده می‌نمایید خروجی کد پیاده سازی شده نسبت به خروجی محیط  protege قابل فهم‌تر است و ادغام منطقی‌تر صورت گرفته است و توانسته  بین انگلیسی و فرانسوی، مفاهیم مشابه را پیدا کند.
در آخر برای دسترسی به کد جاوای این برنامه به همراه دو فایل هستان شناسی که مورد تست قرار گرفته است، می‌توانید به این لینک [https://github.com/fahiiim3/ontology-merging] مراجعه نمایید.

# کارهای آیندهدر سال 2006، Sheng و همکاران در مقاله  [9] رویکرد نگاشت هستان شناسی ها مبتنی بر گرامر ساختار درخت بررسی شده است. از آنجاییکه هستان شناسی به صورت سلسله مراتبی طراحی شده است، ما به سادگی می‌توانیم با یک ساختار سلسله مراتبی درختی آن را نمایش بدهیم. جالب است که این رویکرد هم مشابهت ساختار داخلی مفاهیم در هستان شناسی های متفاوت را ترکیب می‌کند و هم مشابهت زبانی مفاهیم  را. در این راستا، روابط قویتری بین مفاهیم می‌توان یافت و اعتبار محاسبات تشابه افزایش می‌یابد. در این روش که مبتنی بر ساختار مفاهیم است، درباره سلسله مراتب مفاهیم مانند روابط آنها و معنای همسایگی هنگام عمل نگاشت مطالعه شده است.  [9] 
در مقاله[3] در سال 2006، نگاشت هستان شناسی به عنوان یک مسئله تصمیم گیری درنظر گرفته شده است. تصمیم گیری با کمترین ریسک باید صورت بگیرد و رویکرد Risk Minimization based Ontology Mapping  [^RiMOM] مورد نظر است که به صورت اتوماتیک پردازش کشف روی نگاشت‌های 1:1، 1:n ، null:1 و  1:null را انجام می‌دهد. استفاده از قانون بیز با همان فرمول‌های رایج برای محاسبه ریسک و احتمالات شرطی در نظر گرفته شده است. Xیک نمونه است که احتمال تعلق آن به یک کلاس مانند Y را به صورت P(X|Y) تعریف میکنیم. در این متد نگاشت، p(ei2|ei1) را به این صورت حساب میکنیم که چقدر احتمال دارد که یک نمونه از هستان شناسی اول با یک نمونه از هستان شناسی دوم نگاشت شود. با محاسبه این احتمالات و محاسبه ریسک تصمیم گیری صورت می‌گیرد. نتایج آزمایش‌ها حاکی از این بودند که روش مورد نظر نتایج بهتری را نسبت به روش های پایه برای کشف نگاشت عمل می‌کند. [3] 
در مقاله[2] در سال 2011، یک متد برای نگاشت هستان شناسی با چند استراتژی [^multi strategy mapping] معرفی شده است. شباهت مفاهیم[^concepts] از روی جنبه‌های اسم [^name]، ویژگی[^attribute] و ارتباط مفهوم محاسبه می‌شود. شبیه سازی نشان می‌دهد این رویکرد ، یک الگوریتم کارامد است. . مزیت این متد این است که مجموعه کاندیدها و Information gain را در محاسبه مشابهت به کار می‌برد تا دقت را افزایش دهد.
وقتی Sim(e,f)=0 یعنی دو مفهوم (اسم ، ویژگی یا ارتباط) از هم مستقل هستند و هیچ مشابهتی ندارند و برعکس اگر Sim(e,f)=1 باشد یعنی این دو مفهوم کاملاً مشابه هستند.
در شکل زیر، رویه محاسبه مشابهت نمایش داده شده است. این رویه به این صورت است که از بین مجموعه کاندیدها به ترتیب میزان مشابهت اسم ، ویژگی و ارتباط بین دو مفهوم محاسبه می‌شود و سپس براساس وزن‌هایی که تولید می‌شود ادغام دو هستان‌شناسی انجام می‌شود. در محاسبه میزان مشابهت ویژگی‌های مفاهیم، به این دلیل که از Information gain استفاده شده، محاسبه میزان مشابهت دو مفهوم در این روش با دقت بالاتر و آسان‌تر انجام می‌شود.[2]
![روش چند استراتژی](https://boute.s3.amazonaws.com/113-6070.jpg)

 سال 2014 ، Vidyarthi و همکاران در مقاله[5] با تکیه بر تحلیل معنایی روی هستان‌شناسی مشابه در یک زمینه خاص عمل ادغام را انجام دادند. این الگوریتم به صورت کاملاً اتوماتیک است که از معنای کلاس‌ها و خصوصیات [^property] با استفاده از[8] Wordnet بهره می‌برد. رویکرد مورد نظر در این مقاله، الگوریتم ادغام هستان شناسی معنایی [^ Semantic Ontology Mapping = SOM] است که یک الگوریتم ادغام و نگاشت خودکار هستان شناسی است و هستان شناسی را به دو بخش تقسیم می‌کند ابتدا کلاس‌ها را ادغام می‌کند و سپس ویژگی‌های دو هستان شناسی را ادغام می‌کند. الگوریتم‌های ادغام هستان شناسی در یک زمینه خاص، سعی می‌کنند معنای مشابه بین دو هستان شناسی مختلف را پیدا کنند تا یک هستان شناسی منسجم ایجاد کنند.ادغام معنایی هستان شناسی این مراحل را طی می‌کنند: اول، دو هستان شناسی روی یک زمینه مشترک را بارگذاری می‌کنند سپس پیش پردازش را با استفاده از ریشه یابی [^stemming] اجرا می‌کنند، گام بعدی، تحلیل معنایی با استفاده از Wordnet  است که در آن، مترادف کلاس‌ها در هستان‌شناسی‌های مختلف پیدا می‌شود. [5]

#ontology alignment
تلفیق هستان‌شناسی‌ها نیازمند پیدا کردن ارتباط بین موجودیت‌های[^entities] هستان‌شناسی‌هاست. Alignment مجموعه‌ای از ارتباطات بین موجودیت‌ها در دو هستان‌شناسی را نمایش می‌دهد. مزایای استفاده از Alignment عبارتند از : 
 از منظر وب معنایی، به منظور یافتن پویا و استفاده مجدد از ارتباطات موجود؛ 
 از منظر مهندسی نرم افزار، Alignment می‌تواند از یک برنامه به برنامه دیگری منتقل شود؛ 
 از منظر مدیریت و مهندسی  هستان‌شناسی، Alignmentها می‌توانند در طول دوره حیات هستان‌شناسی با یکدیگر رشد کنند.[11]

# The Alignment API
 کلاس‌های اصلی این API به شرح زیر است:  
شبکه هستان‌شناسی [^OntologyNetwork]: یک بسته شامل مجموعه‌ای از هستان‌شناسی‌ها و یک مجموعه از هم‌ترازی‌ها است. که باعث می‌شود بازیابی همترازی‌های مربوط به یک هستان‌شناسی وقتی در شبکه دستخوش تغییر می‌شود، آسان شود.
هم‌ترازی [^Alignment]: کلاس اصلی است که مجموعه‌ای از سلول‌ها و متادیتا درباره هم‌ترازی‌ها است مانند هستان‌شناسی‌های ترازبندی شده، منشأ متادیتا و هر متادیتایی که می‌تواند به یک هم‌ترازی مربوط باشد.
سلول [^Cell]: یک ارتباط را نمایش می‌دهد، که دو موجودیت را در یک رابطه قرار می‌دهد. موجودیت می‌تواند هر جزء مشخصه از یک هستان‌شناسی باشد. همچنین سلول هر نوع از متادیتای اضافه شده را می‌پذیرد.
رابطه : یک ارتباط بین دو موجودیت را نشان می‌دهد. این کلاس‌ها دسترسی به اطلاعات درون نمونه‌ها را فراهم می‌کند. همچنین متدهای محلی برای دستکاری کردن این اطلاعات وجود دارد مانند اضافه کردن ارتباط به هم‌ترازی، قطع ارتباط با توجه به آستانه اطمینان و...
پردازش هم‌ترازی [^AlignmentProcess]: یک واسط برای همه تطابق‌گرهاست. تطابق دو هستان‌شناسی با گام‌های زیر به دست می‌آید: ساخت یک نمونه از یک همترازی پس از اجرای AlignmentProcess و مقداردهی اولیه آن با دو نمونه از هستان‌شناسی، سپس فراخوانی متد align. این متد دو جزء را می‌گیرد: یک همترازی اولیه که ممکن است توسط تطابق‌گر ارایه شده باشد و یک ویژگی نمونه که پارامترهایش از تطابق‌گر استخراج شده است.
 ارزیابی‌کننده [^Evaluator] : یک واسط است برای ارزیابی‌کننده های همترازی که یک همترازی اولیه (که ممکن است به عنوان مرجع در نظر گرفته شود) را با یک همترازی ثانوی مقایسه می‌کنند.
بازبین همترازی [^AlignmentVisitor]: یا ارایه‌دهنده [^Renderer ] که یک واسط[^interface ] برای تعریف بازبین‌های همترازی که می‌تواند خروجی همترازی‌ها در فرمت‌های مختلف باشد.
در شکل زیر، روابط بین کلاس‌های اصلی  نمایش داده شده است.
![توضیح تصویر](https://boute.s3.amazonaws.com/113-1120.jpg)

این سیستم تنها  کمک می‌کند تا اولیات برای ادغام و دستکاری هم‌ترازی‌ها ایجاد شود و توانایی ادغام یا ویرایش هم‌ترازی را ندارد.[11]

#شرح پیاده سازی

در فاز سوم این پروژه، هدف ما پیاده سازی برنامه‌ای مشابه مقاله [5] که در سال 2014 ،توسط Vidyarthi و همکاران انجام شده است، بود. آنها ابتدا با تحلیل معنایی و استفاده از وردنت، Alignment میان مفاهیم را کشف و سپس از آن اطلاعات برای ادغام استفاده کرده‌اند. الگوریتم آنها کاملاً اتوماتیک بود.
در  ادغام هستان‌شناسی‌ها همانطور که اشاره شد، نیاز به کشف Alignmentمیان مفاهیم داریم که نیاز به پردازش‌های سنگین و دسترسی به حجم بالایی از داده دارد که پیاده سازی آن در قالب این پروژه درسی نمی‌گنجد. لذا برای یافتن Alignment موردنیاز از یک Alignment serverآنلاین استفاده شده است که در بالا شرح داده شده است. به همین دلیل هنگام اجرای این برنامه لازم است که به اینترنت وصل باشید. اما برنامه پیاده سازی شده طبق آنچه از ابتدا در این پروژه تعریف کردیم، یعنی عمل ادغام را انجام می‌دهد. 
برنامه‌ پیاده سازی شده توسط اینجانب، دو هستان‌شناسی را به عنوان ورودی می‌گیرد و آنها را ادغام کرده و در یک هستان‌شناسی جدید به عنوان خروجی ارائه می‌دهد. این برنامه به صورت کاملاً اتوماتیک، عمل ادغام دو هستان‌شناسی را انجام می‌دهد. این برنامه به زبان جاوا پیاده سازی شده است. این پیاده سازی فاقد محیط گرافیکی است و با کنسول کار می‌کند. لازم است که محل ذخیره دو فایل هستان‌شناسی که با فرمت owl هستند را در کد قرار دهید و سپس برنامه را اجرا نمایید. در گام اول، به صورت محلی دو هستان‌شناسی با هم match شده و سپس باهم merge می‌شوند و در فایل خروجی به فرمتowl ذخیره می‌شود. محل فایل ذخیره شده در کنسول نمایش داده می‌شود.
در تصویر زیر نمایی از خروجی برنامه را مشاهده می‌نمایید.

![نمایی از خروجی برنامه](http://upir.ir/93dey/run.jpg)

# آزمایش‌ها

برای مشاهده و مقایسه خروجی برنامه پیاده سازی شده، لازم بود تا دو هستان شناسی را به عنوان نمونه  مورد تست قرار گیرند. از این رو ابزار دیگری برای ادغام هستان شناسی که در دسترس باشد، نیاز داشتیم. 
نرم افزار متن باز protegeé نیز امکان ادغام دو هستان شناسی را فراهم آورده است. برای آشنایی بیشتر و دانلود این نرم افزار به لینک [http://protege.stanford.edu/] مراجعه نمایید. نحوه کار در آن به این صورت است که در ابتدا دو فایل آنتولوژی موردنظر را در محیط باز کرده و سپس از مسیر "Refactor > Merge Ontologies"می‌توان خروجی را به صورت یک فایل آنتولوژی جدید حاصل از ادغام دو آنتولوژی اولیه ذخیره کرد. ایراد کار این نرم افزار در انجام عمل ادغام این است که هیچ تحلیل معنایی روی مفاهیم انجام نداده و صرفاً دو هستان‌شناسی را به عنوان دو زیر درخت درنظر گرفته و توسط یک گره ریشه به نام thing تبدیل به یک درخت می‌کند.
  برای آزمایش دو آنتولوژی، یکی به زبان فرانسوی و دیگری به زبان انگلیسی را به دو طریق با هم ادغام کردیم و نتیجه را در شکل زیر مشاهده می‌نمایید. 
 در دو تصویر زیر، نمای درختی از دو هستان شناسی که برای تست درنظر گرفتیم در محیط گرافیکی protegeé  را ملاحظه می‌کنید.
 ![هستان شناسی 1](http://upir.ir/93dey/ont1.jpg)
 ![هستان شناسی 2](http://upir.ir/93dey/ont2.jpg)
 در تصویر زیر نتیجه ادغام دو هستان شناسی با ابزار ادغام در protegeé  را ملاحظه می‌نمایید.
 ![پروتژ](http://upir.ir/93dey/protege-result.jpg)
 در این تصویر نیز خروجی کد پیاده سازی شده را می‌بینید که در محیط گرافیکی به نمایش درآمده است.
 
 ![خروجی کد](http://upir.ir/93dey/MyApp_7ea4e.jpg)


#بهبود و ارتقاء

همانطور که  در تصاویر بالا نشان داده شد،خروجی کد پیاده سازی شده نسبت به خروجی محیط  protege قابل فهم‌تر است و ادغام منطقی‌تر صورت گرفته است و توانسته  بین انگلیسی و فرانسوی، مفاهیم مشابه را پیدا کند. به دلیل اینکه ما از alignment استفاده کردیم و تحلیل معنایی را در ادغام در نظر گرفتیم در حالیکه در محیط protege  این تحلیل صورت نمی‌گیرد.
پس همانطور که انتظار می‌رفت، نسبت به ابزار رایج در این زمینه توانستیم برای ادغام هستان‌شناسی‌ها بهبود ایجاد کنیم. 
در آخر برای دسترسی به کد جاوای این برنامه به همراه دو فایل هستان شناسی که مورد تست قرار گرفته است، می‌توانید به این لینک [https://github.com/fahiiim/ontology-merging] مراجعه نمایید.

# کارهای آینده

کارهای آتی در این راستا می‌تواند پروژه‌هایی از این قبیل باشد:
-ایجاد ابزاری برای ادغام هستان‌شناسی‌های موجود در زبان فارسی 
- ایجاد ابزاری برای ادغام هستان‌شناسی دو زبانه انگلیسی-فارسی
- ادغام وردنت دو زبان با یکدیگر (به عنوان مثال وردنت فارسی و انگلیسی را ادغام کنیم.)
تأکید بیشتر ما برای ادامه این پروژه روی زبان فارسی است، زیرا در زمینه پردازش زبان فارسی چنین نیازی وجود دارد اما هنوز اقدام کارآمدی در این راستا صورت نگرفته است و انجام این کار از نوآوری برخوردار است. تلاش ما برای بهبود و گسترش ابزارها و روش‌های پردازش زبان فارسی است. زیرا با توجه به کاربرد زیاد زبان فارسی در حال حاضر، این ابزارها می‌توانند بسیار کارآمد باشند.

# مراجع
[1] Ding, Ying, and Schubert Foo. "Ontology research and development. Part 2-a review of ontology mapping and evolving." Journal of information science 28.5 (2002): 375-388.
[2] Luo, Fuqiang, and Yongfu Xiong. "The method of multi-strategy ontology mapping." Computational and Information Sciences (ICCIS), 2011 International Conference on. IEEE, 2011.
[3] Tang, Jie, et al. "Using Bayesian decision for ontology mapping." Web Semantics: Science, Services and Agents on the World Wide Web 4.4 (2006): 243-262.
[4] Fensel D.The Semantic Web and its languages[J].IEEE Computer  Society,2003,pp:67-73.
[5] Vidyarthi, Ankit, et al. "Domain specific ontology merging using semantics."Confluence The Next Generation Information Technology Summit (Confluence), 2014 5th International Conference-. IEEE, 2014.
[6] Noy, Natalya F. "Ontology mapping." Handbook on ontologies. Springer Berlin Heidelberg, 2009. 573-590.
[7] Ehrig, Marc, and York Sure. "Ontology mapping–an integrated approach." The Semantic Web: Research and Applications. Springer Berlin Heidelberg, 2004. 76-91.
[8] http:// en.wikipedia.org/ wiki/WordNet
[9] Li, Sheng, Heping Hu, and Xian Hu. "An ontology mapping method based on tree structure." 2006 Semantics, Knowledge and Grid, Second International Conference on. 2006.
[10] Mehrnoush Shamsfard, Akbar Hesabi, Hakimeh Fadaei, Niloofar Mansoory, Ali Famian, Somayeh Bagherbeigi, Elham Fekri, et al. (2010). Semi Automatic Development of Farsnet; the Persian Wordnet. Proceedings of 5th Global WordNet Conference (GWA2010). Mumbai, India.
[11] David, Jérôme, et al. "The alignment api 4.0." _Semantic web_ 2.1 (2011): 3-10.



# پیوندهای مفید
+ [ What is RDF and what is it good for?](https://github.com/JoshData/rdfabout/blob/gh-pages/intro-to-rdf.md#)
+ [Natural Language Processing with python](http://www.nltk.org/book/)
+ [NELL knowledge base](http://rtw.ml.cmu.edu/rtw/)
+ [Yago Knowledge bae](http://yago-knowledge.org)