Pull to refresh

Comments 5

Понятно, что это пример, поэтому он довольно дубовый.

У меня есть вопрос по близкой задаче. Нужно кластеризовать пользовательский ввод (свести к словарю имен). Каждая строка это одно или несколько названий фирм/банков/организаций, с разделителями и без, часто с сокращениями, опечатками, неполные. Что можете посоветовать? Я пробовал DbScan с разными функциями расстояний типа левенштейна, но толку не много.

попробуйте получать эмбеддинги с помощью моделей трансформеров https://www.sbert.net/docs/usage/semantic_textual_similarity.html, которые ищут семантическую близость, это занимает больше времени для анализа, но результаты получаются довольно хорошие, особенно в связке с umap, если подобрать размерность.

Добрый день!

DBSCAN с Левенштейном должен был выделить явные кластеры при их наличии. Если не пробовали, точно стоит поиграться с весами операций (например сделать дешевле добавление символа, чтобы сгруппировать сокращения). Конкретнее на вопрос без более подробного описания, что не так с результатами DBSCAN, ответить не можем.

Спасибо. Допустим есть два банка: Capital One Bank N.A. и Bank of America. И примеры пользовательского ввода: "capital one", "cap one", "capital one bank", "capital one bank na", "capital one / bofa", "bofa", "bnk of america" и так далее, иногда есть разделитель, иногда нет. Надо весь этот ввод разобать и построить список банков. В реальности этих имен там очень много, это все банки, коллекторские организации, кредитные программы, названия магазинов и тп.

Добрый день!

Извините, задержались с ответом.

Данные очень грязные, поэтому неудивительно что ливенштейн с дбсканом мало чем помог. Также мало чем помогут модели трансформеры, поскольку примеры, которые вы ввели они будут считать за один кластер, чего вам не нужно. Поэтому можем предложить вариант без кластеризации, но основанный на регулярных выражених, например вытянуть все слова с большой буквы, чтобы их взять за нормальную форму, чтобы понять какие названия присутствуют в данных. Или искать все слова перед и после определенного слова, например до и после слова bank. И так искать организации, затем сокращения на подобии bofa приводить к виду Bank of America. И так с каждой сущностью.

Кластеризация с помощью BERT или SBERT помогут выделить прям явно отличающиеся кластеры, и уже в них можно искать отдельные сущности.

Надеемся, что совет вам пригодиться.

Sign up to leave a comment.

Articles