问题描述
我从事一个项目,在该项目中我使用 Google 视觉检测图像中的对象。 API 返回标签列表。所以我有多个词,我想把每个词放到一个类别中。例如:
谷歌云视觉回归:
['Head','Lamp','Eye','Green','Arm','Piano','Mobile phone','Blue','Toy']
我想要类似的东西:
{'Object' : ['Lamp','Toy'],'Color' : ['Green','Blue'],'Body parts': ['Head','Arm']
}
我知道 word2vec 有一种叫做相似性的东西,但这意味着我必须训练一个模型。有我可以使用的预存模型吗?或者也许是另一种解决方案?
解决方法
查看 WordNet
,这是一个免费的研究词典,可以模拟单词关系,因此可以帮助您以多种方式对这些标签进行分组:
https://wordnet.princeton.edu/
您也可以尝试使用词向量来模拟词之间的相似度 - 从而也可能对相关词进行聚类。而且,您可以尝试使用各种语言的现成词向量集,而不是自己训练。
然而,这些集合所反映的相似性可能是也可能不是您想要的。例如,像“热”和“冷”这样的反义词在大多数词向量模型中通常非常“相似”,因为它们涉及事物的相同方面并在相似的上下文中使用。并且逻辑层次结构——例如词是其他词的更具体的例子——在词向量空间中不一定是清楚的。 (WordNet 作为手动策划的数据集,明确地捕获了这种上位词/下位词关系。)
,试试这个,希望它符合标准:
#This is the list of things you want sorted
lists = ['Head','Lamp','Eye','Green','Arm','Piano','Mobile phone','Blue','Toy']
#This is all the body parts this program searches for
body = ["Head","Eye","Arm"]
body2= []
#All the objects it searches for
object = ["Lamp","Piano","Mobile phone","Toy"]
object2 = []
#All the colors it search for
color = ["Blue","Green"]
color2 = []
#formats the dict according to your criteria
dict = {"Object":None,"Color":None,"Body":None}
for i in lists:
if i in object:
if i in object2:
continue
object2.append(i)
dict["Object"] = object2
elif i in color:
if i in color2:
continue
color2.append(i)
dict["Color"] = color2
elif i in body:
if i in body2:
continue
body2.append(i)
dict["Body"] = body2
else:
pass
print(dict)
测试它是否符合您的所有标准