Pull to refresh

Comments 3

Любопытный результат.
Какой у Вас исходный размер словаря? Я полагаю, что 1-2 млн. слов (русский и английский с опечатками). Если бить такой словарь на 5 тысяч кластеров, то на кластер в среднем придётся по 400 слов. Но при этом, скорее всего, более половины из этих кластеров содержат в себе не более 5-ти слов — это редкие слова и несколько их вариантов с опечатками. Частотные слова, задающие общую лексику, наоборот, группируются в мощных кластерах.
Представим себе ситуацию, что мы бьём наш словарь на два миллиона кластеров, в каждом кластере — строго по слову. Такое разбиение даст 100% точность на тесте. И вообще, точность должна расти с падением числа слов на кластер вне зависимости от способа кластеризации. Что и наблюдаем.
Я полагаю, что при большом числе кластеров неявно решается задача исправления опечаток, аналогично этой:

Word: преключение Position in vocabulary: 124515

Word Cosine distance
— приключение 0.748698
преключения 0.726111
приключения 0.692828
приключеия 0.670168
прключение 0.666706
приключеня 0.663286
прключения 0.660438
приключени 0.659609

Дополнение:
У вас на графиках чётко виден шум кластеризации. Поскольку вы делите слова по кластерам строго, то получается, что для слов, находящихся на границе кластеров попадание в конкретный кластер — суть случайное событие. Изменяя количество кластеров, вы изменяете границы, вблизи которых слова случайным образом привязываются к кластерам. Иногда это случайное разбиение даёт лучший результат, иногда — худший. Вот и шум.

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

Решение в данном случае — бить слова на кластеры самостоятельно так, что бы слово имело отношение не к единственному кластеру, а к нескольким, с разными весами. Для задачи кластеризации разницы никакой нет, а вот шум вы уберете.
Спасибо за содержательные комментарии. Да, словари порядка 1,5 млн. слов. Совершенно согласен, что чем «тоньше» разбиение, тем лучше может быть точность. Но в данном случае хотелось примерно понять, насколько эта зависимость будет линейна и есть ли максимумы (наверно, имело смысл получить графики зависимостей «мощности» кластеров от разбиения). К тому же задача искать не точные совпадения, а реализовать а-ля ассоциативно-семантический поиск. Вообще изначально была мысль: а не существует ли оптимального набора «смыслов» на лексическом пространстве для каждого языка. Пока гипотеза не подтвердилась.

В общем, это решение «в лоб» уже дает результат. Скорее всего Вы правы, поиск центров кластеров и построение многомерного пространства должно улучшить результат. Вопрос, на сколько это утяжелит решение.
Sign up to leave a comment.

Articles