TF-IDF (Term Frequency — Inverse Document Frequency) оценивает важность слова в отдельном документе относительно всей коллекции.
TF (Term Frequency) — как часто слово встречается в документе (локальная важность).
IDF (Inverse Document Frequency) — редкость слова во всей коллекции (глобальная важность). Чем в большем количестве документов встречается слово, тем ниже его IDF.
Итоговая формула (упрощенно): TF-IDF = TF * IDF
Смысл: слово важно для документа А, если оно часто встречается внутри А, но редко — во всех остальных документах коллекции.
Что такое c-TF-IDF (class-based TF-IDF)
c-TF-IDF был предложен в контексте библиотеки BERTopic для тематического моделирования. Буква c означает class (класс) или cluster (кластер).
В классическом TF-IDF документы — это отдельные тексты.
В c-TF-IDF все документы внутри одного кластера (темы) сливаются в один «мега-документ» (класс). Затем вычисляется TF-IDF не для отдельных документов, а для этих классов.
Упрощенная формула c-TF-IDF для слова t в классе c:
Где:
freq_{t,c} — частота слова t внутри класса c (как обычный TF).
A — среднее количество слов во всех классах.
freq_{t} — частота слова t во всех классах.
Ключевое отличие от TF-IDF: мы сравниваем не документы, а целые классы (темы).
Главные отличия c-TF-IDF от TF-IDF (таблица)
Параметр
Классический TF-IDF
c-TF-IDF
Единица анализа
Один документ (статья, пост, абзац)
Кластер/группа документов (объединенная тема)
Цель
Найти слова, важные для конкретного документа
Найти слова, важные для конкретной темы (кластера) по сравнению с другими темами
Простой пример:
Представьте, что у нас 1000 новостей: 500 про спорт, 500 про политику.
TF-IDF для одной спортивной новости выделит слова: «футбол», «гол», «матч» (уникальные для этой новости внутри всех 1000).
c-TF-IDF для кластера «Спорт» объединит все 500 спортивных новостей и покажет: «футбол», «баскетбол», «теннис», «победа». А слова вроде «Байден» или «закон» получат низкий вес, потому что они характерны для кластера «Политика».
Это алгоритм или модель?
Правильнее назвать это алгоритмом взвешивания или методом извлечения признаков. Это не модель машинного обучения (нет обучаемых параметров с градиентами), а детерминированная формула.
Однако в составе библиотек (BERTopic, Top2Vec) он используется как модуль модели тематического моделирования. Поэтому в разговоре можно сказать «модель c-TF-IDF» как часть пайплайна, но технически это алгоритм.
Применение в SEO
Здесь c-TF-IDF дает огромные преимущества перед обычным TF-IDF для задач семантического анализа групп страниц.
Классический SEO-подход: взять конкурента и сравнить TF-IDF его страницы со своей. (Плохо: много шума, нужно вручную выбирать страницу-образец).
SEO с c-TF-IDF (через кластеризацию):
Вы собираете топ-20 страниц конкурентов по ключевому запросу (например, «как починить смеситель»).
Кластеризуете эти страницы по смыслу (BERTopic). Получаете кластеры: «инструменты», «типы поломок», «видеоинструкции», «вызов мастера».
Запускаете c-TF-IDF для каждого кластера. На выходе:
Кластер «инструменты»: разводной ключ, шланг, прокладка, фум-лента (высокий вес c-TF-IDF).
Понимание структуры ниши: какие смысловые кластеры существуют в выдаче.
Контент-план: для каждой темы (кластера) вы получаете уникальный словарь терминов, который нужно использовать на отдельной странице.
Снижение каннибализации: если вы напишете одну статью и про «инструменты», и про «вызов мастера», то по обоим кластерам вы получите низкий c-TF-IDF (низкую релевантность конкретной теме). Алгоритм подскажет вам разделить контент на разные страницы.
Выявление лакун: если в выдаче есть кластер, который вы не покрываете, значит, можно создать под него страницу и легко продвинуться.
Применение в NLP
Здесь c-TF-IDF — стандарт для интерпретируемого тематического моделирования (в отличие от «черного ящика» нейросетей).
Основные задачи:
Извлечение ключевых слов для темы. После кластеризации тысяч документов вы просто берете топ-10 слов с наивысшим c-TF-IDF — и у вас готовое, осмысленное описание темы (в отличие от LDA, где часто получается каша).
Уменьшение размерности для визуализации. c-TF-IDF превращает кластер (сотни текстов) в компактный вектор признаков, который можно показать на графике.
Сравнение тем во времени. Вы кластеризуете новости за каждый месяц отдельно, считаете c-TF-IDF для слов «ковид», «вакцина», «локдаун» и смотрите, в каком месяце эти слова становились главными для темы «медицина».
Пример кода с BERTopic:
from bertopic import BERTopic
# Ваши тексты
docs = ["текст1", "текст2", ...]
# Модель сама кластеризует и внутри использует c-TF-IDF
topic_model = BERTopic()
topics, probs = topic_model.fit_transform(docs)
# Смотрим результат c-TF-IDF для каждой темы
topic_model.get_topic_info()
# Тема 0 (слово1, c-TF-IDF=0.8), (слово2, c-TF-IDF=0.75)...
Резюме
TF-IDF — «какое слово важно в этом одном документе».
c-TF-IDF — «какое слово важно для всей темы, объединяющей похожие документы».
В SEO помогает строить кластерный контент-план и бороться с каннибализацией.
В NLP используется в BERTopic и других моделях для чистого выделения тем и их интерпретации.
Это не революция, но очень элегантное улучшение классического TF-IDF под задачи кластеризации.