Tf–idf

tf–idf, קיצור של term frequency–inverse document frequency, בעברית: תדירות מונח (tf) - תדירות מסמכים הופכית (idf), הוא מדד של עיבוד שפה טבעית, המצמד לכל מילה במסמך השייך לאוסף מסמכים ערך מספרי. ערך זה, משקף את מרכזיותה של המילה במסמך, ביחס למסמכים אחרים<ref></ref>. מדד זה נפוץ בתחומים של אחזור מידע, כריית טקסט ומידול משתמשים.

גרסאות של tf–idf משמשות מנועי חיפוש לניקוד ולדירוג רלוונטיות טקסטים כתגובה לשאילתת משתמש (כמה מסמך רלוונטי לבקשה שהמשתמש הזין במנוע חיפוש). שימושים מרכזיים נוספים ל-tf–idf הם סינון מילים עם משמעות נמוכה לזיהוי ועיבוד טקסטים (מילות עצירה), לסיכום טקסטים ולסיווג מסמכים.

== הגדרות ואופן החישוב ==
tf–idf מחושב בנפרד לכל מונח בתוך כל מסמך, על ידי מכפלה של שני גורמים: תדירות מונח (tf) ותדירות מסמכים הופכית (idf). 

תדירות מונח היא אחוז הפעמים שמופיע מונח t במסמך d:

: <math> \mathrm{tf}(t,d) = \frac{f_{t,d}}}}</math> ,

כאשר היא הספירה הגולמית של מונח במסמך, כלומר, מספר הפעמים שמונח מופיע במסמך . המכנה הוא המספר הכולל של מונחים במסמך (ספירת כל מופע של אותו מונח בנפרד). ישנן דרכים נוספות אחרות המגדירות מדד זה, אך הגדרה פשוטה ובעלת שימושים רבים.

תדירות מסמכים הופכית (idf) היא מדד לנדירות המילה בין מסמכים .מדד זה מחושב על ידי מציאת אחוז המסמכים בהם המונח מופיע מכלל המסמכים, והפעלת פונקציית הלוג על אחוז זה:

: <math> \mathrm{idf}(t, D) = \log \frac{N}{|\{d \in D: t \in d\}|}</math>

כאשר:
* <math>N</math>: המספר הכולל של המסמכים <math>N = {|D|}</math>
* <math> |\{d \in D: t \in d\}| </math>: מספר המסמכים שבהם המונח <math> t </math> מופיע (כלומר, <math> \mathrm{tf}(t,d) \neq 0</math> ). אם המונח לא נמצא בקורפוס, הדבר יוביל לחלוקה באפס. לכן מקובל להתאים את המכנה ל <math>1 + |\{d \in D: t \in d\}|</math>.
מכפלת tf ב-idf מניבה את המדד tf–idf:

: <math>\mathrm{tfidf}(t,d,D) = \mathrm{tf}(t,d) \cdot \mathrm{idf}(t, D)</math>

משקל גבוה ב-tf–idf מגיע על ידי תדירות מונח גבוהה (במסמך הנתון) ותדירות מסמכים נמוכה של המונח בכל אוסף המסמכים; לכן המשקולות נוטות לסנן מונחים נפוצים. מכיוון שהיחס בתוך הפונקציה הלוגריתמית של תדירות המסמכים ההופכית תמיד גדול או שווה ל-1, הערך של תדירות המסמכים ההופכית (ובהתאמה של tf–idf) גדול או שווה ל-0. ככל שמונח מופיע במסמכים נוספים, היחס בתוך הלוגריתם מתקרב ל-1, ומקרב את ה-idf ואת tf–idf ל-0.

== דוגמה ==
{| class="wikitable" style="float: left; margin-left: 1.5em; margin-top: 0;"
|+מסמך 2
! מונח
! תדירות
|-
| this
| 1
|-
| is
| 1
|-
| another
| 2
|-
| example
| 3
|}
{| class="wikitable" style="float: left; margin-left: 1.5em; margin-top: 0;"
|+מסמך 1
! מונח
! תדירות
|-
| this
| 1
|-
| is
| 1
|-
|a
| 2
|-
|sample
| 1
|}
נניח שיש טבלאות ספירת מונחים של קורפוס המורכב משני מסמכים בלבד, כפי שהם מופיעים בטבלאות המוצגות בצד שמאל.

החישוב של tf–idf עבור המונח "this" מתבצעת באופן הבא:

בצורתו הגולמית, tf הוא רק התדירות של "this" עבור כל מסמך. בכל מסמך מופיעה המילה "this" פעם אחת; אבל ככל שלמסמך 2 יש יותר מילים (יש לשים לב שמילים מסוימות נספרות פעמיים), התדירות היחסית של אותו מונח קטנה יותר.

: <math> \mathrm{tf}(\mathsf{this}, d_{1}) = \frac{1}{5} = 0.2 </math>
: <math> \mathrm{tf}(\mathsf{this}, d_{2}) = \frac{1}{7} \approx 0.14 </math>

idf הוא קבוע לכל קורפוס, ומהווה את היחס בין המסמכים הכוללים את המילה "this". במקרה זה, ישנו קורפוס של שני מסמכים, ושניהם כוללים את המילה "this".

: <math> \mathrm{idf}(\mathsf{this}, D) = \log \left (\frac{2}{2} \right ) = 0 </math>

אז tf–idf הוא אפס עבור המילה "this", מה שמרמז שהמילה אינה אינפורמטיבית במיוחד מאחר שהיא מופיעה בכל המסמכים.

: <math> \mathrm{tfidf}(\mathsf{this}, d_{1}, D) = 0.2 \times 0 = 0 </math>
: <math> \mathrm{tfidf}(\mathsf{this}, d_{2}, D) = 0.14 \times 0 = 0 </math>

המילה "example" מעניינת יותר - היא מופיעה שלוש פעמים, אבל רק במסמך השני:

: <math> \mathrm{tf}(\mathsf{example}, d_{1}) = \frac{0}{5} = 0 </math>
: <math> \mathrm{tf}(\mathsf{example}, d_{2}) = \frac{3}{7} \approx 0.429 </math>
: <math> \mathrm{idf}(\mathsf{example}, D) = \log \left (\frac{2}{1} \right ) = 0.301 </math>

ולבסוף,

: <math>\mathrm{tfidf}(\mathsf{example}, d_1, D) = \mathrm{tf}(\mathsf{example}, d_1) \times \mathrm{idf}(\mathsf{example}, D) = 0 \times 0.301 = 0</math>
: <math>\mathrm{tfidf}(\mathsf{example}, d_2, D) = \mathrm{tf}(\mathsf{example}, d_2) \times \mathrm{idf}(\mathsf{example}, D) = 0.429 \times 0.301 \approx 0.129</math>

== שימושים ==
word embedding: הצמדת ערך מספרי למונחים מילוליים, כפי שמתאפשר באמצעות שימוש במדד tf-idf מאפשרת דרך פשוטה ונוחה לייצג מונחים מילוליים באמצעות וקטור. המרה זו, אשר קרויה גם word embedding, מאפשרת הפעלת מניפולציות מתמטיות על מונחים מילוליים, ומהווה את הבסיס לתחום של עיבוד שפה טבעית. במקרה בו משתמשים במדד tf-idf לword embedding, מילים שונות בעלות מרכזיות דומה בתוך כל מסמך יהיו קרובות זו לזו מבחינת ייצוגם המתמטי.

זיהוי מילות עצירה: מילים אשר מופיעות בכל המסמכים בניתוח מתאפיינות במדד idf=0, וכאלה אשר מופיעות ברובם מתאפיינות במדד idf קרוב יחסית לאפס. לפיכך, סינון מילים בעלות מדדי idf או tf-idf נמוכים יחסית מאפשרות לנפות מילים נפוצות, כמו "אֶת" "הוא" "אשר". מילים אלו לרוב אינן מכילות מידע משמעותי, ונהוג לכנותם בעגה של למידת מכונה "מילות עצירה". כתהליך קדם-עיבודי Pre-processing בעיבוד שפה טבעית נהוג להסיר מילות עצירה, מאחר שהן עלולות לשבש ביצועי מודלים לניתוח שפה טבעית. 

== ראו גם ==
* כריית טקסט

== הערות שוליים ==

קטגוריה:למידת מכונה