![введите здесь описание изображения][1]
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.001, min_samples=10)
clustering = dbscan.fit(X)
Примеры векторов:
array([[ 0.05811029, -1.089355 , -1.9143777 , ..., 1.235167 ,
-0.6473859 , 1.5684978 ],
[-0.7117326 , -0.31876346, -0.45949244, ..., 0.17786546,
1.9377285 , 2.190525 ],
[ 1.1685177 , -0.18201494, 0.19475089, ..., 0.7026453 ,
0.3937522 , -0.78675956],
...,
[ 1.4172379 , 0.01070347, -1.3984257 , ..., -0.70529956,
0.19471683, -0.6201791 ],
[ 0.6171041 , -0.8058429 , 0.44837445, ..., 1.216958 ,
-0.10003573, -0.19012968],
[ 0.6433722 , 1.1571665 , -1.2123466 , ..., 0.592805 ,
0.23889546, 1.6207514 ]], dtype=float32)
X — это model.wv.vectors, сгенерированный из model = word2vec.Word2Vec(sent, min_count=1,size= 50,workers=3, window =3, sg = 1)
Результаты следующие:
массив([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1])
-1
? Кроме того, согласно документамDBSCAN
, он предназначен для возврата-1
для «шумных» сэмплов, которые не входят ни в один из кластеров «высокой плотности». Возможно, ваши слова-векторы распределены настолько равномерно, что нет кластеров «высокой плотности». (На каких данных вы тренируете слова-векторы и насколько велик набор слов-векторов? Проверяли ли вы, что слова-векторы кажутся разумными/полезными с помощью других проверок?) - person gojomo   schedule 16.01.2020model.wv.init_sims()
, затем используйтеmodel.wv.vectors_norm
вместоmodel.wv.vectors
.) Наконец,min_count=1
обычно приводит к худшим векторам слов, чем более высокое значениеmin_count
, которое отбрасывает слова с таким небольшим количеством примеров использования. Редкие слова не могут получить сильные векторы, и их обучение также мешает улучшению векторов других более частых слов. - person gojomo   schedule 16.01.2020DBSCAN
с большим количеством «шумных» результатов. - person gojomo   schedule 17.01.2020Word2Vec
целей. Это размер корпуса или количество уникальных слов? Имея небольшой корпус или небольшое количество уникальных слов, но все же несколько различных примеров каждого слова, вы, возможно, сможете получить полезныеWord2Vec
результаты с меньшимиsize
измерениями и большим количествомepochs
обучающих проходов, но это не точно. Удалось ли вам проверить векторы на полезность отдельно от кластеризации, путем выборочной проверки, имеют ли смыслmost_similar()
соседи векторов в соответствии с вашим пониманием предметной области? - person gojomo   schedule 17.01.2020min_count
(наблюдая, чтобы точно увидеть, насколько это еще больше сжимает эффективный корпус); (2) ещеepochs
; (3) меньшеsize
измерений. (Возможно также: большееwindow
илиnegative
.) Затем также, используяvectors_norm
(чтобы переместить все векторы в точки на «единичной сфере» для большего контраста с учетомDBSCAN
евклидовых окрестностей). Затем также поработайте с параметрамиDBSCAN
, чтобы сделать их более чувствительными. - person gojomo   schedule 17.01.2020Word2Vec
работало хорошо, а кластеризацияDBSCAN
может не подходить для еще более сильных векторовWord2Vec
, если только у вас нет какой-то внешней причины полагать, что эти алгоритмы являются правильными для ваших данных/проблемной области. Почему вы хотите создать фиксированное количество кластеров из этих векторов слов? - person gojomo   schedule 17.01.2020