فاز اول پروژه درس بازیابی پیشرفته اطالعات
مدرس :دکتر سلیمانی
پیادهسازی یک سیستم پایه بازیابی اطالعات
ترم اول سال تحصیلی 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 ،درصد از نمره پروژه شما کسر خواهد شد.
-
سواالت خود را در مورد پروژه در گروه درس مطرح کنید.
-
با افراد متقلب طبق قوانین دانشکده برخورد خواهد شد.
آرزوی موفقیت...
© Copyright 2025 Paperzz