【问题标题】:word2vec word to color association?word2vec 单词到颜色关联?
【发布时间】:2017-03-12 04:15:45
【问题描述】:

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

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 嵌入,但结果更糟。我应该如何解决这个问题并隔离“对象的常见颜色”的向量?

【问题讨论】:

    标签: word2vec word-embedding


    【解决方案1】:

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 感谢您的详细回复。我尝试过使用矢量数学方法,它似乎确实稍微改善了一些事情。我刚刚意识到这个项目:explosion.ai/blog/sense2vec-with-spacy,它应该非常适合这项任务。我不认为橙色和紫色在用作 ADJ 时有其他含义,因此沿着 POS 线消除歧义应该会产生更好的结果。
    猜你喜欢
    • 2018-09-22
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多