Kev*_*Lee 8 python nlp cluster-analysis text-mining
我是文本挖掘的新手,这是我的情况。假设我有一个单词列表 ['car', 'dog', 'puppy', 'vehicle'],我想将单词分为 k 组,我希望输出为 [['car', 'vehicle'] ]、['狗'、'小狗']]。我首先计算每个成对单词的相似度得分,以获得 4x4 矩阵(在本例中)M,其中 Mij 是单词 i 和 j 的相似度得分。将单词转换为数字数据后,我利用不同的聚类库(例如sklearn)或自己实现它来获取单词簇。
我想知道这种方法有意义吗?另外,k的值如何确定呢?更重要的是,我知道存在不同的聚类技术,我在想我是否应该使用 k-means 或 k-medoids 进行词聚类?
遵循Brian O'Donnell的答案,一旦您计算了与word2vec(或FastText或GLoVE等)的语义相似度,您就可以使用 来对矩阵进行聚类sklearn.clustering。我发现对于小矩阵,谱聚类给出了最好的结果。
值得记住的是,词向量通常嵌入在高维球体上。具有欧几里得距离矩阵的 K 均值无法捕获这一点,并且可能会导致非直接相邻单词的相似性结果不佳。
如果您想通过“语义相似性”(即含义的相似性)对单词进行聚类,请查看 Word2Vec 和 GloVe。Gensim 有 Word2Vec 的实现。Radim Rehurek 的这个网页“Word2Vec 教程”提供了有关使用 Word2Vec 确定相似单词的教程。