بازیابی پاسخ

تغییرات پروژه از تاریخ 1393/02/06 تا حالا
در دنیای وب با سایت‌های بسیار زیادی در زمینه‌های مختلف مواجه هستیم که تنها به مسئله پرسش و پاسخ می‌پردازند. در واقع این سایت‌ها دو کار مهم را انجام می دهند. اولا سوال‌هایی را که کاربران در آن‌ها مطرح می‌کنند را به کسانی که ممکن است بتوانند جواب خوبی به آن بدهند نشان می‌دهند. و دوم این که به کاربران این اجازه را می‌دهند که در آرشیو بسیار بزرگ پرسش و پاسخ‌های این سایت جستجو کنند تا اگر پرسش مد نظر آن‌ها قبلا توسط یک کاربر دیگر پرسیده شده، از تجربه پرسش و پاسخ آن کاربر استفاده کنند. از نمونه‌های بسیار موفق این نوع سایت‌ها [stack overflow](http://stackoverflow.com) می‌باشد.

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

در واقع بازیابی پاسخ همان مسئله بازیابی اطلاعات است که می خواهد با توجه به این که اطلاعات ما به صورت پرسش و پاسخ‌هاست و معمولا کاربر هم به عنوان کوئری یک پرسش را مطرح می‌کند، بازیابی بهتری را به نسبت روش‌های کلی بازیابی اطلاعات ارائه دهد.

پس اجمالا این پژوهش به بررسی روش های بازیابی پاسخ مناسب یک پرسش در مجموعه عظیمی از پرسش و پاسخ‌ها می‌پردازد.
# مقدمه
در این پروژه  قرار است محتویات  تعدادی  زیادی پرسش و پاسخ  بررسی شود و کلمات را بر اساس قواعدی توکنایز میکنیم مثلا ریشه کلمات را بدست می آوریم و که در مراحل بعدی در ذخیره کلمات با مشکل مواجه نشویم و بر اساس پرسشی که کاربر انجام داده پاسخ پرسشی که در سیستم وجود دارد و مشابه پرسش انجام گرفته شده است به کاربر ارائه میشود.
# کارهای مرتبط
میتوانیم برای ذخیره داده ها از inverted index  استفاده کنیم و به کلمات وزن خاصی نسبت دهیم تا با مقایسه میانگین وزن هر پرسش  موجود در سیستم ،با وزن پرسش مطرح شده ،بهترین پاسخ را مرتبط با سوال انجام گرفته ارائه دهیم.
در هر فایل متنی تعدادی کلمه وجود دارد که کمکی در جستجوی فایل ها نمیکند مانند حروف اضافه StopWords .
تعداد حروف اضافه در فایل ها زیاد است و وزن حروف بالا میرود و ما از این حروف صرف نظر میکنیم  . در این پروژه ما برای هر ترم t، لیستی از نام فایل ها را ذخیره میکنیم . همچنین در پروژه با استفاده از کلاس PorterStemmer ریشه کلمات بدست آمده است.
برای محاسبه وزن هر کلمه از تعداد تکرار آن  کلمه log گرفته و با یک جمع میشود تا وزن کلماتی که یک بار آمده اند صفر نشود.
بنده میخواهم از روشی  استفاده کنم به طوری که در هر سند ابتدا میانگین تمام وزن ها را محاسبه کرده(X) سپس نسبت وزن کلمه در سند به وزن کوری را محاسبه کنم(W) سپس  مقدار انحراف معیار را از فرمول زیر بدست می آورم .w-x)/x∑
![فرمول](http://www.uploadax.com/images/66616035214748182887.jpg)
      
این کار را برای تمامی اسناد انجام میدهیم حال سندی که کوچکترین مقدار را دارد بهترین سند است.



# روش‌ها و ارزیابی نتایج
میتوانیم از دو روش cos  و انحراف معیار(روش پیشنهادی) استفاده کنیم و نتایج را مقایسه کنیم.و همچنین میتوان داده ها را بر اساس روش single link یا complete link  خوشه بندی کنیم و بر  این اساس بهترین پاسخ را استخراج کنیم.
# کارهای آینده
تمام کارهایی که میخواهم انجام دهم بر اساس فصول 5و6و7و8و9 کتاب Introduction To Information Retrieval میباشد.
با تشکر#مثال :
 به شکل زیر که از مقاله ای که ضمیمه شده است استخراج کرده ام توجه کنید.(inverted index)
![](http://www.uploadax.com/images/61579409997930544601.jpg)
به طور کلی 3 روش متداول برای استخراج کلمات کلیدی وجود دارد :

+ روش TF-IDF : در این روش میزان تکرار یک کلمه در یک مستند را در مقابل تعداد تکرا آن در مجموعه کلیه مستندات در نظر می گیریم
![](http://www.uploadax.com/images/79356707017544617423.jpg)
برای پیاده سازی این روش ابتدا یک مجموعه اسناد  را در نظر می گیریم. به ازای تمام کلماتی که در پیکره وجود دارد ، بررسی می کنیم که هر کلمه در چه تعداد از سندها تکرار شده است و آن را ذخیره می کنیم .
سپس یک سند به عنوان ورودی دریافت می شود. هدف یافتن کلمات کلیدیِ سند دریافت شده است.
برای این منظور ابتدا بررسی می کنیم که هر یک از کلمات سند ورودی ، چند بار در همان سند استفاده شده است.
سپس به ازای تمام کلمات سند ورودی بررسی می کنیم که هر کلمه در چه تعداد از اسناد پیکره اصلی  وجود دارد.
بعد از طی کردن این مراحل به حساب کردن وزن کلمات طبق فرمول گفته شده در بالا می پردازیم :
تعیین وزن کلمات با استفاده از دو معیار term frequency و inverse document frequency انجام می شود که به شرح زیر محاسبه خواهند شد :
 ![](http://www.uploadax.com/images/83934316859050240348.jpg)
# روش‌ها و ارزیابی نتایج
میتوانیم از دو روش cos  و انحراف معیار(روش پیشنهادی) استفاده کنیم و نتایج را مقایسه کنیم.و همچنین میتوان داده ها را بر اساس روش single link یا complete link  خوشه بندی کنیم و بر  این اساس بهترین پاسخ را استخراج کنیم.
# کارهای آینده
تمام کارهایی که میخواهم انجام دهم بر اساس فصول 5و6و7و8و9 کتاب Introduction To Information Retrieval میباشد.
#خوشه بندی
خوشه بندی را میتوان به عنوان مهمترین مسئله در یادگیری بدون نظارت در نظر گرفت خوشه بندی با یافتن یک ساختار درون یک مجموعه از داده های بدون برچسب در گیر است.خوشه به مجموعه ای از داده ها گفته میشود که به هم [شباهت]داشته باشند.
در خوشه بندی سعی میشود داده ها به خوشه هایی تقسیم شود که شباهت بین داده های هر خوشه حداکثر باشد و شباهت بین داده های خوشه های متفاوت حداقل باشد.
![خوشه بندی](http://www.uploadax.com/images/98373984251446916268.jpg)
# مراجع
+ Jeon, Jiwoon. Searching question and answer archives. ProQuest, 2007.
+ Xue, Xiaobing, Jiwoon Jeon, and W. Bruce Croft. "Retrieval models for question and answer archives." Proceedings of the 31st annual international ACM SIGIR conference on Research and development in information retrieval. ACM, 2008.
+ Rodrigo, Álvaro, et al. "A Question Answering System based on Information Retrieval and Validation." CLEF (Notebook Papers/LABs/Workshops). 2010.

# لینک‌های مفید
Introduction To Information Retrieval
+ [پردازش زبان فارسی در پایتون](http://sobhe.ir/hazm/)
+ [Question-Answer dataset](http://www.ark.cs.cmu.edu/QA-data/)