使用 word2vec 对相似的单词进行聚类



我有各种餐厅标签,我也有一些与餐厅无关的词。

vegan vegetarian pizza burger transportation coffee Bookstores Oil and Lube

我有大约 500 个标签的组合。我想知道有没有办法选择与食物选择相关的类似标签,而省略油和润滑油、运输等词。

我尝试使用word2vec,但是,其中一些单词不止一个,无法找到正确的方法。

蛮力方法是手动标记它们。但是,我想知道有没有办法使用 NLP 或 Word2Vec 将所有相关标签聚集在一起。

Word2Vec 可以帮助解决这个问题,但需要考虑的关键因素是:

  • 你的词向量是如何训练的?使用现成的向量(例如在大量新闻故事语料库上训练的流行GoogleNews向量(不太可能与您所在域中这些词的含义紧密匹配,或者包含多词标记,如"oil_and_lube"。但是,如果你有一个来自你自己领域的良好训练语料库,以及来自受控词汇表(如oil_and_lube(的多词标记,这些标记用于上下文,你可能会得到相当好的向量,准确地说出你需要的标记。

  • 向量的相似性不是严格意义上的"同义词",而是通常其他形式的密切关系,包括对立性和其他方式,词可以互换或在类似的上下文中使用。因此,单词向量相似性值是否为你特定的"与食物相关"测试提供了一个良好的阈值截止值,你必须尝试和修补。(例如:作为插入替换的单词是彼此最接近,还是同一主题中的常见单词彼此最接近,可能会受到window参数是更小还是更大的影响。因此,您可以发现调整 Word2Vec 训练参数可以根据您的特定需求改进生成的向量。

就如何进行提出更多建议将需要有关可用训练数据的更多详细信息 - 这些标签来自哪里? 他们采用什么格式? 你有多少? – 以及您的最终目标 – 为什么区分餐厅和非餐厅标签很重要?

好的,谢谢你的详细信息。

为了在word2vec上进行训练,您应该考虑以下事实:

  1. 您需要一个庞大可变的文本数据集。检查您的训练集,并确保它包含您需要的有用数据,以便获得您想要的内容。
  2. 每行设置一个句子/短语。
  3. 对于预处理,您需要删除标点符号并将所有字符串设置为小写
  4. 不要词形还原或词干还原,因为文本会不那么复杂!
  5. 尝试不同的设置:

    5.1算法:我使用了word2vec,我可以说BagOfWords(BOW(在不同的训练集上提供了比SkipGram更好的结果。

    5.2 层:200层提供良好的效果

    5.3 矢量大小:矢量长度 = 300 就可以了。

现在运行训练算法。该,使用获得的模型来执行不同的任务。例如,在您的情况下,对于同义词,您可以将两个单词(即向量(与余弦(或相似性(进行比较。根据我的经验,余弦提供了一个令人满意的结果:两个单词之间的距离由 0 到 1 之间的双精度给出。同义词具有高余弦值,您必须找到同义词和其他不是同义词的单词之间的界限。

最新更新