首页 文章

聚类python中的单词列表

提问于
浏览
1

我是文本挖掘的新手,这是我的情况 . 假设我有一个单词列表['car','dog','puppy','vehicle'],我想将单词分成k组,我希望输出为[['car','vehicle' ],['狗','小狗']] . 我首先计算每个成对词的相似性得分以获得4×4矩阵(在这种情况下)M,其中Mij是词i和j的相似性得分 . 在将单词转换为数字数据之后,我利用不同的聚类库(例如sklearn)或者自己实现它来获得单词簇 .

我想知道这种方法有意义吗?此外,我如何确定k的值?更重要的是,我知道存在不同的聚类技术,我在想是否应该使用k-means或k-medoids进行单词聚类?

3 回答

  • 2

    通过Brian O'Donnell跟进答案,一旦您使用word2vec(或FastTextGLoVE,...)计算了语义相似度,就可以使用sklearn.clustering对矩阵进行聚类 . 我发现对于小矩阵,谱聚类可以得到最好的结果 .

    值得注意的是,单词向量通常嵌入在高维球体上 . 具有欧几里德距离矩阵的K均值无法捕获这一点,并且可能导致不是直接邻居的单词的相似性的差的结果 .

  • 0

    如果你想通过"semantic similarity"(即它们的含义相似)来聚集单词,请看一下Word2Vec和GloVe . Gensim有Word2Vec的实现 . 这个由Radim Rehurek撰写的网页"Word2Vec Tutorial"提供了一个使用Word2Vec来确定相似单词的教程 .

  • 1

    除了已经说过的关于相似性得分的内容之外,在群集应用程序中找到 k 通常也得到scree plots(也称为"elbow curve")的帮助 . 在这些图中,您通常会测量y轴上的簇之间的分散度,以及x轴上的簇的数量 . 在scree图中找到曲线的最小值(二阶导数)可以更加客观地测量聚类"uniqueness."

相关问题