【问题标题】:How can I sort words into categories in Python?如何在 Python 中将单词分类?
【发布时间】:2023-04-05 23:18:01
【问题描述】:

我从事一个项目,我使用 Google 视觉来检测图像中的对象。 API 返回标签列表。所以我有多个单词,我想将每个单词归入一个类别。例如:

谷歌云视觉回归:

['Head', 'Lamp', 'Eye', 'Green', 'Arm', 'Piano', 'Mobile phone', 'Blue', 'Toy']

我想要类似的东西:

{'Object' : ['Lamp', 'Piano', 'Mobile phone', 'Toy'],
'Color' : ['Green', 'Blue'],
'Body parts': ['Head', 'Eye', 'Arm']
}

我知道 word2vec 有一种叫做相似性的东西,但这意味着我必须训练一个模型。有没有我可以使用的预置模型?或者也许是另一种解决方案?

【问题讨论】:

    标签: python machine-learning nlp word2vec similarity


    【解决方案1】:

    查看WordNet,这是一个免费的研究词典,它模拟了单词关系,因此可以帮助您以各种方式对这些标签进行分组:

    https://wordnet.princeton.edu/

    您也可以尝试使用词向量来对词之间的相似度进行建模,从而也可能对相关词进行聚类。而且,您可以尝试使用各种语言的现成词向量集,而不是自己训练。

    但是,此类集合所反映的相似性可能是也可能不是您想要的。例如,像“热”和“冷”这样的反义词在大多数词向量模型中通常非常“相似”,因为它们涉及事物的相同方面并且在相似的上下文中使用。并且逻辑层次结构——例如词是其他词的更具体的例子——在词向量空间中不一定是清晰的。 (WordNet,作为一个人工管理的数据集,明确地捕捉到了这样的上位词/下位词关系。)

    【讨论】:

      【解决方案2】:

      试试这个希望它符合标准:

      #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)
      

      对其进行测试,看看它是否符合您的所有标准

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-17
        • 2011-06-18
        • 1970-01-01
        • 2011-10-17
        • 2015-01-28
        • 1970-01-01
        • 2018-05-28
        • 2015-04-21
        相关资源
        最近更新 更多