让我们有这样一个长列表:
list = ['computer','computers 12','old computer','laptop','lap top','laptops']
是否有方法将类似的字符串转换为类别到集群?对于较长的文本,像LDA这样的算法是基于单词而不是字符的。还有一个用于检查相似度的库,但它只是检查单词对的相似度。顺便说一下,我希望得到这样的输出:
output = [1,1,1,2,2,2]
其中1代表电脑,2代表笔记本电脑。
经过冗长的算法工作,我写了这样一个解。它只是为集群分配一个类似的名称,而不是数字。
import WordCluster
list = ['computer','computers 12','old computer','laptop','lap top','laptops']
wcu = WordCluster(list,4)
cluster_categories = wcu.find_cluster_categories()
categorized_words =wcu.categorize_all_words(self.cluster_categories)
print(
categorized_words)
结果是这样的。集群的名称是从我们的初始列表中自动生成的,"旧计算机"即是最后一种类似计算机的单词,"笔记本电脑"也用于后一个系列。
[{'word': 'computer', 'cluster': 'oldcomputer'},
{'word': 'computeri', 'cluster': 'oldcomputer'},
{'word': 'oldcomputer', 'cluster': 'oldcomputer'},
{'word': 'laptop', 'cluster': 'laptop'},
{'word': 'lap top', 'cluster': 'laptop'},
{'word': 'laptops', 'cluster': 'laptop'}]