如何将语义聚类生成的多个独立列表合并为一个列表?
文本聚类结果合并问题解决方法
问题场景
使用SentenceTransformer结合KMeans完成文本聚类后,已得到5个独立的聚类子列表,但尝试合并时仅获取到最后一个子列表,目标是生成包含所有聚类子列表的统一列表。
错误尝试代码
list2=[] for i in cluster: list2.append(i) list2
错误结果
['A monkey is playing drums.', 'Someone in a gorilla costume is playing a set of drums.']
错误原因
你循环的cluster变量是之前打印聚类结果时的循环变量,循环结束后它仅保留最后一个聚类的子列表。此时for i in cluster是遍历该子列表中的每一个句子,最终得到的是最后一个聚类的句子集合,而非包含所有聚类子列表的大列表。
正确解决方法
其实示例代码中已经生成了包含所有聚类子列表的统一列表clustered_sentences,直接使用该变量即可。如果需要手动构建,代码如下:
方法1:直接复用已有变量
# 示例代码中已生成的clustered_sentences就是包含所有聚类的统一列表 all_clusters = clustered_sentences
方法2:手动遍历构建
all_clusters = [] # 遍历所有聚类子列表,将每个子列表加入统一列表 for cluster in clustered_sentences: all_clusters.append(cluster)
正确结果示例
[ ['The girl is carrying a baby.', 'The baby is carried by the woman'], ['A man is riding a horse.', 'A man is riding a white horse on an enclosed ground.'], ['A man is eating food.', 'A man is eating a piece of bread.', 'A man is eating pasta.'], ['A cheetah is running behind its prey.', 'A cheetah chases prey on across a field.'], ['A monkey is playing drums.', 'Someone in a gorilla costume is playing a set of drums.'] ]
内容的提问来源于stack exchange,提问作者xavi
相关产品推荐
相关产品推荐

