对类似的单词短语进行分类

时间:2017-08-07 08:10:19

标签: machine-learning statistics nlp cluster-analysis hierarchical-clustering

我有一组单词短语,我想将它们分类为下面的例子中给出的。

示例:

adaptive and intelligent educational system
adaptive and intelligent tutoring system
adaptive educational system

对于人类而言,很容易理解上述3个单词短语应属于一个类别。

有没有简单的方法呢?

目前,我使用levenshtein距离使用亲和传播聚类算法如下。

words = np.asarray(words) #So that indexing with a list will work
lev_similarity = -1*np.array([[distance.levenshtein(w1,w2) for w1 in words] for w2 in words])

affprop = sklearn.cluster.AffinityPropagation(affinity="precomputed", damping=0.5)
affprop.fit(lev_similarity)
for cluster_id in np.unique(affprop.labels_):
    exemplar = words[affprop.cluster_centers_indices_[cluster_id]]
    cluster = np.unique(words[np.nonzero(affprop.labels_==cluster_id)])
    cluster_str = ", ".join(cluster)
    print(" - *%s:* %s" % (exemplar, cluster_str))

然而,我没有得到理想的输出。因此,请为我提出一个合适的方法来获得我想要的结果。

1 个答案:

答案 0 :(得分:0)

Levenshtein距离适用于角色。

从这个角度来看,"教育"和"辅导"尽可能地不同。

如果您想通过语义相似性进行聚类,请不要使用字符级别相似性​​。

不幸的是,语义相似性相当困难。你需要以某种方式使用庞大的知识库。例如,使用整个万维网来了解"辅导"和#34;教育"有关系。或者你可以尝试例如WordNet等。