Скрипт неплохо подходит для кластеризации/чистки SEO ключей (семантического ядра). Поддерживает множество языков, имеется много бесплатных моделей.
Он кластеризует ключи (фразы) на основе заданного порога семантической близости и минимального количества «соседей» для создания кластера.
Скрипт доработан на основе этого примера, взятого с sBert.net: https://github.com/UKPLab/sentence-transformers/blob/master/examples/applications/clustering/fast_clustering.py
Он более удобный, а так же сохраняет фразы, которые не попали ни в один кластер в отдельный кластер с таким же именем фразы.
Описание параметров настройки
- files — здесь нужно указать файлы с ключами (например, phrases.txt)
- model_name — укажите, какую предобученную модель использовать (можно попробовать разные отсюда)
- min_community_size — минимальное количество фраз для создания кластера
- threshold — минимальный порог схожести фраз для выделения их в группу
Как узнать порог схожести фраз
В файле закомментирован кусок кода (get_similarity_cos) — нужно на вход подать 2 списка и он выдаст, какой у них порог схожести.
Запуск кластеризации
Скрипт доступен на моем github, а так же в Google Colab. Выбирайте любую, настраивайте и запускайте.
Результат будет сохранен в CSV файл с таким же названием (только расширение .csv), что и файл с фразами (или ключами, кому как удобнее).
Если есть какие-то вопросы — буду раз ответить на них в комментариях.