2

我正在尝试像这样获得颜色关联:

apple -> red

banana -> yellow

grass -> green

sky -> blue

使用 GoogleNews-vectors-negative300.bin 向量,我第一次尝试

wv.similarity('apple',color)

其中颜色是原色,例如“红色”、“黄色”、“蓝色”等。

与水果“橙色”始终是最高的颜色联想,可能是因为它将颜色和水果混为一谈。当我删除橙色时,结果仍然很奇怪:

apple:

[('violet', 0.24978276994901127), ('green', 0.20656763297902447), ('red', 0.19834849929308024), ('yellow', 0.18963902211016806), ('cyan', 0.17945308073294569), ('blue', 0.13687176308102386)]

cherry:
[('violet', 0.27348741504236473), ('red', 0.25540695681746473), ('yellow', 0.24285150471329794), ('blue', 0.20400566489159569), ('green', 0.18741563150077917), ('cyan', 0.12736182067644364)]

banana:
[('yellow', 0.27708333668133234), ('green', 0.25977272141145935), ('red', 0.24736077659820707), ('violet', 0.23909913025940599), ('cyan', 0.16519069493338848), ('blue', 0.15660144725154587)]

所以显然“紫罗兰色”与“苹果”和“樱桃”沿其他维度对齐(也许它们是植物?)。

我试着把它作为一个类比。这适用于某些对象,但不能很好地概括:

wv.most_similar(restrict_vocab=100000, positive=['apple','yellow'], negative=['banana'])
[(u'red', 0.5296207666397095), (u'orange', 0.501822829246521), (u'bright_yellow', 0.49562686681747437), (u'purple', 0.4909234642982483), (u'blue', 0.465557336807251), (u'pink', 0.43768370151519775), (u'colored', 0.4296746551990509), (u'brown', 0.4290006756782532), (u'bright_orange', 0.4261433482170105), (u'yellows', 0.4199957549571991)]

wv.most_similar(restrict_vocab=100000, positive=['grass','yellow'], negative=['banana'])
[(u'bright_yellow', 0.4722655713558197), (u'blue', 0.45448029041290283), (u'red', 0.43442922830581665), (u'lawns', 0.4275570809841156), (u'maroon', 0.4197036325931549), (u'bright_orange', 0.41167205572128296), (u'brown', 0.4110153317451477), (u'purple', 0.4074830412864685), (u'grassy', 0.4017237722873688), (u'striped', 0.40009182691574097)]

我还尝试了 facebook fasttext 嵌入,但结果更糟。我应该如何解决这个问题并隔离“对象的常见颜色”的向量?

4

1 回答 1

2

这是一个有趣的尝试,但在我看来,词向量是否能成功地编码这些关系似乎是一个悬而未决的问题,任何程度的成功都取决于许多特定的训练选择,包括语料库和参数。

特别是,GoogleNews在已发表的新闻故事上训练的向量集在将水果与颜色相关联方面可能不如其他选择那么强。(例如,我猜儿童读物的文本或教育计划的成绩单会为此目的引起更强的向量排列。)

Aviolet也是一朵花,所以这部分解释了它与其他水果的密切关系。正如您所注意到的,“橙色”作为水果和颜色的突出地位在涉及时会产生问题。在普通的 Word2Vec 或向量中,多个词义之间没有歧义GoogleNews,尽管已经有一些研究使用或创建词向量来区分替代词义。(甚至像“蓝色”、“绿色”、“黄色”、“樱桃”和“草”这样的词也有可能影响矢量定位的其他含义。)

我确实怀疑类比/定向方法可能比纯相似性更幸运。(也就是说,问“哪个颜色词是从这些其他对象词->颜色词示例中学习的方向?”,而不是“哪个颜色词绝对最接近这个对象词?”)

您可能想尝试来自更大域的 objectword->colorword 示例对,或者尝试其他向量数学以查看其他定义/复合是否更好地匹配您期望的答案。

例如。也许你的“学习方向”示例应该包括非水果——天空->蓝色、煤炭->黑色等。

我记得曾经有过这样的建议,即如果将同一关系的许多已知良好的类比一起使用,而不仅仅是一个,则可以改进类比求解。(也就是说,在探测“德国: ”之前,从所有“英格兰:伦敦”,“俄罗斯:莫斯科”,“法国:巴黎”组成一个方向,而不仅仅是一个。我不确定是否添加更多向量gensim most_similar() positive/negative列表具有相同的效果,或者您需要自己进行差分/平均/规范。)

一篇关于类比结果解释和改进的有趣论文是 Levy & Goldberg 的“ Linguistic Regularities in Sparse and Explicit Word Representations ”。

还有其他工作试图训练或扭曲词(或概念/实体)向量以更好地回答问题,这可能是相关的,但除了建议将其作为搜索词之外,我不知道任何特别合适的技术或在可用的库中随时可用。

于 2017-03-11T20:15:45.880 回答