2

是否有任何现有的库或方法可以让您找出单词集最可能的颜色?例如,黄瓜、苹果、草,它给了我绿色。以前有人朝那个方向工作吗?

4

5 回答 5

2

如果我必须这样做,我将尝试使用 google image 或其他词根据单词搜索图像,并识别前 n 个结果中最常见的颜色。

于 2012-08-28T01:42:21.460 回答
0

如果可能的话,我建议使用一组严格定义的资源,例如 Wikipedia 和Wordnet。例如,这里是“熊猫”的 Wordnet:

S:(n) 大熊猫、熊猫、熊猫熊、浣熊、Ailuropoda melanoleuca(中国和西藏竹林的大型黑白草食性哺乳动物;在某些分类中被认为是熊科或单独科的成员大熊猫科)

S:(n)小熊猫、小熊猫、熊猫、熊猫、猫熊、Ailurus fulgens(红褐色旧大陆浣熊状食肉动物;在某些分类中被认为与大熊猫无关)

由于简洁、精心构造的语言,任何颜色词都很可能很重要。在这里你可以看到熊猫既有黑白的,也有红棕色的。

如果您确定维基百科的子部分(例如“植物描述”),这将有助于提高结果的相关性。此外,维基百科中的第一张图片很可能是最好的“权威”图片。

但是,与所有统计方法一样,您会得到误报(和否定,尽管这些可能不是问题)。

于 2012-08-31T08:37:42.313 回答
0

Daniel 和 Xi.lin 的回答是非常好的想法。沿着同一轴,我们可以将两者与类似于 Xilin 的但更简单的方法相结合:使用您想要查找与“颜色”过滤器相关联的颜色的词查询 Google 图像(参见左下角的栏中)。并查看哪种颜色产生更多结果。

于 2012-08-28T16:27:54.237 回答
0

这听起来像是一个非常合理的 NLP 问题,而且很容易通过 map-reduce 处理。

确定您称之为颜色的单词和短语列表 ['blue'、'green'、'red'、...]。浏览大量句子,对于提到特定颜色的句子,对于该句子中的每个其他单词,(word, color_name)在文件中记下。(地图步骤)

然后对于您在语料库中看到的每个单词,汇总您看到的所有颜色以获得类似{'cucumber': {'green': 300, 'yellow': 34, 'blue': 2}, 'tomato': {'red': 900, 'green': 430'}...}(减少步骤)

如果你使用足够大的语料库(比如维基百科),并且你知道如何修剪非常小的计数、稀有词,你应该能够制作出非常全面和健壮的字典,将数百万个项目映射到它们的颜色。

于 2012-08-28T03:40:29.407 回答
0

另一种方法是在 google 中进行文本搜索,以查找颜色组合和相关单词,并获取结果数量最多的组合。这是一个快速的 Python 脚本:

import urllib
import json
import itertools

def google_count(q):
      query = urllib.urlencode({'q': q})
      url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
      search_response = urllib.urlopen(url)
      search_results = search_response.read()
      results = json.loads(search_results)
      data = results['responseData']
      return int(data['cursor']['estimatedResultCount'])

colors = ['yellow', 'orange', 'red', 'purple', 'blue', 'green']

# get a list of google search counts
res = [google_count('"%s grass"' % c) for c in colors]
# pair the results with their corresponding colors
res2 = list(itertools.izip(res, colors))
# get the color with the highest score
print "%s is %s" % ('grass', sorted(res2)[-1][1])

这将打印:

grass is green
于 2012-08-28T03:40:52.443 回答