Ответ
Да, я использовал TF-IDF в продакшен-системах для задач обработки естественного языка. Это был надежный и интерпретируемый метод для извлечения текстовых признаков.
Конкретные кейсы:
- Классификация обращений в поддержку: Автоматическая маршрутизация тикетов по категориям (например, "биллинг", "технические проблемы") на основе их текстового описания.
- Поиск похожих документов: Поиск дубликатов или релевантных статей в базе знаний внутри компании.
Пример реализации на Python (scikit-learn):
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
# Создание пайплайна: векторизация + модель
model_pipeline = Pipeline([
('tfidf', TfidfVectorizer(max_features=10000, ngram_range=(1, 2))),
('clf', LogisticRegression())
])
# Обучение на текстах и метках
model_pipeline.fit(train_texts, train_labels)
# Предсказание
predictions = model_pipeline.predict(new_texts)
Практические нюансы в продакшене:
- Предобработка: Качество сильно зависело от лемматизации/стемминга и очистки текста (удаление стоп-слов, спецсимволов).
- Масштабирование: Для очень больших корпусов использовал
HashingVectorizerкак более эффективную по памяти альтернативу. - Эволюция: Со временем в некоторых задачах TF-IDF был дополнен или заменен на эмбеддинги (например, из Sentence-BERT) для учета семантики, но он оставался отличным и быстрым baseline-решением.