为什么kmeans簇中最近的单词与word2vec most_similar不同?

问题描述

当我通过kmeans对word2vec向量进行聚类时,我将它们可视化为最接近的词。 例如: 在kmeans群集中:

visualisation of kmeans cluster

food_processing_industry周围的词是:

公司餐饮,工程产品,农产品等,

在word2vec most_similar()中,我得到了:

[   ('cosmetic_industries',0.8980938196182251),('specialty_additives',0.8836650252342224),('plastics_industry',0.8787887096405029),('general_industries',0.8768037557601929),('industrial_segments',0.8759687542915344),('industries_ranging',0.8747726082801819),('semiconductor_industry',0.8737508058547974),('industrial_markets',0.8736472725868225),('dairy_industry',0.8736001253128052),('numerous_industries',0.8734968304634094)]

我希望这些most_similar单词与目标单词成一簇

这些most_similar()单词不在同一簇中,并且与目标单词相距甚远,但余弦相似度为0.8。那么我如何将它们聚集在一个集群中

解决方法

尚不清楚,没有代码,您是如何进行K-Means聚类的。所以那里可能有问题。

但是,任何减少到字向量的二维图形渲染(通常为100-400维或更多)的操作都会丢失最多个相对位置和相对距离信息。您只是希望您使用的方法能够在某些重要(主要是本地)规模上保留某些重要的邻域和关系。

目前尚不清楚您的渲染使用了哪种方法,也不清楚如何涉及K-Means聚类-因为这些点似乎仅仅是标记,而不是聚类名称,也没有其他颜色/等表示聚类

而且,在不了解单词向量是如何创建的更多信息的情况下,很难说出它们是否有用,或者在创建过程中可能存在问题。

认为哪个表观邻居更好?

most_similar()的结果对我来说并不可怕-所有邻居都是市场/行业/产品类别! –但最主要的邻居似乎与“食品加工”并没有特别的关系,目前尚不清楚这个词的宇宙是否已经全部是“ 所有”经济/工业用语(而不是所有自然语言词的完整词汇表) / normla文字中的概念)。

请注意,对于较小的语料库,或者不是第一种引入word2vec算法的同一种自由形式自然语言文本的语料库,可能很难用默认参数获得相同的有用相对关系,或完全没有。特别是,如果您的词汇量只有几千个单词/概念/类别,那么可能就不可能有100-400维的强大矢量。这些需要数万到数十万个不同单词的庞大的不同语料才能真正发挥作用。

所以我建议:

  • 首先要专注于获得most_similar()有用的结果。扩展数据,调整预处理或优化训练参数以实现目标。如果您有问题,请在询问问题时弄清楚正在执行的代码步骤以及数据和词汇的大小/特征。
  • 仅在核心向量在most_like()探针中似乎有用之后,您才应尝试额外的聚类。如果遇到问题,请显示代码并说明您的真实目标。
  • 不要期望2-D渲染能够揭示出如此多,非常多样的高维空间。借助良好的技术选择,您可能会在可视化效果中看到一些关于您期望的确认,或者一些您没有期望的显着关系。但是,漂亮且有意义的最终渲染通常是一系列较早的正确决策,仔细观察以及对更多原始结果进行调整的下游结果。它实际上不是指导实际决策或确认/使任何选择(除了可视化参数本身)无效的中间努力工具。