代码之家  ›  专栏  ›  技术社区  ›  sfogle

一对一匹配标签进行文本分类

  •  1
  • sfogle  · 技术社区  · 8 年前

    我正在使用 scikit-learn 对于文本分类问题,我想知道是否存在使用一对一、互斥映射进行标记的机器学习技术。

    例如,假设我想根据三个文档所代表的城市来标记它们。我的标签选择是纽约、底特律和洛杉矶。我的文件是“大苹果”、“大城市”和“天使之城”。就这个例子来说,“天使之都”与洛杉矶的关系最为密切,而“大苹果(The Big Apple)”和“大城市(The Big City)”与纽约的关系也最为密切。然而,我想要一个映射到纽约(“大苹果”,因为我们说它更适合),一个映射至底特律,因为纽约已经被使用,底特律是唯一剩下的选择,在某种意义上它仍然适合。

    我想告诉预测器,如果它使用了一个标签,它就不能再使用它,因此它需要对该标签进行最佳猜测,因为它只能使用一次。

    科学知识学习 或者另一个库有处理这种一对一(并且只有一个)文本分类的功能,就像我想做的那样?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Aditya    8 年前

    为了实现这种功能,我建议您执行以下操作:

    我假设在您的文本分类算法中,您可以为每个标签的每个文档获得一个概率分数。

    例如。:

      Documents  "The Big Apple"  "The Big City"  "City of Angels"
    
      Label     
    
      "New York"       0.45           0.45            0.1
    
      "Detroit"        0.4            0.5             0.1                
    
      "Los Angeles"    0.15           0.05            0.8
    

    你现在也许可以看到我的方向了。

    使用argmax函数(返回每个文档的最大概率标签)。

    在这种情况下,argmax函数将为文档“the Big Apple”和“the Bigh City”返回标签“New York”,为文档“Detroit”返回标签《the Big City》,为文档《City of Angels》返回标签“Los Angeles”。

    由于在这种情况下,在为文档分配标签“New York”时存在冲突(我不想称之为冲突)(因为您需要一对一映射),所以我建议您转到下一个标签。可以将标签“The Big City”明确指定给文档“Detroit”,因为它具有最大的可能性(匹配),然后从可能的标签集中删除标签“Detroti”(其余标签-“New York”和“Los Angeles”)。然后转到下一个标签“Los Angeles”,argmax函数告诉您,文档“City of Angels”具有标签“Los-Angeles“的最大可能性(最大匹配)。然后从其余标签中删除标签“Lost Angeles”。此时,剩余标签->“纽约”。然后转到下一个标签“New York”,看到它可以分配给的唯一文档是“the Big Apple”,并且文档和标签之间有一对一的映射。

    我以前用过两种方法,通过随机给文档分配标签来打破平局,或者通过计算下一个标签的概率打破平局。该技术还用于决策树算法中,以在树的给定级别查找最合适的属性。它被称为该属性的熵或信息增益。这个实现是从ID3决策树算法中获得信息的一个简单版本。

    关于ID3决策树算法的更多信息 here .