MIR_Project1.pdf

‫فاز اول پروژه درس بازیابی پیشرفته اطالعات‬
‫مدرس‪ :‬دکتر سلیمانی‬
‫پیادهسازی یک سیستم پایه بازیابی اطالعات‬
‫ترم اول سال تحصیلی ‪1394-95‬‬
‫دانشکده مهندسی کامپیوتر‬
‫دانشگاه صنعتی شریف‬
‫فهرست مطالب‬
‫مقدمه ‪3 ...............................................................................................................................................................‬‬
‫مجموعه اسناد ‪4 .....................................................................................................................................................‬‬
‫نمرهدهی ‪5 ...........................................................................................................................................................‬‬
‫صورت پروژه ‪6........................................................................................................................................................‬‬
‫بخش اول (تحلیل و نمایهسازی اسناد‪ ،‬فشردهسازی نمایه)‪6...............................................................................................‬‬
‫بخش دوم (اصالح پرسمان‪ ،‬جستوجو و بازیابی اسناد) ‪8 .................................................................................................‬‬
‫بخش سوم (ارزیابی سیستم) ‪9 ................................................................................................................................‬‬
‫واسط کاربری ‪10.....................................................................................................................................................‬‬
‫بخش اول ‪10......................................................................................................................................................‬‬
‫بخش دوم ‪10.....................................................................................................................................................‬‬
‫بخش سوم‪10.....................................................................................................................................................‬‬
‫نکات پایانی ‪11.......................................................................................................................................................‬‬
‫مقدمه‬
‫در این پروژه شما باید با استفاده از مطالب گفته شده در کالس یک سیستم بازیابی اطالعات پیاده سازی کنید‪ .‬توابعی برای آماده سازی‬
‫اولیهی دادهها (جدا کردن کلمات‪ ،‬بازگرداننده لغات به ریشه‪ 1‬و حذف لغات پرکاربرد‪ )2‬در اختیار شما قرار داده می شود و لزومی ندارد این‬
‫قسمت را دوباره پیادهسازی کنید‪ .‬به جز این قسمت پروژه‪ ،‬تمام توابع دیگر باید کامال توسط خودتان پیادهسازی شود‪.‬‬
‫پروژه را می توان به ‪ 3‬بخش کلی تقسیم کرد که هر بخش به طور مجزا در پایین شرح داده شده است‪ .‬بخش اول شامل طراحی و پیادهسازی‬
‫نمایه‪3‬ساز است که آدرس محلی اسناد اولیه را دریافت می کند و به عنوان خروجی‪ ،‬دادهساختاری (هایی) قابل جستوجو از اسناد بر اساس‬
‫کلمات موجود در آنها تولید می کند‪ .‬بخش دوم امکان جستو جو بر روی داده ساختارهای تولید شده را به سیستم اضافه می کند‪ .‬سیستم‬
‫طراحی شده باید امکان اصالح امالی پرسمان ورودی را نیز داشته باشد‪ .‬بخش سوم به ارزیابی سیستم بازیابی اطالعات می پردازد‪ .‬سیستم‬
‫شما باید قابلیت ارزیابی روشهای متفاوت را به طور مجزا داشته باشد‪.‬‬
‫‪1‬‬
‫‪Stemmer‬‬
‫‪Stop words‬‬
‫‪3 Index‬‬
‫‪2‬‬
‫مجموعه اسناد‬
‫اسناد مورد نظر برای استفاده در این پروژه‪ ،‬از مجموعه اسناد ‪ NPL‬انتخاب شده است‪ ،‬این دادهساختار شامل سه قسمت سندها‪ ،‬پرسمانها و‬
‫اسناد مرتبط با هر پرسمان (که توسط خبره‪ 4‬انتخاب شدهاند) میباشد که در سه فولدر جداگانه در اختیار شما قرار میگیرند‪ .‬شما باید با‬
‫استفاده ازسندها دادهساختارهای مرتبط با بخشهای مختلف سیستم بازیابی اطالعات را تولید کنید و از ‪ 2‬قسمت دیگر یعنی پرسمانها و‬
‫اسناد مرتبط با هر پرسمان برای ارزیابی سیستم خود استفاده کنید‪.‬‬
‫به ازای هر سند و هر پرسمان یک فایل جدا وجود دارد که نام فایل‪ ،‬شماره سند یا پرسمان مورد نظر است‪ .‬برای قسمت سوم یک فایل‬
‫اختصاص داده شده که در ابتدای هر خط شمارهی پرسمان و در خط بعد شمارهی سندهای مرتبط با آن پرسمان به ترتیب شباهت آورده شده‬
‫است‪.‬‬
‫‪Expert‬‬
‫‪4‬‬
‫نمرهدهی‬
‫تقسیم نمرات سه بخش پروژه به شرح زیر است‪:‬‬
‫‪-‬‬
‫بخش اول (تحلیل و نمایهسازی اسناد‪ ،‬فشردهسازی نمایه)‪ 25 :‬نمره ‪ 20 +‬نمره اضافی‬
‫‪-‬‬
‫بخش دوم (اصالح پرسمان‪ ،‬جستوجو و بازیابی اسناد)‪ 45 :‬نمره ‪ 10 +‬نمره اضافی‬
‫‪-‬‬
‫بخش سوم (ارزیابی سیستم)‪ 30 :‬نمره‬
‫صورت پروژه‬
‫بخش اول (تحلیل و نمایهسازی اسناد‪ ،‬فشردهسازی نمایه)‬
‫نکته ای که قبل از هرچیز بایستی به آن توجه کنید‪ ،‬این است که ساخت تمامی نمایههایی که توضیحات آنها در ادامه آمده است‪ ،‬باید به‬
‫صورت پویا باشد به این معنی که پس از ساخت نمایهها‪ ،‬اگر بخواهیم سندی را از مجموعه اسناد حذف کرده یا به آن اضافه کنیم‪ ،‬نمایهها نیز‬
‫به روزرسانی شوند‪.‬‬
‫‪-‬‬
‫نحوه استفاده از کدها‬
‫سه کالس ‪ Stemmer ،Main‬و ‪ Tokenizer‬در اختیار شماست‪ .‬کالس ‪ Stemmer‬وظیفه بازگردانی لغات به ریشه‬
‫را بر عهده دارد‪ ،‬البته عمل بازگردانی به ریشه و همینطور حذف لغات پرتکرار در کالس ‪ Tokenizer‬انجام شده و‬
‫نیازی به استفاده دیگر از آن نیست؛ فقط دقت کنید که آدرس فایل لغات پرتکرار در کالس ‪ Tokenizer‬در متغیر‬
‫‪ swPath‬ذخیره شده و با توجه به آدرس این فایل در سیستم خود‪ ،‬باید محتوای آن را تغییر دهید‪ .‬کالس‬
‫‪ Tokenizer‬وظیفه جداسازی لغات اسناد یا پرسمانها را به عهده دارد‪ .‬میتوانید در کالس ‪ Main‬نمونه استفاده از‬
‫کالس ‪ Tokenizer‬را مشاهده نمایید‪ .‬دقت کنید که در صورتی که پرسمان شامل عبارات داخل گیومه باشد (این نوع‬
‫پرسمان در بخش بعدی توضیح داده خواهد شد) میبایست خودتان بخشهای داخل گیومه را جدا کنید و هر کدام را‬
‫یک بار ‪ Tokenize‬کنید؛ در نهایت نیز می بایست یک بار کل پرسمان را برای رتبه بندی اسنادی که شامل همه عبارات‬
‫داخل گیومه هستند ‪ Tokenize‬کنید‪.‬‬
‫‪-‬‬
‫‪5‬‬
‫ساخت نمایه جایگاهی‬
‫برای این قسمت بایستی نمایه ای بسازید که با استفاده از آن بتوان شماره تمامی اسنادی که یک کلمه در آن آمده است‬
‫و همچنین همه جایگاههای این کلمه در هر سند را پیدا کرد‪ .‬دادهساختار مورد استفاده برای این بخش اختیاری بوده و‬
‫میتوانید از هر کدام از دادهساختارهای معرفی شده در درس استفاده نمایید (پویایی نمایه فراموش نشود! ‪:‬دی)‪.‬‬
‫‪-‬‬
‫ساخت نمایه ‪Bigram‬‬
‫با استفاده از این نمایه میتوان با دادن یک ‪( Bigram‬ترکیبهای دو حرفی) تمامی کلمات موجود در لغتنامه که این‬
‫ترکیب در آن ها موجود است را دریافت کرد‪ .‬این نمایه برای قسمت اصالح پرسمان که در بخش بعد توضیح داده شده‪،‬‬
‫مورد استفاده قرار خواهد گرفت (پویایی این قسمت نیز فراموش نشود! ‪:‬دی)‪ .‬توجه کنید که با حذف یک سند‪ ،‬تمامی‬
‫کلمات موجود در آن از لغتنامه حذف نمی شوند زیرا ممکن است که آن کلمه در سند دیگری نیز آمده باشد‪ .‬حذف یک‬
‫کلمه را در صورتی انجام دهید که ‪ Postings List‬آن خالی شده باشد‪.‬‬
‫‪-‬‬
‫فشردهسازی نمایه جایگاهی (‪ 15‬نمره اضافی)‬
‫برای این قسمت شما می بایست هم مجموعه اسنادی که یک کلمه درون آن آمده است و هم مکان کلمه در آن اسناد را‬
‫فشردهسازی کنید‪ .‬فشردهسازی قسمت اول را با استفاده از روش بایت متغیر‪ 6‬و قسمت دوم را با استفاده از روش کد‬
‫‪Positional Postings List‬‬
‫‪5‬‬
‫گاما‪ 7‬انجام دهید‪ .‬حاصل فشرده سازی را در یک فایل ذخیره کنید‪ .‬فایل خروجی به این صورت است که سطر اول آن‪،‬‬
‫یک کلمه نوشته شده و سطر بعدی حاصل فشردهسازی شماره اسنادی که کلمه در آنها آمده است با استفاده از‬
‫روش بایت متغیر میباشد‪ .‬با توجه به اینکه ممکن است در طول فشردهسازی‪ ،‬مقداری که برای یکی از کاراکترها به‬
‫دست میآید معادل کد اسکی کاراکتر ’‪ ‘\n‬شود‪ ،‬به عنوان نشانه برای اتمام این قسمت‪ ،‬کد شده عدد ‪ 100000‬را که از‬
‫بزرگترین شماره سند بیشتر است به عنوان عالمت اتمام لیست اسناد قرار دهید‪ .‬قسمت بعدی آن‪ ،‬حاصل فشردهسازی‬
‫مکانهای آن کلمه در اسناد مختلف است و ترتیب قرارگیری بر حسب شماره اسناد به صورت صعودی است‪ .‬در اینجا نیز‬
‫ممکن است مشکل قسمت قبل رخ دهد و برای رفع این مشکل‪ ،‬مقدار کد شده عدد ‪ 100000‬را که از طول طوالنیترین‬
‫سند بیشتر است‪ ،‬به عنوان نشانه اتمام لیست مکانهای کلمه در یک سند قرار دهید‪ .‬پس از اتمام کار برای کلمه اول‪ ،‬در‬
‫سطر بعد کلمه بعدی نوشته شده و به همین صورت باید ‪ Postings List‬فشرده شده آن در ادامه بیاید‪ .‬واضحا سیستم‬
‫شما بایستی از قابلیت گستردهسازی (عکس فشردهسازی ‪: )):‬دی؛ منظور خواندن از فایل فشرده و بارگذاری‪ 8‬آن است)‬
‫پشتیبانی کند‪ .‬به این صورت که با خواندن از فایل فشرده شده‪ ،‬نمایه جایگاهی را بارگذاری کنید و دیگر نیازی به‬
‫ساخت آن نباشد‪.‬‬
‫‪-‬‬
‫ساخت نمایه برای تشخیص عبارات ‪ 5( wildcard‬نمره اضافی)‬
‫برای پشتیبانی کردن سیستم از عبارات ‪ wildcard‬در جستوجو‪ ،‬نیازمند داشتن دادهساختاری مناسب هستید تا‬
‫بتوانید کلمات موجود در لغت نامه را که در پرسمان صدق می کنند بیابید‪ .‬برای سادگی تصمیم گرفته شده که تنها از‬
‫پرسمانهایی که * در انتهای آن ها قرار دارد‪ ،‬پشتیبانی کنید‪ .‬در این قسمت بایستی با توجه به روش گفته شده در‬
‫درس‪ ،‬نمایه الزم برای این کار را تولید نمایید‪.‬‬
‫‪6‬‬
‫‪Variable Byte‬‬
‫‪Gamma Code‬‬
‫‪8 Load‬‬
‫‪7‬‬
‫بخش دوم (اصالح پرسمان‪ ،‬جستوجو و بازیابی اسناد)‬
‫‪-‬‬
‫اصالح پرسمان ورودی با استفاده از روش ‪ bigram‬و معیار فاصله جاکارد‬
‫‪9‬‬
‫ممکن است پرسمان ورود ی کاربر غلط امالیی داشته باشد؛ در چنین مواردی هر لغت از پرسمان ورودی که در نمایه‬
‫موجود نیست با نزدیکترین لغت موجود در نمایه (با استفاده از معیار فاصله جاکارد) جایگزین میشود‪ .‬در صورتی که‬
‫چند لغت فاصله برابری از لغت مورد نظر داشته باشند‪ ،‬میتوانید یکی از آنها را به دلخواه انتخاب کنید‪.‬‬
‫‪-‬‬
‫استفاده از نمایه ‪ wildcard‬برای جستوجو (‪ 10‬نمره اضافی)‬
‫ممکن است پرسمان ورودی شامل یک یا چندین لغت ‪ wildcard‬باشد‪ .‬هر ترکیب از لغات نمایه معادل با این لغات‬
‫باید یک بار با آن ها جایگزین شوند و در نهایت بین همه اسناد بازگردانی شده به ازای ترکیبهای مختلف لغات معادل با‬
‫لغات ‪ ،wildcard‬اسنادی که بیشترین امتیاز را کسب کردهاند بازگردانی شوند‪ .‬مثال اگر لغات معادل با *‪ doc‬و *‪ t‬در‬
‫نمایه به ترتیب {‪ }document, doctor‬و {‪ }the, these‬باشند به ازای پرسمان *‪ doc* is t‬باید اسناد مرتبط با‬
‫چهار پرسمان ‪ doctor is these ،document is the ،doctor is the‬و ‪ document is these‬در نظر گرفته‬
‫شوند و بین کل این چهار مجموعه سند‪ ،‬اسنادی که بیشترین امتیاز را کسب کردهاند به عنوان اسناد مرتبط با پرسمان‬
‫اولیه بازگردانی شوند‪( .‬دقت کنید که هر سند حداکثر یک بار میتواند در بین اسناد مرتبط نهایی ظاهر شود‪).‬‬
‫‬‫‪-‬‬
‫بازیابی ترتیبدار در فضای برداری ‪ tf-idf‬به روشهای ‪ lnn-ltn‬و ‪lnc-ltc‬‬
‫پشتیبانی سیستمهای بازیابی فوق از جستوجوی دقیق عبارت‬
‫‪10‬‬
‫‪11‬‬
‫هر پرسمان ورودی ترکیبی از لغات و عبارات داخل گیومه است (میتوانید فرض کنید که عبارات داخل گیومه به‬
‫صورت ‪ wildcard‬نیستند و عالوه بر آن نیازی به اصالح پرسمان ندارند)‪ .‬اسناد بازیابی شده توسط سیستم باید شامل‬
‫همه عبارات داخل گیومه (پس از تحلیل عبارت شامل بازگردانی به ریشه و حذف لغات پرکاربرد) باشد‪ .‬ترتیب لغات‬
‫داخل هرگیومه در اسناد بازیابی شده باید حفظ شود‪ ،‬یعنی عبارت تحلیل شده باید عینا در سند موجود باشد؛ اما در‬
‫حالتی که چند عبارت داخل گیومه موجود است ترتیب ظاهر شدن این چند عبارت در اسناد بازیابی شده مهم نیست و‬
‫همه اسناد بازیابی شده فقط باید شامل همه این عبارات باشند‪ .‬مثال سند ‪ q1 q2 q3 q4 q5‬یک نتیجه بازیابی شده‬
‫قابل قبول برای پرسمان ‪ "q5" "q3 q4" q6‬میباشد‪ .‬دقت کنید که در این حالت هم بازیابی ترتیبدار است‪ ،‬با این‬
‫تفاوت که رتبهبندی فقط بین اسنادی صورت میگیرد که شامل همه عبارات داخل گیومه هستند‪ .‬برای رتبهبندی اسناد‪،‬‬
‫از یکی از دو روش ‪ tf-idf‬استفاده می شود و همه لغات پرسمان (شامل لغات و عبارات داخل گیومه) در محاسبه امتیاز‬
‫سند شرکت دارند‪ .‬یعنی پس از یافتن اسنادی که همه عبارات داخل گیومه را دارند‪ ،‬میبایست بدون در نظر گرفتن‬
‫گیومههای موجود در پرسمان (فقط خود گیومهها و نه عبارات داخل آنها) اسناد را رتبهبندی نمایید (دقت کنید که‬
‫‪ Tokenizer‬هنگام جدا کردن لغات‪ ،‬کاراکتر گیومه را در نظر نمیگیرد در نتیجه نیازی به حذف این کاراکتر از پرسمان‬
‫نیست)‪.‬‬
‫‪9‬‬
‫‪Jaccard distance‬‬
‫‪Phrase search‬‬
‫‪11 Double quotation‬‬
‫‪10‬‬
‫بخش سوم (ارزیابی سیستم)‬
‫در مجموعه اسناد موجود عالوه بر فایل اسناد‪ ،‬تعدادی پرسمان و نتیجه آنها در اختیار شما قرار گرفته است‪ ،‬در این بخش سیستم شما باید‬
‫مجموعه پرسمانها و پاسخ های درست برای هر پرسمان را دریافت کند و با مقایسه پاسخ سیستم با نتایج درست سیستم شما را ارزیابی کند‪.‬‬
‫برای ارزیابی باید ‪ 3‬معیار ‪ PAM ،F-Measure‬و ‪ R-Precision‬را پیادهسازی کنید‪.‬‬
‫توجه داشته باشید که سیستم شما باید قابلیت محاسبه هر کدام از این معیارها را بر روی روشهای متفاوتی که برای بازیابی اسناد پیادهسازی‬
‫کردید به طور جداگانه داشته باشد‪.‬‬
‫واسط کاربری‬
‫پیادهسازی یک واسط کاربری ساده تحت کنسول برای اجرای تعاملی بخشهای مختلف سیستم و همچنین مشاهده نتایج آنها ضروری‬
‫میباشد‪ .‬با اجرای برنامه می بایست سه گزینه برای اجرای سه بخش مختلف در اختیار کاربر قرار گیرد‪ .‬با انتخاب هر بخش از سمت کاربر‪،‬‬
‫میبایست گزینههایی برای اجرای زیربخشهای هر بخش در اختیار کاربر قرار گیرد‪ .‬دقت کنید که واسط کاربری به طور مجزا نمرهای ندارد‪،‬‬
‫اما عدم پیادهسازی آن برای هر بخش سبب کسر حداقل ‪ %30‬از نمره همان بخش خواهد شد‪.‬‬
‫بخش اول‬
‫‬‫‬‫‬‫‬‫‬‫‪-‬‬
‫‪-‬‬
‫دستور ساخت نمایهها‪.‬‬
‫اضافه کردن یک سند با وارد کردن شماره آن از سمت کاربر‪.‬‬
‫حذف یک سند با وارد کردن شماره آن از سمت کاربر‪.‬‬
‫مشاهده ‪ Postings List‬یک کلمه‪.‬‬
‫فشردهسازی نمایه (واضحا در صورت پیاده سازی آن ‪:‬دی)‪.‬‬
‫خارج کردن نمایه ‪ Postings List‬از حالت فشرده و بارگذاری آن‪ .‬به این معنی که اگر نمایهها ساخته نشده بودند ولی فایل‬
‫فشرده موجود بود بتواند آن را بارگذاری کند و بدون ساخت دوباره نمایه‪ ،‬عملیات جستوجو و سایر کارهای مربوط به نمایه قابل‬
‫انجام باشد (واضحا در صورت پیاده سازی آن ‪:‬دی)‪.‬‬
‫دادن یک پرسمان به صورت ‪ wildcard‬و بازگرداندن تمامی کلمات موجود در لغتنامه که در آن صدق می کنند (واضحا در‬
‫صورت پیاده سازی آن ‪:‬دی)‪.‬‬
‫بخش دوم‬
‫انجام عمل جستجو که به ترتیب شامل گامهای زیر است‪:‬‬
‫‪-‬‬
‫دریافت پرسمان (شامل عبارات ‪ wildcard‬و عبارات داخل گیومه) از کاربر‪.‬‬
‫‪-‬‬
‫نمایش پرسمان اصالح شده به کاربر‪.‬‬
‫‪-‬‬
‫انتخاب یکی از دو نوع بازیابی ‪ lnn-ltn‬و ‪.lnc-ltc‬‬
‫‪-‬‬
‫نمایش لیست شماره اسناد مرتبط به ترتیب شباهت‪.‬‬
‫‪-‬‬
‫امکان انتخاب سند توسط کاربر و مشاهده محتویات آن‪.‬‬
‫بخش سوم‬
‫‪-‬‬
‫دریافت شماره ی پرسمان و نام معیار از کاربر‪.‬‬
‫‪-‬‬
‫نمایش دقیق مقدار محاسبه شده‪.‬‬
‫‪-‬‬
‫ارزیابی سیستم روی همهی پرسمانهای موجود در صورت وارد شدن کلمه ‪ all‬از سمت کاربر‪.‬‬
‫نکات پایانی‬
‫‪-‬‬
‫برنامه ارسالی شما میبایست به زبان جاوا یا پایتون یا ‪ C++‬باشد‪ .‬در صورت پیادهسازی با زبان پایتون یا ‪ ،C++‬یافتن ‪Stemmer‬‬
‫و ‪ Tokenizer‬به عهده خودتان میباشد‪.‬‬
‫‪-‬‬
‫تحویلدادنیها شامل کدها و گزارش تحلیلی مختصر میباشد‪ .‬گزارش ارسالی باید تحلیل مختصری از نتایج ارزیابی سیستم و ذکر‬
‫دالیل برتری یک روش بازیابی نسبت به روش دیگر باشد‪.‬‬
‫‪-‬‬
‫تحویلدادنیها را بصورت فایل فشرده و در وبسایت کوئرا بارگذاری نمایید (راهنمای استفاده از این وب سایت به زودی در اختیار‬
‫شما قرار میگیرد)‪.‬‬
‫‪-‬‬
‫نام فایل ارسالی باید به صورت ‪ Project1-StudentNumber1‬باشد‪.‬‬
‫‪-‬‬
‫موعد تحویل پروژه ساعت ‪ 23:59‬روز ‪ 22‬آبان خواهد بود‪.‬‬
‫‪-‬‬
‫به ازای هر ساعت تاخیر‪ 0.5 ،‬درصد از نمره پروژه شما کسر خواهد شد‪.‬‬
‫‪-‬‬
‫سواالت خود را در مورد پروژه در گروه درس مطرح کنید‪.‬‬
‫‪-‬‬
‫با افراد متقلب طبق قوانین دانشکده برخورد خواهد شد‪.‬‬
‫آرزوی موفقیت‪...‬‬