给定一个单词列表,如何开发一种语法分组的算法方法?

时间:2017-06-26 04:21:45

标签: algorithm cluster-analysis k-means similarity hierarchical-clustering

我正在使用Google Places API,它们包含97个不同位置的list个。我想将位置列表减少到更少的数量 其中很多都是可归属的。例如,atmbank进入financial; templechurchmosquesynagogue加入worship; schooluniversity加入education; subway_stationtrain_stationtransit_stationgas_station加入transportation

但是,它不应该过度概括;例如,pet_storecity_hallcourthouserestaurant类似于buildings

我尝试了很多方法来做到这一点。首先,我从多个词典中下载列表中97个单词的每个单词的同义词。然后,我发现两个单词之间的相似性基于它们共有的独特同义词的几分之一(Jaccard相似度):

enter image description here

但在那之后,我如何将单词分组?使用传统的聚类方法(k-means,k-medoid,层次聚类和FCM),我没有得到任何好的聚类(我通过手动扫描结果确定了几个错误分类):

enter image description here enter image description here

我甚至尝试过在Google新闻数据上训练的word2vec模型(其中每个单词都表示为300个功能的向量),我也没有基于此获得良好的集群: enter image description here

2 个答案:

答案 0 :(得分:1)

您可能正在寻找与向量空间维数减少相关的内容。在这些技术中,您需要一个文本语料库,它将位置用作文本中的单词。然后,维度减少将这些术语组合在一起。您可以对Latent Dirichlet Allocation和Latent语义索引进行一些阅读。一个很好的参考是" Introduction to Information Retrieval"作者Manning等人,第18章。请注意,这本书是从2009年开始的,所以没有取得很多进展。正如您所指出的,有很多工作,如word2vec。另一个很好的参考是" Speech and Language Processing"作者:Jurafsky和Martin,第16章。

答案 1 :(得分:1)

您需要更多更多数据。

如果没有其他数据,任何算法都不会将ATMbankfinancial相关联。因为这需要这些术语的知识

Jaccard相似性无法访问这些知识,它只能对单词起作用。然后"河岸"和"银行分行"非常相似。

所以不要期望算法会发生魔法。你需要神奇的数据......