从单词集中获取最可能的颜色

时间:2012-08-27 21:50:33

标签: language-agnostic nlp

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

5 个答案:

答案 0 :(得分:2)

如果必须这样做,我将尝试使用谷歌图片或其他人搜索图像,并识别前n个结果中最常见的颜色。

答案 1 :(得分:0)

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

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

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

如果你使用足够大的语料库(类似维基百科),并且你弄清楚如何修剪真正的小数量,罕见的单词,你应该能够制作相当全面和健壮的字典,将数百万个项目映射到他们的颜色。

答案 2 :(得分:0)

另一种方法是在谷歌中搜索颜色组合和相关单词的文本搜索,并采用最多结果的组合。这是一个快速的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

答案 3 :(得分:0)

Daniel和Xi.lin的回答是非常好的想法。沿着同一轴线,我们可以将两种方法结合起来,类似于Xilin的方法,但更简单:使用您希望找到与+“颜色”过滤器关联的颜色查询Google Image(请参见左下方栏)。并查看哪种颜色会产生更多结果。

答案 4 :(得分:0)

如果可能的话,我建议使用一组严格定义的来源,例如维基百科和Wordnet。 例如,这是Wordnet for" panda":

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

S:(n)小熊猫,小熊猫,熊猫,熊猫,猫熊, Ailurus fulgens(红褐色的旧世界浣熊般的食肉动物; 在一些被认为与大熊猫无关的分类中

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

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

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