我正在尝试根据预先训练的嵌入对单词进行聚类。我进行了一个简单的实验,获得了大约 100 个与“食物味道”相关的词,从预训练集中获得了词嵌入,并尝试对结果运行 k-means。
我确实在某些集群上得到了合理的结果,但在其他集群上却得到了非常奇怪的结果。例如:
Cluster 1: [fatty, oily, greasy] -- (good)
Cluster 2: [crumbly, powdery, grainy, flakey, chalky] -- (good)
Cluster 3: [flavorful, hearty, unflavored, savory, full-bodied] -(bad)
Cluster 4: [seasoned, unseasoned] -- (bad)
任何人都可以建议为什么看似相反的词(如(调味,未调味)和(美味,未调味)会聚集在一起?
我尝试了什么:
1) 使用 fasttext 嵌入和 Glove 嵌入。最新结果来自连接 fasttext wikipedia 和常见的爬网嵌入。
2)在做k-means之前将向量归一化为相同的长度(使用eucledian distnaces)。我认为这有点类似于余弦距离。尝试没有很好地规范化,但规范化给出了更好的结果。
3)尝试了其他一些集群方法,如 DBSCAN,但 k-means 似乎更好。
4) 尝试 PCA 来降低词向量的维数 - 并没有太大改变结果。为我的词汇中需要聚类的选定嵌入尝试了 PCA,而不是整个单词集。
欢迎任何改进我的结果的建议。如果有人遇到讨论类似问题的研究文章,请同时发布。
谢谢!跨国公司