我需要从不同供应商的目录数据中集中不同的部件描述。我试图找到一种“方法”,可以检测类似描述的集群,以便将它们组合在一起。
这是一个零件编号的样本数据集,即
A100: ["COCPIT VOICE RECORDER", "RECORDER", "VOICE RECORDER","BELT", "REGULARTOR BELT", "OXIGEN REGULATOR", "BULB", "OXIGEN REG"]
聚类的预期结果将是:
Cluster 1: ["COCPIT VOICE RECORDER", "RECORDER", "VOICE RECORDER"],
Cluster 2 : ["BELT"],
Cluster 3: ["OXIGEN REG", "OXIGEN REGULATOR"],
Cluster 4: ["BULB"]
或其变体。
我从未有过这方面的经验,但我对ML的基础研究表明,您需要做的第一件事就是从数据中提取特征,以便我尝试提出一些功能......
我的特征提取方法是使用相似度函数(即编辑距离或Levenstain距离)或Jaro Winkler距离来比较这些部分中的每一个。
然后我的想法是使用KMeans算法来查找群集? 如果这个功能选择好吗? 有关特征提取或解决此问题的任何其他想法? 谢谢!
答案 0 :(得分:0)
我做了类似的事情,其中我的特征向量是每个产品描述包含每个字典单词的次数(因此对于每个条目,你得到一个长向量,大多数为0,带有几个1或2)。然后,您可以将其提供给您选择的聚类算法(我也使用了kmeans)。
在python中,一般的想法是:
# loop over all descriptions to get word list
allWords = {}
for productDesc in products :
for word in productDesc.split(" ") :
if(not word in words) :
words[word] = 0
# build a vector for each description
matrix = []
for productDesc in products :
vec = words.copy()
for word in productDesc.split(" ") :
vec['word'] = vec['word'] + 1
matrix.append(vec)
一旦有了这样的特征矩阵,就可以使用自己喜欢的聚类算法,为此我会直接使用kmeans,或者计算相似度矩阵(对于矩阵中的每对行,计算共同的单词数)然后使用谱聚类。