我使用hdbscan对来自BERT的嵌入输出进行集群,它接收的数据文件的聊天消息超过150 k。嵌入过程花了4分钟多一点时间,但在本文撰写之时,hdbscan集群过程花费了超过1小时,看不到尽头。
在我看来,奇怪的是,当我查看系统资源消耗(我在Windows 10上)时,我正在运行的脚本只占用7%的CPU (i9-10850 K)和1.2GB内存(在128 i9内存中)。所以我有几个问题
最后,这是代码FYI。
data = parseMessages('raw-data-150k-new-delim.txt', 'ð')
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
embeddings = model.encode(data, show_progress_bar=True, convert_to_tensor=True)
clusters = hdbscan.HDBSCAN(
min_cluster_size=15,
min_samples=15,
metric='euclidean',
cluster_selection_method='eom').fit(embeddings)谢谢!!
发布于 2021-12-12 18:53:30
与语句-BERT的输出相比,hdbscan更倾向于低维数据。最终,hdbscan库希望使用KDTrees of BallTrees进行高效的最近邻查询,而这些查询在50个维度或更少的维度上工作得最好。对于更高维度的数据,库默认使用更慢、更昂贵的代码路径。为了更快地运行,最好的方法是减少数据的维数。在我(高偏倚)的观点中,UMAP将是实现这一目标的好方法,但您也可以尝试PCA或其他降维技术。
https://datascience.stackexchange.com/questions/101730
复制相似问题