如何在 Python 中对单词进行分类?

问题描述

我从事一个项目,在该项目中我使用 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)

测试它是否符合您的所有标准

Proof that it works