对于给定的单词,预测聚类并从聚类中获取最近的单词

问题描述 投票:0回答:1

我已按照给出此链接的说明对我的语料库进行了w2v和k-means的培训。

https://ai.intelligentonlinetools.com/ml/k-means-clustering-example-word2vec/

我要执行的操作一种。查找给定单词的集群IDb。从给定单词的聚类中获取最接近的20个单词。

我已经弄清楚了如何在给定簇中的单词。我想要的是找出在给定簇中与我给定单词更接近的单词。

感谢您的任何帮助。

python-3.x cluster-analysis k-means word2vec supervised-learning
1个回答
1
投票

您的链接指南根据其给定的数据有些误导。仅凭30个单词的语料库就无法获得有意义的100维单词向量(默认为gensim Word2Vec类)。这样的模型的结果将是无稽之谈,对于聚类或其他下游步骤毫无用处-因此,任何旨在显示此过程并具有真实结果的教程都应使用更多的数据。

如果实际上您正在使用更多的数据,并且成功地对单词进行了聚类,则Word2Vec模型的most_similar()函数将为您提供任何给定输入单词的前N个(默认为10个)最近的单词。 (具体来说,它们将以(word, cosine_similarity)元组的形式返回,并按最高cosine_similarity的顺序排列。)

Word2Vec模型当然不考虑聚类的结果,因此您必须过滤这些结果以丢弃感兴趣的聚类之外的单词。

我假设您有一些查找对象cluster,对于cluster[word],该对象将为您提供特定单词的群集ID。 (这可能是字典,或者是对提供的向量执行KMeans模型predict()的操作。)total_words是模型中单词的总数。 (例如:total_words = len(w2v_model.wv)。那么您的逻辑应该大致类似于

target_cluster = cluster[target_word]
all_similars = w2v_model.wv.most_similar(target_word, topn=total_words)
in_cluster_similars = [sim for sim in all_similars 
                       if cluster[sim[0]] = target_cluster]

如果只想获得前20名的结果,则剪辑到in_cluster_similars[:20]

© www.soinside.com 2019 - 2024. All rights reserved.