TF-IDF (Term Frequency-Inverse Document Frequency) — это один из ключевых методов анализа текста, который помогает поисковым системам и маркетологам определять значимость слов в контексте документа или целого корпуса текстов. В этой статье мы разберём не только математическую основу метода, но и его практическое применение в SEO, машинном обучении и информационном поиске.
Что такое TF-IDF: разбираем формулу
Метод TF-IDF состоит из двух компонентов, которые оценивают важность слова с разных ракурсов:
- TF (Term Frequency) — частота встречаемости термина в документе
- IDF (Inverse Document Frequency) — обратная частота документа, показывающая редкость слова в коллекции
Формула расчёта:
TF-IDF(t,d,D) = TF(t,d) × IDF(t,D)
Как рассчитывается Term Frequency
Существует несколько подходов к расчёту TF:
- Простая частота: count(t,d)
- Нормализованная частота: count(t,d) / len(d)
- Логарифмическое масштабирование: log(1 + count(t,d))
Пример: если слово «алгоритм» встречается 15 раз в документе из 300 слов, его TF будет:
- Простая частота: 15
- Нормализованная: 15/300 = 0.05
- Логарифмическая: log(1+15) ≈ 1.204
Расчёт Inverse Document Frequency
IDF вычисляется по формуле:
IDF(t,D) = log( |D| / (1 + |{d∈D:t∈d}|) )
Где:
- |D| — общее количество документов в коллекции
- |{d∈D:t∈d}| — количество документов, содержащих термин t
Практическое применение TF-IDF
1. Поисковые системы и ранжирование
TF-IDF используется в поисковых алгоритмах для:
- Определения релевантности документа запросу
- Выявления ключевых слов в документе
- Фильтрации стоп-слов (предлогов, союзов)
2. SEO-оптимизация контента
Маркетологи применяют TF-IDF для:
- Анализа топовых страниц конкурентов
- Выявления недостающих значимых терминов
- Оптимизации плотности ключевых слов
- Создания тематически насыщенного контента
3. Машинное обучение и NLP
В задачах обработки естественного языка TF-IDF используется как:
- Метод векторизации текста
- Признаковое пространство для классификации
- Основа для более сложных моделей (BM25, TF-IDF++)
Реализация TF-IDF в Python
Рассмотрим два популярных способа расчёта TF-IDF:
1. Использование Scikit-learn
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"текст первый о поисковой оптимизации",
"второй документ рассказывает про машинное обучение",
"третий текст содержит информацию и про SEO, и про ML"
]
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(corpus)
2. Ручная реализация
import math
from collections import Counter
def compute_tf(text):
tf_text = Counter(text.split())
for i in tf_text:
tf_text[i] = tf_text[i]/len(text.split())
return tf_text
def compute_idf(word, corpus):
return math.log10(len(corpus)/sum([1 for i in corpus if word in i]))
def compute_tfidf(corpus):
documents = [i.split() for i in corpus]
tfidf = {}
for doc in documents:
for word in doc:
tf = compute_tf(' '.join(doc))[word]
idf = compute_idf(word, corpus)
tfidf[(word, tuple(doc))] = tf*idf
return tfidf
Ограничения и современные альтернативы
Хотя TF-IDF остаётся популярным методом, у него есть недостатки:
- Не учитывает семантические связи между словами
- Игнорирует порядок слов в документе
- Плохо работает с короткими текстами
- Не адаптируется к конкретной предметной области
Современные альтернативы включают:
- Word2Vec и другие word embedding’и
- BERT и трансформерные модели
- Методы тематического моделирования (LDA, NMF)
- Графовые подходы к анализу текста
Продвинутые техники работы с TF-IDF
1. Анализ n-грамм
Вместо отдельных слов можно анализировать словосочетания:
TfidfVectorizer(ngram_range=(1,3))
2. Подбор оптимальных параметров
Важные параметры для настройки:
- max_features — ограничение количества признаков
- min_df/max_df — фильтрация редких/частых терминов
- norm — тип нормализации векторов
3. Визуализация результатов
Для анализа можно использовать:
- Тепловые карты важности терминов
- Облака тегов с весами TF-IDF
- Графики распределения весов
Кейсы применения TF-IDF в SEO
Кейс 1: Оптимизация страницы под коммерческий запрос
Анализ TF-IDF топ-10 страниц по запросу «купить iPhone 15» позволил:
- Выявить 12 значимых терминов, отсутствующих на странице клиента
- Увеличить видимость страницы с 8 на 3 позицию
- Повысить CTR на 40% за счёт релевантного сниппета
Кейс 2: Улучшение информационной статьи
Применение TF-IDF к статье «Как выбрать ноутбук» показало:
- Избыток общих терминов («хороший», «важный»)
- Недостаток специфических характеристик (IPS матрица, TDP процессора)
- После доработки время на странице увеличилось на 35%
Инструменты для анализа TF-IDF
Популярные решения для SEO-специалистов:
Инструмент | Возможности | Цена |
---|---|---|
SEMrush | Анализ TF-IDF конкурентов | От $99/мес |
Ryte | Рекомендации по контенту | От €290/мес |
TextTools | Ручной расчёт TF-IDF | Бесплатно |
Частые ошибки при работе с TF-IDF
- Переоптимизация — искусственное нагнетание терминов с высоким весом
- Игнорирование контекста — добавление слов без учёта их смысла
- Работа с маленьким корпусом — анализ менее 10 документов даёт недостоверные результаты
- Неучёт синонимов — разные формы одного слова считаются отдельно