
Александр Никитин
Positive Technologies
Как мы решали задачу кластеризации событий с текстовыми полями на C# с жестким требованием к производительности — 30 000 штук за 200 мс.
Вы узнаете, почему важно начинать с доменного анализа, а не с технических деталей. Покажу, как метод декомпозиции через заполнение пробелов помог разбить задачу на этапы: нормализацию, токенизацию, фичаризацию и кластеризацию. Поделюсь нашим опытом тестирования готовых решений (ML.NET, Accord.NET) и объясню, почему пришлось разрабатывать собственный алгоритм.
Разберем математическую основу «похожести» текстов, принципы работы алгоритмов кластеризации (k-means, mean shift, DBSCAN) — всё наглядно. Ну и, конечно же, код и бенчмарки на каждом этапе.
В заключение отмечу: даже если готовых решений нет, это не повод сдаваться. Иногда лучший выход — изобрести свой подход.
Positive Technologies