NLTK/NLP 构建多对多/多标签主题分类器

Posted

技术标签:

【中文标题】NLTK/NLP 构建多对多/多标签主题分类器【英文标题】:NLTK/NLP buliding a many-to-many/multi-label subject classifier 【发布时间】:2011-12-06 06:32:47 【问题描述】:

我有一个人工标记的语料库,其中包含 5000 多个 XML 主题索引文档。它们的大小从几百千字节到几百兆字节不等。作为手稿的短篇文章。它们都被索引到段落级别。我很幸运有这样的语料库,我正在尝试自学一些 NLP 概念。诚然,我才刚刚开始。到目前为止,只阅读免费提供的 NLTK 书籍streamhacker 和略读 jacobs(?) NLTK 食谱。我喜欢尝试一些想法。

有人建议我,也许我可以采用二元语法并使用朴素贝叶斯分类来标记新文档。我觉得好像这是错误的方法。朴素贝叶斯精通真/假关系,但要在我的分层标签集上使用它,我需要为每个标签构建一个新的分类器。其中将近1000个。我拥有承担这样一项任务的内存和处理器能力,但我对结果持怀疑态度。但是,我将首先尝试这种方法,以满足某人的要求。我应该可能会在接下来的一两天内完成这项工作,但我预测准确度会很低。

所以我的问题有点开放式。 Laregly 由于该学科的性质以及对我的数据的普遍不熟悉,可能很难给出准确的答案。

    哪种分类器适合此任务。我错了吗?贝叶斯可以用于更多的真/假操作吗?

    我应该为这样的任务进行什么特征提取。我对二元组的期望并不高。

每个文档还包含一些引用信息,包括作者、作者性别 m、f、mix(m&f) 和其他(Gov't inst 等)、文档类型、发布日期(16th cent.到当前)、人类分析师和其他一些一般元素。我也很欣赏一些有用的描述性任务,以帮助更好地调查这些数据,以解决性别偏见、分析师偏见等问题。但要意识到这有点超出了这个问题的范围。

【问题讨论】:

看看你的语料库中文档之间的标准化压缩距离是否与标签相关会很有趣。 【参考方案1】:

什么样的分类器适合这项任务。我错了,贝叶斯可以用于更多的真/假操作吗?

您可以通过building a separate binary classifier for each class 轻松构建多标签分类器,该分类器可以区分该类和所有其他类。相应分类器产生正值的类是组合分类器的输出。您可以为此算法或任何其他算法使用朴素贝叶斯。 (你也可以玩弄 NB 的概率输出和阈值,但 NB 的概率估计是出了名的糟糕;只有它在其中的排名才有价值。)

我应该为这样的任务进行什么特征提取

对于文本分类,已知 tf-idf 向量可以很好地工作,但您尚未指定具体任务是什么。文档上的任何元数据也可以使用;尝试做一些简单的统计分析。如果数据的任何特征在某些类中比在其他类中更频繁地出现,那么它可能是一个有用的特征。

【讨论】:

所以,我没有直接任务。有点像把我的脚放在水里。我想做的是利用我的人工标记语料库,看看我是否可以在段落级别自动标记分层本体。 @matchew:然后使用任何看起来相关的功能,尝试多种设置并评估它们。没有看到数据,就无法知道什么是相关的。 感谢您的帮助。非常感谢。我理解这个问题的复杂性,但也许我应该扩大范围。人们可能追求什么类型的特征提取。我喜欢 tf-idf 比 bi-grams 好得多。但是其他的通常是有用的。我明白没有正确的答案。附言我将把这个问题留几天,希望能鼓励对我的问题进行更多讨论。 @matchew:文档特征的其他选项包括来自潜在 Dirichlet 分配或其他主题检测模型的输出和元数据,例如作者/标题,具有(可能是学习的)权重,以相对于文本本身提升它们。您还可以考虑对文本进行词干化/词形还原或将其转换为单词/POS 对,而不仅仅是单词。您还可以在其中几个空间上使用多个分类器,但是您需要一种组合这些空间的方法。 (使用 SVM 或 MaxEnt 而不是 NB 也可能会提高分类器的准确性。) 非常感谢您提供的所有信息。我有最后两个问题。 1. 你是否知道 NLP 上的任何资源都提供了一个很好的邮件列表/留言板/IRC 频道。我期待未来的问题,但 SO 并不是真正为我的开放式问题和随后的长时间讨论而设计的。 2.有点长,我会在后续回复中回答。【参考方案2】:

我知道您在这里有两个任务要解决。第一个是您想根据其主题(?)标记一篇文章,因此该文章可以分为多个类别/类,因此您有一个多标签分类问题。有几种算法用于解决多标签分类问题 - 请查看文献。当我处理类似的问题时,我发现这篇论文很有帮助:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.104.9401

您要解决的第二个问题是用作者、性别、文档类型标记论文。这是一个多类问题 - 每个类都有两个以上的潜在值,但所有文档都有这些类的一些值。

我认为作为第一步,了解多类和多标签分类之间的区别很重要。

【讨论】:

以上是关于NLTK/NLP 构建多对多/多标签主题分类器的主要内容,如果未能解决你的问题,请参考以下文章

在 TensorFlow 中使用多对多 LSTM 进行视频分类

Eloquent 中与分类学的多对多关系

Hibernate一对多,多对多操作

gorm 关系一对一,一对多,多对多查询

gorm 关系一对一,一对多,多对多查询

与 NoSQL 数据库的多对多关系