واژه TF-IDF کوتاه شده Term Frequency–Inverse Document Frequency است که به فارسی فراوانی اصطلاح- معکوس فراوانی متن ترجمه می شود. TF-IDF در بازیابی‌ اطلاعات (Information Retrieval) ، یک آمار عددی است که میزان اهمیت یک کلمه نسبت به یک سند در یک مجموعه‌ای از اسناد را نشان می‌دهد. در واقع TF-IDF یک وزن (Weight) است که در کاربردهای بازیابی اطلاعات و متن کاوی (Text Mining) کاربرد دارد. از نمونه کاربردهای آن می توان به موتورهای جستجو اشاره کرد که امتیازدهی به یک سند که ارتباط با یک پرس و جو (Query) را نشان می دهد.

این وزن یک معیار آماری است که از آن برای ارزیابی اهمیت یک واژه برای یک سند در یک Corpus کمک گرفته می شود. اهمیت یک واژه متناسب با بیشتر شدن تعداد تکرار آن در یک سند، افزایش پیدا می کند ولی با فراوانی (Frequency) واژه درون Corpus این اهمیت خنثی می شود. توجه کنید Corpus مجموعه ای از سندها است.

فرض کنید ما مجموعه ای از اسناد متنی انگلیسی داریم و می‌خواهیم اسناد را به نسبت ارتباطشان با پرس و جو رتبه بندی کنیم. مثلاً جمله “the brown cow” را در نظر بگیرید، یک راه ساده برای شروع این است که اسناد و مدارک که شامل هر سه کلمه “brown”، “cow” و “the” نیستند را حذف کنیم ، اما این کار هنوز اسناد زیادی را باقی می گذارد.برای تشخیص و رتبه بندی بهتر آنها، ممکن است تعداد دفعاتی که هر اصطلاح در هر سند اتفاق می افتد، شمارش شود؛ تعداد دفعاتی که یک اصطلاح در یک سند اتفاق می افتد فراوانی اصطلاح (Term Frequency) نامیده می شود. با این حال، در مواردی که در آن طول اسناد بسیار متفاوت است، اغلب تنظیماتی برای متعادل سازی وزن انجام می شود. (ویکی پدیا فارسی)

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

از آنجا که اصطلاح “the” بسیار رایج است، فراوانی اصطلاح به اشتباه و بدون دادن وزن کافی به شرایط معنی دار تر “brown” و “cow” بر اسناد و مدارکی تاکید می کند که، کلمه “the” بیشتر در آن ها تکرارشده باشد. اصطلاح “the” بر خلاف واژه های رایج تر “brown” و “cow” کلید واژه ای مناسب برای تشخیص اسناد و اصطلاحات مرتبط و غیر مرتبط نیست. بنابراین فاکتور معکوس فراوانی سند (Inverse Document Frequency) در نظر گرفته شده است که وزن اصطلاحاتی را که در مجموعه سند بسیار تکرار می شوند را کاهش دهد و وزن اصطلاحاتی که به ندرت در سند ظاهر می‌شوند را افزایش می دهد. (ویکی پدیا فارسی)

یک اصطلاح را می توان توسط یک تابع معکوس از تعداد اسناد که در آن ظاهر می‌شود ، تعیین کیفیت کرد.

شکل زیر فرمولی را نشان می دهد که با آن معیار TF-IDF بدست می آید. در آن Wx,y معیاز TF-IDF برای اصطلاح x در سند y است. TFx,y فراوانی واژه یا اصطلاح x در سند y است. DFx,y تعداد سندهایی است که اصطلاح x در آن هست. در پایان N تعداد همه سندها را نشان می دهد.

بنابراین TF-IDF برای کاربردهای مانند موتورهای جستجو اهمیت دارد، جایی که داده های مهم برای جستجو، اصطلاح هایی (Terms) را شکل می دهند که بسیار برای سندها (Document) مرتبط هستند. بخش Term Frequency، اندازه اینکه یک واژه درون یک سند هست را برآورد می کند، زیرا واژه ای که بسیار درون یک سند تکرار شده باشد، برای دسته بندی (طبقه بندی – Classification) یک سند بسیار اهمیت دارد.

نمونه کاربرد

فرض کنید سه سند زیر را داریم و می خواهیم به صورت دستی معیار TF-IDF را برای آن بدست بیاوریم. قاعدتا اگر یک اصطلاح (Term) هر چه بیشتر در سندها باشد، پس اهمیت بیشتری را خواهد داشت. در دومین بخش زیر، سه بردار ویژگی آورده شده است که تعداد تکرار (یا فراوانی) هر اصطلاح را برای هر یک از سه سند نشان می دهد.

سه بردارها بالا دیگر تنها دارای شماره های صفر و یک نیستند بلکه هر اندیس از بردارها، شمار (تعداد) بودن یک اصطلاح در سندی را نشان می دهد. برای نمونه Computer در سند شماره ۱ (Doc1) دو بار تکرار شده است. اکنون با کمک فرمول زیر که در آن ||D|| تعداد اصطلاح های درون یک سند است، می خواهیم بردارهای بالا را نرمال کنیم. در فرمول زیر هر یک از شماره های اندیس درون بردارها، بر تعداد اصطلاح های درون همان سند تقسیم می شود تا شماره ای نرمال شده بدست آوریم.

در گام بالا بخش TF را بدست آورده ایم که همان TFx,y درفرمول شکل نخست در همین نوشته است. توجه کنید که TF که به فراوانی یا تعداد تکرار هر اصطلاح یا واژه درون هر سند اشاره دارد، معیار مناسبی نیست برایآنکه اهمیت یک واژه را مشخص کنیم، زیرا واژه هایی مانند at یا the یا that بسیار درون سندها تکرار می شوند. بنابراین اکنون باید بخش دیگر، IDF را بدست بیاوریم، تا وزن اصطلاح هایی که به ندرت یا کمتر به کار رفته اند، افزاش پیدا کند، برای این منظور از تابع لگاریتم در فرمول شکل نخست کمک گرفته ایم.

در فرمول بالا، N تعداد همه سندها را نشان می دهد و DFx یعنی تعداد سندهایی که اصطلاح X در آنها هست، سپس از برآیند (نتیجه) بخش کردن N/DFx لگاریتم (در مبنای ۱۰) می گیریم. بنابراین فرمول زیر که بخشی از فرمول نخست است، چگونگی بدست آوردن مقدار IDF را نشان می دهد. سپس در مقدار TF که پیش از این بدست آورده بودیم، ضرب می شود.

کلاس TfidfVectorizer در Scikit-Learn

همانند CountVectorizer، از این کلاس برای تبدیل متن ها به ویژگی های شماره ای کمک گرفته می شود، زیرا الگوریتم های پردازش زبان طبیعی (NLP)، یادگیری ماشین و یادگیری ژرف، به جای رشته و متن، به شماره ها نیاز دارند. در کد زیر دستور ()counts.toarray بردار ویژگی مقدارهای TF-IDF را برای دو نوشته (یا سند) درون متغیر corpus برگشت می دهد.