我有各种各样的餐馆标签,并且我也有一些与餐馆无关的词。如下所示:
vegan
vegetarian
pizza
burger
transportation
coffee
Bookstores
Oil and Lube
我大约混合了500个标签。我想知道是否有一种方法可以选择与食物选择相关的类似标签,并省去诸如油和润滑油,运输等字眼。
我尝试使用word2vec,但是其中一些单词不止一个,并且找不到正确的方法。
蛮力方法是手动标记它们。但是,我想知道是否可以使用NLP或Word2Vec将所有相关标签聚集在一起。
答案 0 :(得分:0)
Word2Vec可以帮助解决此问题,但要考虑的关键因素是:
您的单词向量是如何训练的?使用现成的向量(例如在大型新闻故事中训练的流行GoogleNews
向量)不太可能与您域中这些词的含义相匹配,或包含多词标记(例如'oil_and_lube '。但是,如果您有一个来自您自己领域的良好训练语料库,并且在上下文中使用了受控词汇表中的多词标记(例如oil_and_lube
),那么您可能会获得非常好的向量,以精确地表达所需的标记。
单词向量的相似度并非严格意义上的“同义词”,而是通常其他形式的紧密联系,包括相反性和单词可以互换或在相似上下文中使用的其他方式。因此,单词向量相似性值是否可以为您特定的所需“与食物相关”测试提供良好的阈值截止,这是您必须尝试并进行的尝试。 (例如:{{1}是否会影响彼此直接替换的单词是否彼此最接近,或者相同主题中的相同主题是否彼此最接近。 }参数变小或变大。因此,您可以找到调整Word2Vec训练参数的方法来改善所得矢量以满足您的特定需求。)
就如何进行更多建议,将需要更多有关可用培训数据的详细信息-这些标签来自何处?他们使用的格式是什么?你有多少? –以及您的最终目标–为什么区分餐厅和非餐厅的标签很重要?
答案 1 :(得分:0)
好的,谢谢您的详细介绍。
为了在word2vec上进行培训,您应该考虑以下事实:
尝试其他设置:
5.1 算法:我使用了word2vec,可以说 BagOfWords ( BOW )在与 SkipGram 不同的训练集。
5.2 层数:200层效果不错
5.3 向量大小:向量长度= 300是可以的。
现在运行训练算法。使用获得的模型来执行不同的任务。例如,在您的情况下,对于同义词,您可以将两个单词(即向量)与余弦(或相似性)进行比较。根据我的经验,余弦提供了令人满意的结果:两个单词之间的距离由0到1之间的倍数给出。同义词具有较高的余弦值,您必须找到同义词和非同义词之间的界限。