در مدل‌سازی موضوعی، فرض می‌کنیم که مجموعه متون ورودی از روی چند موضوع نامعلوم ساخته شده‌اند و باید این موضوعات را پیدا کنیم. هر موضوع یک توزیع احتمال نامعلوم روی واژه‌ها است و هر متن توزیع احتمالی روی موضوع‌ها.

در این پروژه شما باید بعد از فهمیدن فرایند مدل‌سازی موضوعی، تلاش کنید موضوعات بیان‌شده را برای آیات قرآن پیدا کنید. داده‌های ورودی شما ظاهر آیات به همراه ترجمه و تفسیر آنها هستند.

۱. مقدمه

همان طور که اطلاعات در دنیای امروز در حال زیاد شدن است پیدا کردن موضوعی که ما به آن نیاز داریم نیز سخت تر میشود. پس ما برای ساماندهی ، جستجو و فهمیدن این اطلاعات وسیع نیاز به ابزاری مناسب داریم.

مدل سازی موضوعی یک سری روش است که به طور اتوماتیک ساماندهی ، فهمیدن ، جستجوکردن و خلاصه کردن مقالات الکترونیکی را انجام می دهند.
درواقع سه وظیفه ی اصلی آن ها عبارتند از:

  1. پیدا کردن موضوعات نامعلوم که در مجموعه اسناد وجود دارند.(شایع هستند)

  2. تفسیر کردن اسناد بر اساس موضوعات آن ها .

  3. استفاده کردن از این تفاسیر برای سازمان دهی کردن ، خلاصه کردن و جستجو کردن متن ها.

ما در این پروژه قصد داریم بر اساس الگوریتم (LDA) مدل سازی موضوعی را انجام دهیم.حال کمی به توضیح مبانی این روش می پردازیم:

  • هر موضوع توزیعی روی کلمات است.

  • هر سند ترکیبی از موضوعات کل اسناد است.

  • هر کلمه از یک موضوع گرفته شده است.

latent dirichlet allocation

در واقع ما فقط اسناد را می بینیم و دیگر ساختار ها ساختار های نامعلوم هستند.

هدف ما حدس زدن این ساختار های نامعلوم است.

LDA به صورت یک مدل گرافیکی:

lda as a graphical model

که در این مدل :

w=کلمات مشاهده شده

\theta= نسبت فراوانی موضوعات برای هر سند

\alpha= پارامتر نسبت ها

Z= موضوع اختصاص داده شده برای هر کلمه

\phi= موضوعات

\beta= پارامتر موضوع

و این هم یک فرمول ریاضی برای محاسبه ی LDA:

LDA solution

به علاوه در مورد مدل LDA دانستن موارد ذیل مفید است:

  • LDA یک مدل احتمالی از متن است. این مدل مساله پیدا کردن موضوعات در مجموعه ای بزرگ از اسناد را به مساله استنتاج قبلی (posterior inferecne problem) محدود می کند.

  • این مدل به ما اجازه میدهد تا در یک مجموعه اسناد بزرگ و حجیم ساختار موضوعی نامعلومی را تصور کنیم و همچنین اطلاعاتی جدید را که برای این ساختار مناسب هستند را تولید کنیم.

در ضمن این مدل محاسبات ریاضی و احتمالی دارد که از آوردن آنها در این جا صرف نظر می کنیم ولی در صورت نیاز میتوانید روی این مقاله کلیک کنید.

۲. کارهای مرتبط

برای پیاده سازی مدل سازی موضوعی دو روش اصلی وجود دارد:

  1. LDA که در مقدمه توضیح داده شد.

۲.LSA که ما در زیر به توضیح آن می پردازیم.( در ضمن برای پیاده سازی اولیه از این روش استفاده کردیم.)

روشLSA:

مقدمه:LSA یک تکنیک برای آنالیز کردن روابط بین داکیومنت ها و کلمات درون آن ها در پردازش زبان طبیعی و به طور خاص تر در بردارهای مفهومی است که به وسیله تولید کردن یک سری مفهوم که به داکیومنت و کلمات مربوط می شود این کار را انجام می دهد. LSA فرض میکند که کلماتی که از نظر مفهومی به هم شبیه هستند در یک قطعه از متن قرار می گیرند.یک ماتریس شامل تعداد کلمات در هر پاراگراف ( سطر ها کلمات منحصر به فرد هستند و ستون ها هر پاراگراف را نشان می دهند.) که از یک قطعه متن بزرگ و یک مدل ریاضی به نام singular value decomposition ساخته شده است و هدف این است که با ثابت نگه داشتن سطر ها ستون های ماتریس را کاهش داد. کلمات با گرفتن کسینوس از زاویه بین دو vector ی که به وسیله ی هر دو سطر تشکیل شده است، مقایسه می شوند.مقادیر نزدیک به یک یعنی کلمات بسیار مشابه و مقادیر نزدیک به صفر یعنی کلمات غیر مشابه.

مدل LSA میتواند از ماتریس term-document که تعداد ترم ها در داکیومنت را بیان میکند استفاده کند. سطر های این ماتریس همان ترم ها و ستون هایش همان داکیومنت ها هستند. یک مثال عمومی این است که وزن element های ماتریس tf-idf باشد. element های ماتریس متناسب با تعداد کلمه در هر داکیومنت است.این ماتریس همچنین با مدل های استاندارد معنایی متداول است. و همچنین همیشه لازم نیست که به صورت ماتریس بیان شود.

شرحی بر مدل احتمالی PLSA:

طبق مدل Naive Bayes هر داکیومنت از k موضوع تشکیل شده است. هر موضوع یک چند جمله ای روی کلمات است و هر داکیومنت از یک موضوع منحصر به فرد تولید شده است.
پارامترهای (p(z=k) , p(w|z=k می توانند از داده های بر چسب خورده(MLE , MAP) یا با الگوریتم EM اگر برچسب کلاس وجود ندارد بدست بیایند. این مدل خیلی انعطاف پذیر نیست چون فرض می کند که هر داکیومنت یک موضوع دارد.
pLSA فرض میکند که هر داکیومنت d با word vector w از همه ی موضوعات با وزن مشخص هر موضوع داخل یک داکیومنت تشکیل میشود. یک فرآیند تولیدی از pLSA در ادامه گفته می شود.یک مجموعه داکیومنت ثابت با n داکیومنت داده شده است. ما آن را با یک ماتریس documnet-term داکیومنت-کلمه ای n*V به صورت c(d,w) نشان میدهیم ؛ منظور از (c(d,w تعداد کلمات از نوع w در داکیومنت d است . از فرمول زیر احتمال برداشته شدن c(d,w) به دست می آید.

p(w)=\sum_{z=1}^k p(z)p(d|z)p(w|z)

پارامتر های این مدل \theta ={ p(z), p(d|z) , p(w|z)} هستند. ما میخواهیم احتمال ماتریس های document-term مشاهده شده را به حداکثر برسانیم.
که با فرمول های زیر قابل دستیابی است. و دیگر از توضیح بیشتر خودداری میکنیم چون فهمیدن کامل این مدل واقعا دشوار است. برای

max_{\theta} \sum_{d=1}^n \sum_{w=1}^V c(d,w)log(\sum_{z=1}^k p(z)p(d|z)p(w|z))

در آخر باید بگویم چون کتابخانه ی این روش در پایتون وجود دارد از توضیح بیش از حد مدل ریاضی خودداری کرده ام چون نیازی نیست خود را به طور افراطی درگیر مدلی کنیم که پیاده سازی شده است.

خلاصه ای از روش پیاده سازی :

ما ابتدا باید با استفاده از ابزاری ، زبان های فارسی و عربی را در زبان پایتون، بتوانیم پردازش کنیم. سپس با استفاده از کتابخانه gensim که ابزازی برای مدل سازی موضوعی است متن قرآن را مدل سازی موضوعی کنیم. در این کتابخانه دو روش LSA, LDA برای مدل سازی موضوعی وجود دارد. یعنی این دو روش کامل در کتابخانه های خاصی پیاده سازی شده اند و ما فقط باید بتوانیم از آنها به نحو احسنت استفاده کنیم.(دیگر کاری به مدل ریاضی آن نداریم) در پیاده سازی اولیه ما از روش LSA استفاده میکنیم.

در ضمن ارزیابی روش آن را به فاز بعد موکول میکنیم.

۳. کد برنامه نویسی

شرحی بر کد برنامه نویسی:

در ابتدا باید گفت ما با استفاده از کتابخانه json متن اصلی آیات را داخل دیکشنری می توانیم ذخیره کنیم. همچنین بااستفاده از ISRIStemmer ریشه ی کلمات را پیدا میکنیم. و در واقع روی آنها مدل سازی انجام میدهیم.
روال کلی کار به این صورت است که ما هر صفحه ی قرآن را یک داکیومنت فرض کرده ایم. ابتدا تمامی کلمات عربی موجود را در این صفحه را بعد stem شدن در یک لیست می ریزیم و سپس آن را به لیستی دیگر اضافه می کنیم. در آخر مثلا اگر ۱۰ صفحه موجود باشد ما لیستی داریم که شامل ۱۰ element است. که در هر کدام از این element ها کلمات موجود در آن صفحه قرار دارد. حال با این لیست یک دیکشنری و کورپوس مخصوص که برای تبدیل داکیمونت به vector و همچنین مدل LSA لازم است را می سازیم. سپس با استفاده از کتابخانه ای که مدل tf_idf را در پایتون پیاده سازی کرده است متن کورپوس را به vector تبدیل می کنیم. چون یکی از ورودی های LSA متن تبدیل شده به vector tf_idf است. حال با استفاده از مدل LSA میتوانیم بگوییم که چند موضوع از این داکیمونت استخراج کن.( تعداد این موضوعات دلخواه است و باید با استفاده از کارهای علمی که روی قرآن انجام شده است تعیین گردد)

خروجی برنامه نیز بدین صورت است که هر موضوع متشکل از چند کلمه ضرب یک عدد خاص است که مشخص می کند این کلمه در این موضوع چقدر اهمیت دارد و کلمات در یک موضوع مسلما به هم مرتبط هستند.

۴. کار های مشابه:

یکی از کارهای انجام شده در مورد مدل سازی موضوعی ۱۰۰۰۰۰ مقاله سایت ویکی پدیا است. در واقع کتابخانه از gensim برای این کار استفاده شده است. این کار از TMVE برای نمایش آن به صورت گرافیکی استفاده میکند. این کار یک مرورگر است که ویژگی های زیر را دارد:

  • می تواند موضوعات را به ترتیب تکرار بیشتر زیر هم مرتب کند.

  • روی هر موضوعی کلیک می شود کلمات پر تکرار آن موضوع ، موضوعات مرتبط با آن موضوع و همچنین اسناد مربوطه را نشان می دهد و به همین ترتیب اگر روی اسناد کلیک شد متن سند را نشان می دهد.

  • در هر موضوع مشخص است که چه کلماتی با چه درصد هایی وجود دارند.

  • یک صفحه از مرورگر شامل تمام موضوعات با ۵ کلمه پر تکرار آن ها باشد.

  • صفحه ای دیگر شامل همه ی کلمات به ترتیب تکرار آنها است که مشخص شود که به طور کلی هر کلمه ای چند بار تکرار شده است.

در ضمن برای درک بیشتر به این لینک می توانید مراجعه کنید.

یکی از کار های دیگری که بر روی topic modeling انجام شده است مدل کردن تحول علم است. این کار به صورت یک مرورگر است که نشان می دهد در طی سال ها کلمات پر تکرار یک موضوع چگونه تغییر می کند. روی هر موضوع کلیک می شود داکیومنت های مرتبط با آن را نشان میدهد و همچنین چند کلمه پر تکرار آن . روی هر داکیومنت نیز کلیک شود موضوعات و داکیومنت های مرتبط با آن نشان داده می شود.

در ضمن برای درک بیشتر به این [اینجا] می توانید مراجعه کنید.

در حوزه ی مدل سازی موضوعی library های مفیدی نیز برای زبان های مختلف وجود دارد که در این سایت وجود دارد.

۵. آزمایش‌ها

یکی از روش های ارزیابی و آزمایش کردن موضوع ها استفاده از داوری های افراد است.
اگر چه به نظر می رسد که این یک فرض قوی است که فضای پنهان و نامعلومی که توسط مدل سازی موضوعی پیدا شده است هم معنادار و هم مفید است ولی ارزیابی هر یک از این فرض ها کار دشواری است. زیرا پیدا کردن موضوعات یک فرآیند غیر قابل بررسی است. یعنی یک لیست استاندارد کامل از موضوعات برای هر متنی وجود ندارد. بنابراین ارزیابی این فضاهای نامعلوم مدل سازی موضوعی نیاز دارد که ما داده هایی خارج از متن را جمع آوری کنیم.
در این قسمت ما سعی داریم برای درست کردن یک تنظیمات مناسبی که افراد بتوانند دو مولفه ی فضای نامعلوم مدل سازی موضوعی را ارزیابی کنند دو فرآیند بیان کنیم. مولفه ی اول ساختار موضوعات است. ما یک فرآیند را گسترش می دهیم تا متوجه شویم که آیا یک موضوع پیوستگی معنایی دارد که برای یک فرد قابل تشخیص باشد. این کار word intrusion نامیده می شود. یعنی هر عامل(subject) باید یک کلمه ی اضافی که در یک موضوع وجود دارد را شناسایی کند. کار دوم این است تست کنیم که آیا بین موضوع و داکیومنت رابطه ی خاصی حس میشود. به این عمل topic intrusion میگویند. این عمل به این معنی است که عامل (subject) باید یک موضوع را که به یک داکیومنت خاص مربوط نمی شود را پیدا کند.

دخول متجاوزانه ی کلمات (word intrusion)

برای اندازه گیری پیوستگی موضوعات ما روش word intrusion را گسترش می دهیم. این روش با ارزیابی فضای نامعلوم درگیر است. در این روش موضوع با ۶ کلمه ی که به طور تصادفی مرتب شده اند نشان داده میشود. وظیفه ی کاربر این است که کلمه ای را که به کلمات دیگر مربوط نیست را پیدا کند که به این کلمه مزاحم گفته می شود.

وقتی که یک مجموعه کلماتی منهای یک کلمه ی مزاحم ارتباط خاصی با هم داشته باشند موضوع این کلمه را به راحتی می تواند مشخص کند. مثلا بیشتر افراد با دیدن مجموعه کلمات {apple, dog , cat , horse, cow, pig} کلمه ی apple را به عنوان کلمه ی مزاحم انتخاب می کنند چون همه ی کلمات دیگر اسامی حیوانات است ولی کلمه ی apple هیچ ارتباطی با دیگر کلمات ندارد. از طرفی برای مجموعه کلماتی مانند { car, teacher,platypus, agile, blue, Zaire } پیدا کردن کلمه ی مزاحم دشوار است زیرا هیچ زیر مجموعه ای از این کلمات ارتباط خاصی با یکدیگر ندارند. پس مردم به طور تصادفی یک کلمه را انتخاب می کنند. و این باعث می شود که یک موضوع پیوستگی کمتری داشته باشد.

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

دخول متجاوزانه ی موضوعات (topic intrusion)

این روش تست می کند که آیا تجزیه ی یک مدل موضوعی از یک داکیومنت به عنوان ترکیبی از موضوعات با داوری های انسانی از محتوای یک متن سازگار است یا خیر. در این روش موضوعات (subjects) به شکل یک عنوان یا قسمت کوچکی از یک داکیومنت نشان داده می شوند. آنها در یک داکیومنت به صورت ۴ موضوع که هر موضوع به وسیله ی ۸ کلمه پر تکرار آن نشان داده می شود، نمایش داده میشوند. سه تا از موضوعات از آنهایی انتخاب میشوند که با احتمال زیادی به آن داکیومنت مربوط اند و یک موضوع از موضوعات کم احتمال دیگر انتخاب می شود که به آن موضوع متجاوز می گوییم.

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

به طور کلی در word intrusion و topic intrusion موضوعات ساخته می شوند تا روی معنای کلمات تمرکز کنند نه روی استفاده ی گرامری آن.

نتایج آزمایشی

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

مدل ها و متن

در این جا ما دو روش مدل سازی موضوعی را بررسی می کنیم: (plsi) و (LDA) .

فرض کنیم تعداد موضوع های پنهان K ،یک پارامتر آزاد در هر مدل باشد. در این جا ما آن را با K =50,100 150 بررسی می کنیم. پارامتر های \beta_k و توزیع چند جمله ای موضوعی برای موضوع k و \theta_d نسبت موضوعی داکیومنت d از داده ها حدس زده می شوند. این مدل ها در این که این پارامتر ها چگونه بدست می آیند متفاوتند.

(plsi): در plsi نسبت ترکیب موضوعی \theta_d یک پارامتر برای هر داکیومنت است. بنابراین، plsi یک مدل کامل عمومی نیست و تعداد پارامتر ها به طور خطی با تعداد داکیومنت ها رابطه دارد.
(lda):یک مدل عمومی کامل از داکیومنت هاست که نسبت ترکیبی \theta_d به عنوان متغیر تصادفی از توزیع پیشین دیریکله مورد عمل قرار می گیرد.

آنالیز ارزیابی های انسانی
(word intrusion): همان طور که توضیح داده شد word intrusion تعیین می کند که چقدر موضوع های حدس زده شده با مفهوم های انسانی نزدیک است.
فرض کنید w^m_k ایندکس کلمه ی مزاحم بین کلمه هایی که از موضوع k از مدل m استنباط شده اند باشد. و همچنین فرض کنید که w^m_k,s کلمه ی مزاحم بین کلمه هایی که از موضوع k از مدل m توسط تابع s انتخاب شده باشد. و همچنین S را تعداد توابع فرض کنید. ما یک فرمول تعریف می کنیم:

MP^m_k = \sum_s(i^m_k,s = w^m_k,s)/S

با توجه به شکل ۳ lda در اکثر اوقات به بهترین شکل عمل می کند و Plsi وقتی که تعداد موضوعات زیاد می شود عملکردش افت می کند.

شکل ۳

شکل ۳

با توجه به سمت چپ شکل ۴ می توان گفت موضوعاتی که دقت زیادی دارند مانند painting همگی در مورد هنر هستند و به هم مربوط اند ولی در مورد موضوعات با دقت کم میتوان یک کلمه ی مزاحم انتخاب کرد که مثلا ۸۷ درصد از subject در موضوع سیاسی کلمه ی taxis را انتخاب می کنند.

شکل۴

شکل ۴

(topic intrusion): همانطور که قبلا گفتیم ما روش topic intrusion را برای گسترش می دهیم که بفهمیم چقدر یک مدل می تواند به درستی بگوید که یک داکیومنت از چه موضوعاتی تشکیل شده است. حال ما topic log odds به عنوان یک مدل برای اندازه گیری کمی یکسانی بین داوری های انسانی و این مدل تعریف می کنیم.

۶. کارهای آینده

۷. مراجع

  • Blei, David M. "Probabilistic topic models." Communications of the ACM 55.4 (2012): 77-84.

  • Probabilistic Topic Models Mark Steyvers Tom Griffiths

  • On-Line LDA: Adaptive Topic Models for Mining Text Streams with
    Applications to Topic Detection and Tracking Loulwah AlSumait, Daniel Barbar´a, Carlotta Domeniconi

  • Joint Sentiment/Topic Model for Sentiment Analysis Chenghua Lin
    Yulan He

  • Exploring Content Models for Multi-Document Summarization
    Aria Haghighi Lucy Vanderwende

  • Visualizing Topic Models Allison J. B. Chaney and David M. Blei

  • Reading Tea Leaves: How Humans Interpret Topic Models Jonathan Chang Jordan Boyd-Graber

۸. پیوندهای مفید

رد شده

خوب بود

تایید شده

با سلام
نکاتی که به نظر من میرسه:
یکی ار عکس هایی که برای فرمول گذاشتید باز نمیشه کاش اون فرمول را هم با latex مینوشتید.
یهتره در فاز بعد روی نگارش پروژتون کار کنید در بعضی جاها خطوط جابجا شده .
بهتر بود که تیتر هارو بزرگتر مینوشتید تا خواندن مطلب آسون تر بشه.
نکته ی اخر اینکه اگر که یکی از روش های ارزیابیتون رو هم که روی کدتون اجرا کردید را میاوردید و نتایج رو میگذاشتید خیلی بهتر می شد .
موفق باشید