是否存在任何库或方法可以让您找出单词集最可能的颜色?例如,黄瓜,苹果,草,它给我绿色。有没有人以前在那个方向工作?
答案 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"),这将有助于提高结果的相关性。此外,维基百科中的第一张图片很可能是最好的"权威"之一。
但是,与所有统计方法一样,你会得到误报(和否定,尽管这些可能不是问题)。