روش TF-IDF: در این روش میزان تکرار یک کلمه در یک مستند را در مقابل تعداد تکرا آن در مجموعه کلیه مستندات در نظر می گیریم.
در روش TF-IDF وزن دهی کلمات تابعی از توزیع کلمات مختلف در مستندات است.
برای پیاده سازی این روش ابتدا یک مجموعه اسناد (برای مثال مجموعه اسناد همشهری) را در نظر می گیریم. به ازای تمام کلماتی که در پیکره وجود دارد ، بررسی می کنیم که هر کلمه در چه تعداد از سندها تکرار شده است و آن را ذخیره می کنیم .
سپس یک سند به عنوان ورودی دریافت می شود. هدف یافتن کلمات کلیدیِ سند دریافت شده است.
برای این منظور ابتدا بررسی می کنیم که هر یک از کلمات سند ورودی ، چند بار در همان سند استفاده شده است.
سپس به ازای تمام کلمات سند ورودی بررسی می کنیم که هر کلمه در چه تعداد از اسناد پیکره اصلی (برای مثال همشهری) وجود دارد.
بعد از طی کردن این مراحل به حساب کردن وزن کلمات می پردازیم :
تعیین وزن کلمات با استفاده از دو معیار term frequency و inverse document frequency انجام می شود که به شرح زیر محاسبه خواهند شد :
که در آن :
تعداد تکرار کلمه t در سند d (سند هدف) است و
تعداد پر تکرارترین کلمه در سند d می باشد
و
که در آن N تعداد کل اسناد موجود در پیکره است و
بیانگر تعداد اسنادی است که کلمه t در آنها وجود دارد.
در نهایت وزن هر کلمه به صورت زیر محاسبه خواهد می شود :
تنها نکته ای که باقی می ماند مواجه شدن با کلمه ایست که در مجموعه اسناد وجود نداشته باشد. در این صورت مخرج idf صفر شده و با مشکل مواجه خواهیم شد.
در چنین حالتی به صورت قراردادی مخرج idf را یک در نظر می گیریم.
پس از آنکه وزن تمامی کلمات سند ورودی محاسبه شد ، کلماتی که دارای بیشترین وزن هستند ، به عنوان کلمات کلیدی معرفی می شوند.
اما بعد از آن مطلب، دنبال راه حلی گشتم که بشود بدون داشتن هر نوع دیتابیسی (حتی اگر دیتابیس Stop Words یا کلمات بازدارنده مثل «از» و «به» و …) را نداشته باشیم، بتوانیم کلمات کلیدی را از داخل یک متن استخراج کنیم.
دقت کنید که اگر حتی دیتابیس Go List موجود میبود، ممکن بود کلماتی که در آن دیتابیس است برای یک سایت خاص کلمه کلیدی به حساب نیاید. به طور مثال فرض کنید دیتابیس کلمات کلیدی بگوید که کلمه «چاپ» در رشته کامپیوتر یک کلمه کلیدی است اما این کلمه در سایتی مانند سایت ما واقعاً کلمه کلیدی نیست! ما اصلاً در مورد چاپ صحبت خاصی نداشتهایم! این موضوع نشان میدهد که کلمات کلیدی یک مطلب یا سایت باید از طریق خود آن مقاله یا مقالات آن سایت به دست آید.
در این مطلب قصد دارم روشی را معرفی کنم که با استفاده از آن میتوان تا حد زیادی کلمات بازدارنده (Stop Words) و کلمات نیمه بازدارنده (یا Semi-Stop Wordss: کلماتی مانند «ترمیم» و «قدیمی» در عنوان «آموزش ترمیم عکس قدیمی در فتوشاپ») و کلمات کلیدی (یا Go List یا Keywordss: کلماتی مانند «آموزش» و «عکس» و «فتوشاپ» در عنوان «آموزش ترمیم عکس قدیمی در فتوشاپ») را از طریق مطالب سایت به دست آورد.
این روش «فراوانی وزنی» یا TF-IDF نام دارد:
TF-IDF مخفف Term Frequency – Inverse Document Frequecy و به معنی «فراوانی کلمه-عکسِ فراوانی سند» است.
در مورد این روش به خوبی در این مقاله انگلیسی و ترجمهی آن توضیح داده شده است:
در این شیوه به لغات یک وزن بر اساس فراوانی آن در سند داده می شود. در واقع این سیستم وزندهی نشان میدهد چقدر یک کلمه برای یک سند (مدرک) مهم است. این مساله کاربردهای بسیاری در بازیابی اطلاعات دارد. وزن کلمه با افزایش تعداد تکرار آن در متن افزایش مییابد، اما توسط تعداد کلمات در متن کنترل میشود، چرا که میدانیم در صورت زیاد بودن طول متن، بعضی از کلمات به طول طبیعی بیشتر از دیگران تکرار خواهند شد، اگرچه چندان اهمیتی در معنی نداشته باشند.
نتیجه محاسباتی که خواهم گفت، عددی میشود که tfidf نامیده میشود. با تغییر رنج این tfidf آن سه دیتابیس به دست خواهند آمد. به طور مثال اگر tfidf را نزدیک به 0 بگیریم، کلمات
Stop Words به دست میآیند. اگر این عدد را نزدیکترین مقدار به بالاترین عددی که به دست میآید بگیریم، کلمات کلیدی به دست میآید و بقیه هم که کلمات نیمه-بازدارنده میشوند.
tfidf چطور به دست میآید؟
برای به دست آوردن این عدد در مورد یک کلمه، به مواد زیر نیاز دارید:
Tf : برای به دست آوردن Tf مربوط به یک کلمه در یک دیتابیس باید ببینید کدام سندها حاوی آن کلمه هستند و در هر سند آن کلمه چند بار تکرار شده است؟ ماکزیمم تعدادی که این کلمه در یک سند تکرار شده را Tf بگیرید. به مثال زیر دقت کنید:
در این مثال دو سند داریم. که تعداد تکرار کلمات آن سند مقابل هر کلمه نوشته شده. اگر شما Tf مربوط به کلمه example را بخواهید، پاسخ، ۳ خواهد بود. چون این کلمه در سند دوم بیشترین تکرار را داشته که ۳ بار بوده. Tf کلمه a برابر با ۲ میشود چون ۲ بار در سند اول تکرار شده.
idf: کمی سختتر به دست میآید:
این فرمول یعنی idf به این صورت محاسبه میشود: لگاریتمِ [تعداد کل مقالات تقسیم بر (تعداد مقالاتی که شامل این کلمه میشوند+1)]
این معیار به تنهایی برای یافتن کلمات بازدارنده کافی است! فرض کنید کل مقالات شما ۱۰۰ تا باشد و کلمهی «در» در همه مقالات تکرار شده باشد. در این صورت لگاریتم ۱۰۰ تقسیم بر ۱۰۰ (یعنی لگاریتم ۱) میشود: 0
هر گاه این معیار 0 یا خیلی نزدیک به 0 شد یعنی آن کلمه جزء کلمات بازدارنده است.
tfidf: این معیار که پارامتر تصمیمگیری در مورد کلیدی بودن یا نبودن یک کلمه است از طریق ضرب دو پارامتر بالا به دست میآید:
شما با کنترل tfidf میتوانید انواع کلمه (کلیدی، غیرکلیدی و بازدارنده) را به دست آورید…
دقت کنید که به جای متن مقالات میتوانید عنوان مقالات را هم ملاک قرار دهید. اما با توجه به اینکه تعداد تکرار یک کلمه در عنوان، معمولاً ۱ است پس Tf را 1 در نظر میگیریم و یعنی میتوان آنرا حذف کرد و فقط idf را ملاک قرار داد.
به طور مثال اگر ما بخواهیم مقالات مرتبط با همین مقاله (چگونه بفهمیم یک کلمه در یک سایت کلمه کلیدی است؟ (معرفی الگوریتم «فراوانی وزنی») را از بین حدود ۱۲۰۰ مقاله سایت به دست آوریم باید این روال را طی کنیم: