Size: a a a

Natural Language Processing

2019 November 08

V

Victor in Natural Language Processing
источник

AC

Alexey Chaley in Natural Language Processing
Возможно, еще кому-то будет полезно

https://github.com/sungjinl/icassp2019-ood-dataset
источник

AE

Anton Eryomin in Natural Language Processing
Коллеги, а какие алгоритмы кластеризации кроме Kmeans, можно использовать в следующей ситуации. Есть примерно 900к векторов, размерность вектора (100), вектор получается из w2v.
источник

m

mel kaye in Natural Language Processing
множество их
источник

T

Teemoor in Natural Language Processing
Anton Eryomin
Коллеги, а какие алгоритмы кластеризации кроме Kmeans, можно использовать в следующей ситуации. Есть примерно 900к векторов, размерность вектора (100), вектор получается из w2v.
hdbscan например
источник

T

Teemoor in Natural Language Processing
количество кластеров неопределено же?
источник

AE

Anton Eryomin in Natural Language Processing
к сожалению нет (
источник

AE

Anton Eryomin in Natural Language Processing
т.е. сейчас попыка на основе метрики силуета подобрать оптиальное количество
источник

AE

Anton Eryomin in Natural Language Processing
проблема в том, что обучении на 500 кластеров занимает порядка 6 часов
источник

AE

Anton Eryomin in Natural Language Processing
что просто ужасно
источник

D(

David (ddale) Dale in Natural Language Processing
Anton Eryomin
Коллеги, а какие алгоритмы кластеризации кроме Kmeans, можно использовать в следующей ситуации. Есть примерно 900к векторов, размерность вектора (100), вектор получается из w2v.
Мне нравится Birch. Он требует линейного времени и относительно небольшой (O(n_clusters), но с оговорками) памяти. Им можно твой миллион векторов разбить на много маленьких кластеров довольно быстро.
А дальше эти маленькие кластеры любым твоим любимым алгоритмом кластеризовать ещё раз в большие.
источник

AE

Anton Eryomin in Natural Language Processing
нужно попробовать, спасибо за наводку!
источник

DK

Denis Kirjanov in Natural Language Processing
affinity propagation обычно хорошо на таком заходит еще
источник

D(

David (ddale) Dale in Natural Language Processing
Anton Eryomin
нужно попробовать, спасибо за наводку!
Единственный подводный камень: если будешь брать имплементацию birch из sklearn, указывай compute_labels=False, иначе можешь вывалиться по памяти.
Как раз на шаге compute_labels он почему-то линейную память запрашивает. Поэтому надо обучать Birch без compute_labels, а дальше вычислять лейблы для твоих наблюдений методом predict с небольшими батчами.
источник

AE

Anton Eryomin in Natural Language Processing
спасибо большое за совет! сейчас буду пробовать
источник

I🍵

Iván 🍵 in Natural Language Processing
Denis Kirjanov
affinity propagation обычно хорошо на таком заходит еще
Ниче себе, я думал этот алгоритм для красоты придумали, судя по метрикам точности и времени работы, что я видел :))
источник

D(

David (ddale) Dale in Natural Language Processing
Iván 🍵
Ниче себе, я думал этот алгоритм для красоты придумали, судя по метрикам точности и времени работы, что я видел :))
ну вот мне тоже кажется, что для миллиона точек affinity propagation будет медленноват - вроде как он считает расстояние от каждой до каждой, а миллион в квадрате расстояний - это уже не шутки
источник

DK

Denis Kirjanov in Natural Language Processing
Iván 🍵
Ниче себе, я думал этот алгоритм для красоты придумали, судя по метрикам точности и времени работы, что я видел :))
Не, ну я миллионы и вправду не считал
Но кластеризация скажем тысяч новостей и отзывов была ок
И это был оффлайн-прогон для рисеча, а не онлайн продакшн

Но качество было лучше тех же k-means
источник

AE

Anton Eryomin in Natural Language Processing
Да к минс то в целом хорош, но уж больно медленно считается (((
источник

D(

David (ddale) Dale in Natural Language Processing
Anton Eryomin
Да к минс то в целом хорош, но уж больно медленно считается (((
Ещё, кстати, один хак.
Если ты готов пожертвовать качеством во имя скорости, то можно обучающие данные сократить по обоим измерениям: сделать случайную выборку из строк, и сократить размерность столбцов каким-нибудь PCA.
Получишь кластеры чуть похуже, зато сильно побыстрее.
А потом, кстати, можно заморочиться и этими кластерами уже полноценный k-means инициализировать - авось, он так быстрее сойдется.
источник