برای دریافت داده و اطلاعات بیشتر میتوانید به صفحه مربوط به این مسابقه مراجعه کنید.
۱. مقدمه:
سایت وردپرس یکی از محبوب ترین پلتفرمهای ارائه دهنده خدمات بلاگ در دنیاست که نزدیک به نیمی از ۷۴ میلیون سایت وردپرسی (۱۶ درصد از کل دامنههای وب) روی این سایت هاست شده است. در این پروژه میخواهیم یک سامانه توصیهگر آموزش دهیم که پیش بینی کند کدام کاربر، کدام پست از میان ۹۰ هزار بلاگ فعال را دوست خواهد داشت و اصطلاحا لایک میکند.
امروزه اهمیت وبلاگها و تاثیرات آن بر زندگی افراد جامعه غیر قابل انکار میباشد و با توجه به انبوه وبلاگها، پستها و نیز ارزشمند بودن وقت کاربران و وجود چنین نقش پررنگی در زندگی مردم جامعه، در دسترس بودن پستهای دستچین شده بر حسب سلیقه شخصی کاربران، لازم و با ارزش بنظر میرسد.
به این آمارها نگاهی بیاندازید:
۶۱ درصد کاربران آمریکایی با توجه به توصیههای یک وبلاگ، دست به خرید زدهاند.
۸۱ درصد کاربران آمریکایی به وبلاگها اعتماد داشته، توصیهها و اطلاعات مندرج در وبلاگ ها را میپذیرند.
بازاریابهایی که از وبلاگ استفاده میکنند، ۶۷ درصد بیش از دیگران میتوانند مشتریان کلیدی (Lead) به دست آورند.
در شرکتهایی که وبلاگ دارند، لینکهای ورودی به سایت (inbound links) تا ۹۷ درصد بیشتر است.
۶۰ درصد کاربران وقتی محتواهای سفارشی یک شرکت را بر سایتش مطالعه میکنند، دید مثبتی نسبت به آن کمپانی پیدا میکنند.
پاسخ دادن به سوال "چه کسی این نوشته را دوست خواهد داشت؟ " علاوه بر راحتی کاربران و اراعه پستهای مورد پسندشان به ترتیب اولویت و نیز جلوگیری از اتلاف وقت آنها، سبب دستیابی به اطلاعات مهم دیگری نیز میشود، از جمله:
مشخص شدن علاقه مندیها و موضوعات محبوب و رایج درجامعه
مشخص شدن افراد و بلاگرهای تاثیرگذار برجامعه
تحلیل موضوعات مختلف با توجه به افرادی که آن را تایید و پسند میکنند
۲. کارهای مرتبط:
برای رسیدن به پاسخ این سوال باید :
۱-موضوع اصلی پست را پیدا کنیم.
۲-برای هر کاربر موضوعات محبوب را شناسایی کنیم.
۳- کاربرانی که موضوع پست جز موضوعات محبوب آنها بوده و نیز وبلاگ وبلاگ محبوبشان است ان را لایک میکنند.
برای هر کدام از موارد بالا باید بهترین الگوریتم را بیابیم. برای این منظور مطالب زیر مفید خواهند بود:
در مقاله برچسب زنی موضوعی متون فارسی مطالب زیر مفید خواهند بود:
۱-تشخیص موضوع متن:
برچسب زنی موضوعی متون امری مهم در حوزه بازیابی اطلاعات میباشد. این امر به نوعی دسته بندی یا طبقه بندی متون در زبان طبیعی است. سیستم معمولا روی یک دسته از متون از قبل برچسب زنی شده آموزش داده می شود و سپس با استفاده از مدل های حاصل از مرحلۀ آموزش، طبقه بندی متون جدید صورت میگیرد. امروزه دسته بندی متون در بسیاری از زمینه ها از جمله فیلترکردن متون مخصوصا نامه های الکترونیکی، تشخیص طبقه، ابهامزدایی از کلمات، سیستم های خودکار پاسخ به سوالات و یا حتی نمره دهی به مقالات در سیستمهای آموزشی و به طور کلی در هر کاربردی که سازماندهی مستندات و یا توزیع انتخابی و
تطبیقی خاصی از مستندات مد نظر باشد، کاربرد دارد. برچسب زنی موضوعی متون با مسائلی چون استخراج اطلاعات و دانش از متون و داده کاوی متون دارای ویژگی های فنی مشترک میباشد.
روش کار:
الف)نرمالسازی متن :
تمامی حوزه های مرتبط با پردازش زبان طبیعی به نحوی از انحنا با متون واقعی سروکار دارند. صورتهای غیر استاندارد نویسه ها وکلمات به وفور در این نوع متون دیده میشوند . قبل از اینکه بتوان از این متون به منظور استفاده در سیستم های تبدیل متن به گفتار، ترجمه ماشینی، بازشناسی حروف فارسی، خلاصه ساز فارسی، جستجو در متون فارسی استفاده کرد و یا در پایگاه داده ذخیره شان کرد، باید ابتدا پیشپردازشی روی آنها انجام گیرد، تا صورت های غیرستاندارد1 به شکل استاندارد تبدیل گردند. اگر حروف، نشانه های نگارشی و کلمات فارسی به شکل یکسانی نوشته نشوند، متون مورد استفاده قابل تحلیل توسط سامانه های رایانه ای نخواهند بود. طی فرایند نرمال سازی علایم نگارشی، حروف، فاصلههای بین کلمات، اختصارات وغیره بدون ایجاد تغییرات معنایی در متن به شکل استانداردشان تبدیل میگردند.
ب)الگوریتم بردار فاصله :
الگوریتم پیشنهادی برای برچسب زنی موضوعی بدین صورت عمل میکند که ابتدا تعدادی کلمه از بین کلمات دادگان آموزشی به عنوان کلمۀ کلیدی انتخاب میشود نحوة استخراج کلمات کلیدی در بخش بعد توضیح داده شده است. در مرحلۀ بعد بسامد وزندار کلمات کلیدی در متون آموزشی مربوط به هر موضوع استخراج میشود. به ازای هر موضوع، بردار بسامد وزن دار کلمات کلیدی به عنوان بردار نمایندة آن کلاس در نظر گرفته میشود. در مرحلۀ آزمون، برای برچسبزنی موضوعی به یک متن جدید، ابتدا بردار بسامد وزندار کلمات کلیدی متن جدید استخراج گشته و سپس فاصلۀ این بردار با تک تک بردارهای مربوط به کلاسها سنجیده میشود. کلاس یا موضوعی که بردار مربوط به آن کمترین فاصله را از بردار ورودی داشته باشد، به عنوان محتمل ترین موضوع برای متن جدید در نظر گرفته می شود. در این مقاله از معیار کسینوسی به عنوان :معیار فاصلۀ بین بردارها استفاده شده است. در این روش موضوع متن جدید از رابطۀ زیر به دست می آید:
که v بردار مربوط به متن جدید و wi بردار مربوط به موضوع i میباشد.
ج)استخراج کلمات کلیدی:
مهم ترین و پایهایترین بخش سیستم طبقه بندی کننده متون،تهیه کلمات کلیدی است. تهیه این مجموعه لغات با در دست داشتن پیکره متنی زبان فارسی صورت پذیرفت. روشهای گوناگونی برای استخراج کلمات کلیدی وجود دارد که معروفترین آنها حاصلضرب tf-idf میباشدکه در آن tf متناسب با بسامد یک کلمه در مستند و idf یک فاکتور وزنی است که بیانگر معکوس میزان پراکندگی یک کلمه در سندهای مختلف است. برای استخراج کلمات کلیدی، tf-idf را برای هر کلمۀ i به روش زیر بهدست می آوریم:
در فرمـول۲، ni تعـداد کلمـۀ i در زیرپیکـره، M فراوانـی کـل سندها در زیر پیکره و dfi تعداد مستنداتی است که شامل کلمۀ i میباشند. با در نظر گرفتن حد آستانه ای روی tf-idf مـی تـوان کلمات کلیدی را انتخاب کرد. کلمات کلیدی کلماتی هستند کـه دارای tf-idf بالایی باشند. با توجه به تعریف فاکتور tf-idf روشن است که به دلیل وجود فاکتور tf کلماتی که بسامد وقـوع بـالایی دارند امتیاز بیشتری برای انتخاب به عنوان کلمه کلیدی خواهند داشت. در عین حال این توضیح لازم است که تمام کلمـاتی کـه دارایtf بالایی هستند،ارزش استفاده در فرآیند طبقه بنـدی را ندارند. برای مثال میتوان به کلمۀ "است" اشاره داشت که تعداد
وقوع بسیار بالایی دارد اما کلمۀ کلیدی محسـوب نمـیشـود. در اینجافاکتور idfبه کارمی آید.این فاکتور در مورد کلماتی کـه در تعداد محدودی از مدارک دیده شده باشـند بالاسـت. و بـرای مثال در مورد کلمـه "اسـت" ایـن فـاکتور مسـاوی صـفر اسـت! بنابراین با توجه به اینکه معیار انتخاب کلمات کلیدی حاصلضرب
دو فاکتور احتمال وقوع یا بسامد در پیکـره و فـاکتور تمرکـز idf است، کلماتی به عنوان کلمه کلیدی انتخاب میشوند کـه ضـمن داشتن بسامد وقوع بالا در تعداد محدودی سند واقع شده باشـند و به عبارتی در اسناد مربوط به طبقه خاصی به تعداد زیاد دیـده شوند.
در مرحلۀ بعدی، کلماتی که در رساندن معنای متن تاثیری ندارند حذف میگردنـد. نـام متـداول اینگونـه کلمـات در مقابـل کلمات محتوایی که دارای معنی هستند دستوری میباشد. عمده دلیل حذف این کلمات به خـاطر عـدم کارآمـدی آنهـا در طبقـه بندی متـون و افـزایش سـرعت پـردازش ماشـین مـیباشـد. در بسیاری از کارهای قبلی، مشکل عمده نداشتن مجموعۀ منسـجم و منظم از این کلمات بـرای زبـان فارسـی بـود. در ایـن تحقیـق کلمات دستوری به کمک واژگان زایای زبان فارسی و بـر اسـاس دیدگاههای صرفی و معناشـناختی جمـع آوری شـده انـد کـه در جدول زیر به همراه مثال هایی قابل مشاهده میباشد.[۱]
مقوله نحوی | مثال | مقوله نحوی | مثال |
---|---|---|---|
صفت اشاره | آن،همان،همین،هر... | حروف الفبا | الف،ب،ج،... |
صفت مبهم | اندکی،بهمان،برخی... | حروف ربط | اگر،اما،آنچنانکه،چه... |
حروف ربط گروهی | اگرچه،اگرنه،ازهمین رو... | ضمیر فاعلی | آنان،اینجانب،ما... |
ضمیر اشاره | این،آن،همانها... | ضمیر تاکیدی انعکاسی | خودم،خودش... |
ضمیر مشترک و متقابل | هم،همدیگر،... | ضمیر پرسشی | آیا، چند، چرا،کی... |
اعداد | ۱،۲،۳،.. | عدد حرفی | یک، اول،دومین، سه... |
حروف اضافه | از،به،در،بر... | فعل وجه نما | باید،بایست،توان.. |
فعل کمکی | باش،داشت،خواه... | فعل اسنادی | بودن، شدن،است، بود،... |
۲-تشخیص سلیقه کاربران:
با پیدا کردن موضوع هر متن به روش گفته شده برای هر تمامی پستهای هر کاربر الگوریتم بالا انجام میشود. بیشترین موضوعات موضوعات محبوب کاربر خواهند بود. برای چنین منظوری توییتر در تحلیلهای خود برای افراد موضوعات محبوبشان را شناسایی کرده و به ترتیب لیست میکند.۲ ۳
متن کاوی:
بخش قابل توجهی از اطلاعات قابل دسترس در پایگاه دادههای متنی ذخیره شده اند که این پایگاه داده ها شامل مجموعه بزرگی از اسناد و منابع مختلف مانند مقالات خبری، علمی ، کتابها، ایمیلها و صفحات وب می باشند. این پایگاه دادهها و خصوصا اطلاعات موجود به فرم الکترونیکی سریعا در حال رشد بوده و امروزه بیشتر اطلاعات موجود در صنعت، کسب و کار و سایر سازمانها از این نوع می باشند .
متن کاوی یک حوزه تحقیقاتی بوده که از ترکیب چند حوزه تحقیقاتی دیگر بوجود آمده است. این حوزه های تحقیقاتی عبارتند از داده کاوی، پردازش زبان طبیعی و بازیابی اطلاعات. اما بین داده کاوی و متن کاوی تفاوت هایی وجود دارند که مهمترین آنها عبارتند از:
داده کاوی معمولا با داده های ساخت یافته سر و کار دارد اما برعکس متن کاوی با داده های ساخت نیافته یا شبه ساخت یافته درگیر بوده، خصوصا زمانی که این کاوش درون یک مقاله یا سند متنی عمومی انجام شود. از طرف دیگر حتی اگر کمی ساخت یافتگی هم در متن وجود داشته باشد باز هم دلیلی دیگر وجود دارد که متن کاوی را بسیار مشکل تر از داده کاوی می کند و آن هم انتزاعی بودن مفاهیم درون متن است که به سختی می توان آنها را با ساختارهای ارائه دانش مرسوم مدل کرد. از طرف دیگر در متن کاوی با مشکلات دیگری مانند کلمات هم خانواده (کلماتی که دارای معنی مشابه اما دیکته و تلفظ متفاوت) و کلمات متشابه (کلماتی که دیکته یا تلفظ مشابه داشته اما معنی کاملا متفاوت دارند) در گیر بوده که کار با متن کاوی را به مراتب مشکل تر نسبت به داده کاوی می کنند.
متن کاوی و خلاصه سازی متن:
آنچه مسلم است پروسه خلاصه سازی متن را نمی توان از موضوع متن کاوی جدا کرد. از آنجا که تحقیقات بسیاری در حوزه متن کاوی انجام شده است و خلاصه سازی هم نوعی کاوش در متن به جهت یافتن بخشهای مهم آن می باشد می توان از یافته های موجود در این مبحث برای خلاصه سازی متن کمک گرفت. ۴
۳. دادههای مورد استفاده:
داده مورد استفاده از سایت مسابقه kagle بدست امده است که شامل مجموعه دادههای زیادی میباشد که در این پروژه از همهی انها استفاده نشده است. در این فاز تنها از مجموعه داده trainUsers.json استفاده شده که شامل شناسه هر فرد، شناسه وبلاگهاو پستهایی است که هر فرد پسندیده است.پیاده سازی و ذخیره این اطلاعات به این صورت که برای کاربران یک کلاس به نام User در نظر گرفته شده که شامل شناسه پستهایی که پسندیده اند و نیز شناسه وبلاگهایی که پستهایشان را پسندیده اند وجود دارد.همچنین یک دیکشنری که کلیدها شناسه پست و مقادیر متن پستها هستند از فایل trainPosts.json استخراج شده است.
در واقع از مجموعه داده کاربران و پستها،برای هر کاربر وبلاگهای پسندیده شده و نیز پستهای پسندیده شده و برای هر پست متن ان و نیز وبلاگ ان مورد استفاده قرار گرفته است.
در این تحلیل یک مرحله پیش از انجام ازمایشات استخراج این اطلاعات از حجم بالای دادههای مسابقه بود.
۴. روشهای پیاده سازی:
الف)مرحله اول
ابتدا موضوع متن را پیدا میکنیم. برای این کار از کتابخانه اماده پایتون به نام rake استفاده میکنیم که موضوعات محوری متن را بر میگرداند.
سپس ارتباطات موضوعی را پیدا و در یک دیکشنری ذخیره میکنیم به این صورت که کلید ها موضوعات و مقادیر موضوعاتی هستند که مشترکا برای یک متن بوده اند.در واقع برای تمامی پستهای موجود در مجموعه داده موضوعات محوری را پیدا کرده و موضوعاتی مشترکا در یک متن بوده اند را در دیکشنری ذخیره میکند.
حال برای رسیدن به کاربران به ترتیب زیر عمل میکنیم:
۱)ابتدا از تمامی کاربران، کاربرانی را که این وبلاگ را پسندیده اند انتخاب میکنیم.
-سپس از میان این کاربران، کاربرانی را که موضوعات محبوبشان با موضوع این متن یکی بوده با اولویت ۱ در آرایه جواب نهایی ذخیره میکنیم. برای پیدا کردن موضاعات محبوب هر فرد در کلاس user به این صورت عمل میکنیم که موضوعانی را که بیش از ۲۵ درصد کل موضوعات پسندیده شده را تشکیل میدهند به عنوان موضوع محبوب انتخاب میکند.
-اکنون باز از میان کاربرانی که این وبلاگ را میپسندند کاربرانی را انتخاب میکنیم که موضوعات مرتبط با این موضوع(نه دقیقا این موضوع) جز موضوعات محبوبشان بوده است و ان را با اولویت ۲ در ارایه ذخیره میکنیم.
۲)در مرحله بعد به جای انتخاب کاربرانی که این وبلاگ را پسندیده اند دو روش بالا را برای همه کاربران انجام داده و به ترتیت با اولویت ۳ و ۴ انها را ذخیره میکنیم.
به این ترتیب پاسخ ما به سوال ؛چه کسی این نوشته را دوست خواهد داشت؛ به ترتیب اولویت از ۱ تا ۴ خواهد بود و محتملترین جواب ۱ و به ترتیب کم خواهد شد.
نمونههای درست و اشتباه مرحلهی اول:
پس از ازمایش نمونه های موجود در سایت نتایج به صورت کاملا دقیق بدست نیامد و مشکلات زیر وجود داشت:
الف)اولویت بندی بر اساس نظر شخصی بوده که میتوانست دقیقتر و بر اساس مجموعه داده در دسترس باشد .
ب)تعداد جواب ها به علت بررسی کل کاربران زیاد بود.
ج)همچنین کتابخانه از پیش نوشته شده rake دقت بالایی در پیدا کردن موضوعات نداشت.
ب)مرحله دوم:
در این مرحله برای رفع مشکلات گذشته الگوریتمهای مناسب پیدا کرده ایم و به دلیل کمبود وقت تنها به پیاده سازی یکی از این الگوریتمها پرداخته ایم. در فاز قبل به سه مشکل اشاره شد که به راهحلهای رفع آن میپردازیم:
۱.مشکل اول اولویت بندی بر اساس نظر شخصی:
برای حل این مشکل بر اساس داده موجود و اعمال الگوریتمهای دادهکاوی، باید عوامل موثر بر پسندیدن متنها را پیدا کرد. برای این منظور ابتدا باید تمامی داده های موجود بررسی شود و پس از تمیزسازی (data cleaning)به صورت یک ساختمان داده مناسب ذخیره گردد. سپس با استفاده از الگوریتمهای مناسب مثل یافتن ضریب وابستگی عوامل موثر را پیدا کرد. با توجه به گسترده بودن این تحلیلها و کمبود وقت به خواندن مقالات در این باره و پیدا کردن راهحل اکتفا کردهایم وپیاده سازی ان را به قسمت کارای اینده موکول کرده ایم.
۲.مشکل دوم زیاد بودن نتایج:
در این قسمت به پیدا کردن عوامل موثرتر پرداختیم تا نتایج را دقیقتر و محدودتر بدست اوریم. به این صورت که ابتدا افراد را بر اساس پستهایی که پسندیده اند کلاسه بندی میکنیم در نتیجه اگر بر اساس الگوریتم قبلی بیش از یک درصد خاصی(ما ۷۰ در نظر گرفته ایم) از یک کلاس ان را بپسندند میتوان گفت احتمال اینکه سایر افراد ان را بپسندند نیز وجود دارند.
از نظر شباهت سلیقه موضوعی نیز میتوان افراد را خوشه بندی نمود و الگوریتم قبلی را روی ان اعمال کرد، چراکه افراد بر اساس شباهت سلیقه خوشه بندی شده و افرادی که سلیقه مشابه دارند مشابه یک دیگر عمل میکنند.
در ان مرحله به پیادهسازی این قسمت پرداخته ایم که جزییات ان را در ادامه خواهیم گفت.
۳.مشکل سوم دقیق نبودن یافتن موضوعی:
برای حل این مشکل در این مرحله لیست کتابخانه rake را بهبود بخشیدیم برای این منظور از یک لغت نامه انگلیسی به اینصورت استفاده میگردد که تمامی لغاتی که قید، حرف اضافه، فعل کمکی و…(لغات موجود در جدول ۱) میباشند را وارد لیست کرده ایم.این کار به بهبود موضوع یابی کمک خواهد کرد، اگرچه ممکن است دامنه نتایج را کمی کاهش دهد و برخی موضوعات را در نظر نگیرد.
پیاده سازی:
با پیدا کردن راهحل برای هر مشکل در این فاز به رفع مشکل ۲ پرداخته ایم و با خوشه بندی و کلاسه بندی نتایج را دقیقتر بدست اورده ایم.
برای این منظور از کتابخانه اماده sklearn استفاده میکنیم. این کتابخانه شامل انواع الگوریتمهای خوشه بندی و کلاسه بندی میباشد. در این مرحله ما از کلاسه بندی بر حسب موضوعات محبوب افراد استفاده میکنیم و انان را دسته بندی میکنیم.
سپس با اعمال الگوریتم فاز قبلی افراد محتمل را یافته و برای هر کلاس درصد افرادی که احتمال دارد پست را بپسندند را محاسبه میکنیم. اگر این مقدار بیش از ۷۰ درصد بود به جای الگوریتم دوم فاز قبل(ینی بررسی علاقه مندی ها بر روی تمامی کاربران) تنها این افراد را بررسی میکنیم که طبیعتا احتمال پسندیدنشان بیشتر است.
در واقع بجای بررسی همه افراد ابتدا افرادی که حداقل یک پست از وبلاگ مربوطه را پسندیده اند را بررسی میکنیم و افراد محتمل را جدا میکنیم، سپس از بین کل کاربران کاربرانی با سلیقه مشابه این افراد پیدا کرده و انها را بررسی میکنیم.
با بررسی نوشته های ازمایشی دقت این روش نسبت به روش فاز قبلی پیشرفت چشمگیری داشته است.
۵. کارهای آینده :
با توجه به کم بودن زمان بسیاری از ایدهها و الگوریتمها قابل پیاده سازی نبودند از جمله:
۱.مجموعه داده موجود شامل فیلدهای بسیار زیادی است که استفاده از انها کمک بسیاری به این تحلیل میکند. برای مثال با توجه به موجود بودن تاریخ ارسال هر پست و تاریخ فعالیتهای افراد (ارسال پست و یا پسندیدن ان) از تحلیلهای زمان میتوان بهره گرفت و با توجه به بازه فعالیت افراد و یا پیدا کردن الگو میان زمان ارسال پست و پسندیدن افراد میتوان نتایج دقیقی بدست اورد. برای مثال پستهای مربوط به جنگها در سالگرد شروع پایان ان بیشتر مورد توجه قرار خواهند گرفت.
۲.استفاده بیشتر از الگوریتمهای یادگیری برای پیدا کردن اولویتها و تحلیلها. در واقع با استفاده از دادههای اموزشی و به وسیله تحلیلهای دقیق دادهکاوی عوامل موثر بر پسندیده شدن یک پست توسط یک فرد را پیدا کرد. با این روش میتوان عواملی را پیدا کرد که شاید به نظر مهم نباشند اما در واقعیت تاثیر مستقیم بر موضوع داشته باشند.
۳.این تحلیلها برای زبان انگلیسی میباشد و برای زبان فارسی مناسب نیست. در کارهای اینده با پیادهسازی موضوعیاب فارسی میتوان این تحلیل را برای متنهای فارسی نیز به کار برد.
۶. مراجع:
Luhn, “The automatic creation of literature abstraction”, IBM Journal of research and development, 2-159-165, 1958
Edmundson, “New Methods in Automatic Extracting”, Journal of the Association for Computing Machinery, 16 (2), 264{285,1969.
Gupta, G. S. Lehal, “A Survey of Text Mining Techniques and Applications”, Journal of Emerging Technologies in Web Intelligence, vol. 1, no. 1, 2009.
Gulcin Ozsoy, I. Cicekli, F. Nur Alpaslan, “Text Summarization of Turkish Texts using Latent Semantic Analysis”, ۲۳rd International Conference on Computational Linguistics, pages 869–۸۷۶, , August 2010
هادی عبدی قویدل، بهرام وزیر نژاد ، محمدبحرانی ،برچسب زنی موضوعی متون فارسی ، دانشگاه صنعتی شریف