文本属于 1 到 N 类 的机器学习文本分类

Machine learning text classification where a text belongs to 1 to N classes

所以我正在尝试(只是为了好玩)class根据电影的描述来确定电影,我的想法是 "tag" 电影,所以给定的电影可能是 "action" 并且例如 "humor" 同时。

通常在使用文本 class 标识符时,您得到的是给定文本所属位置的 class,但在我的情况下,我想将文本分配给 1 到 N 个标签。

目前我的训练集看起来像这样

+--------------------------+---------+
|        TEXT              |  TAG    |
+--------------------------+---------+
| Some text from a movie   |  action |
+--------------------------+---------+
| Some text from a movie   |  humor  |
+--------------------------+---------+
| Another text here        | romance |
+--------------------------+---------+
| Another text here        | cartoons|
+--------------------------+---------+
| And some text more       | humor   |
+--------------------------+---------+

我接下来要做的是训练 classifiers 告诉我每个标签是否属于一个文本,例如,如果我想弄清楚一个文本是否是 class化为"humor" 我最终会得到以下训练集

+--------------------------+---------+
|        TEXT              |  TAG    |
+--------------------------+---------+
| Some text from a movie   |  humor  |
+--------------------------+---------+
| Another text here        |not humor|
+--------------------------+---------+
| And some text more       | humor   |
+--------------------------+---------+

然后我训练了一个 classifier 来了解文本是否幽默(对其余标签采用相同的方法)。在那之后,我以总共 4 个 classifier 结束,它们是

最后,当我得到一个新文本时,我将它应用到 4 个 classifier 中的每一个,对于每个 classifier 给我一个积极的 classification(即, 给我 X 而不是 no-X) 如果这样的 classification 超过某个阈值(比如 0.9),那么我假设新文本属于标签 X,然后我对每个重复相同的class制造商。

特别是我使用朴素贝叶斯作为算法,但同样可以应用于任何输出概率的算法。

现在的问题是,这种做法正确吗?我在这里做错了什么吗?从我得到的结果来看,事情似乎有道理,但我想要第二个意见。

是的,这是有道理的。这是一种众所周知的 multilabel/multiclass 分类基本技术,称为 "one vs all"(或 "one vs all")分类器。这是非常古老和广泛使用的。另一方面 - 它也很天真,因为您不考虑 classes/tags 之间的任何关系。您可能有兴趣阅读有关结构学习的内容,其中涵盖了标签 space 上可以利用的某些结构(通常是存在的)的主题。

您所描述的问题可以通过 Latent Dirichlet Allocation, a statistical topic model 方法在文档集合中查找基础 ("latent") 主题来解决。这种方法基于一个模型,其中每个文档都是这些主题的混合体。

通常,您首先决定主题(在您的情况下,标签就是主题),然后 运行 培训师。然后,LDA 软件将输出每个文档的主题概率分布。

这里有一个很好的介绍:http://blog.echen.me/2011/08/22/introduction-to-latent-dirichlet-allocation/

是的。您的方法是正确的,它是一种众所周知的策略,可以启用旨在执行二进制 classification 的 classifier 来处理 multi-class classification 任务。

Andrew Ng(来自斯坦福大学)解释了这种方法 here。尽管它是针对逻辑回归进行解释的,但正如您提到的那样,该想法可以应用于任何输出概率的算法。