Читать нас в Telegram

TF-IDF — произведение двух множителей. Чем важнее слово для определения темы документа внутри коллекции, тем больше произведение. Первый множитель — частота слова (термина) в документе. Это TF — term frequency. Второй множитель — IDF — inverse document frequency — число всех документов в коллекции, деленное на число документов с нужным термином. Так как IDF — дробь, чем меньше ее знаменатель, тем больше значение. Поэтому IDF слова растет, если в корпусе слово встречается «концентрированно», в небольшом числе текстов. Так IDF уменьшает значимость слов, которые в принципе встречаются часто во всех текстах корпуса. TF может получиться очень маленьким, а IDF — очень большим, и чтобы работать с числами в большом диапазоне, из IDF перед умножением на TF берут логарифм , но есть разные варианты итоговых формул. Мы предлагаем такой: TF-IDF = TF * log(IDF)

Разберем на примерах с яблоками

Пусть у нас есть два корпуса. Первый — про летний отдых, а второй — про фрукты. В корпусе текстов про летний отдых редко упоминаются яблоки (в 5 текстах из 250), в основном речь про бадминтон и серфинг. Зато там есть текст про дачу и сбор урожая, «яблоко» встречается в нем 20 раз. Для «дачного» текста «яблоко» описывает тему документа.
В корпусе про фрукты яблоки встречаются часто: в 200 текстах из 250. Зато текст, который мы наугад взяли из этого корпуса — про цитрусовые, и яблоко там встречается всего десять раз, когда его сравнивают с апельсинами. В этом тексте «яблоко» не описывает тему документа.

Частота термина в тексте про дачу — 20/100 = 0.2 (считаем, что в каждом тексте по сто слов)
Частота термина в тексте про цитрусовые — 10/100 = 0.1
В корпусе про летний отдых яблоки — в 5 текстах из 250. Обратная частота документов (IDF) = 250/5 = 50. log(IDF) = log(50) = 1.69.
В корпусе про фрукты яблоки — в 200 текстах из 250. IDF = 250/200 = 1,25. log(IDF) = log(1,25) = 0,096
В корпусе, где яблоки «сгруппировались» в паре текстов TF-IDF = 0,2 * 1,69 = 0,338
В корпусе, где яблоки «размазаны» по документам TF-IDF = 0,1 * 0,096 = 0,0096
Высокий TF-IDF показал, что слово важно для понимания темы.

Где это используют?

Самое широкое использование TF-IDF раньше имел в поиске: там важно понимать, какие статьи релевантны запросу пользователя. Вместе с другими идеями TF-IDF позволяет перевести текст в числовые вектора, между которыми можно измерить расстояние (и понять, где в нашей системе координат очутился текст) — так можно решать задачу классификации и кластеризации текстов по их содержанию.

Если вас заинтересовал этот термин, рекомендуем также почитать: