用于聚类产品描述的ML方法

时间:2014-09-04 20:31:46

标签: algorithm machine-learning

我需要从不同供应商的目录数据中集中不同的部件描述。我试图找到一种“方法”,可以检测类似描述的集群,以便将它们组合在一起。

这是一个零件编号的样本数据集,即 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算法来查找群集? 如果这个功能选择好吗? 有关特征提取或解决此问题的任何其他想法? 谢谢!

1 个答案:

答案 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,或者计算相似度矩阵(对于矩阵中的每对行,计算共同的单词数)然后使用谱聚类。