【问题标题】:How to do multiclass classification properly with NLTK?如何使用 NLTK 正确进行多类分类?
【发布时间】:2012-11-11 09:28:08
【问题描述】:

所以,我正在尝试进行文本多类分类。我一直在阅读很多旧问题和博客文章,但我仍然无法完全理解其中的概念。

我也尝试了这篇博文中的一些示例。 http://www.laurentluce.com/posts/twitter-sentiment-analysis-using-python-and-nltk/

但是当涉及到多类分类时,我不太明白这一点。假设我想将文本分类为多种语言,法语、英语、意大利语和德语。我想使用我认为最容易开始的 NaviesBayes。从我在旧问题中读到的内容来看,最简单的解决方案是使用一对多。因此,每种语言都有自己的模型。所以,我会有法语、英语和意大利语的 3 个模型。然后我会针对每个模型运行一个文本,并检查哪个模型的概率最高。我说的对吗?

但是在编码方面,在上面的示例中,他有这样的推文,这些推文将被分类为正面或负面。

pos_tweets = [('I love this car', 'positive'),
              ('This view is amazing', 'positive'),
              ('I feel great this morning', 'positive'),
              ('I am so excited about tonight\'s concert', 'positive'),
              ('He is my best friend', 'positive')]

neg_tweets = [('I do not like this car', 'negative'),
              ('This view is horrible', 'negative'),
              ('I feel tired this morning', 'negative'),
              ('I am not looking forward to tonight\'s concert', 'negative'),
              ('He is my enemy', 'negative')]

它是正面的还是负面的。那么,在为法语训练一个模型时,我应该如何标记文本?会是这样吗?所以这是积极的?

[('Bon jour', 'French'),
   'je m'appelle', 'French']

负数是

[('Hello', 'English'), 
   ('My name', 'English')]

但这是否意味着我可以只添加意大利语和德语,并且只有一个模型可以支持 4 种语言?或者我真的不需要负片?

那么,问题是使用 ntlk 进行多类分类的正确方法是什么?

【问题讨论】:

  • 正如@larsmans 建议的那样,您不需要一种对所有方法,因为朴素贝叶斯支持开箱即用的多类分类。这种方法在分类器仅支持二进制类的情况下是必需的,例如。 G。 [0,1]。另一个观察结果......您不需要分类器来确定文本中的语言。您可以只使用字符频率来计算语言。
  • @Nejc:你不能真正“计算”语言,你需要估计它。正如我的一位同事发现的那样,字符级 n-gram 上的朴素贝叶斯是一个很好的模型。
  • @larsmans,是的,我同意你的观点,朴素贝叶斯可以确定(我不知道“计算”是如何到达那里的)。但是对于这样一个“简单”的任务来说,它有点复杂。如上所述,可以仅基于字符频率(有时还基于 n-gram 频率)创建更简单的估计器。然后,您将这些频率与每种语言的预定义频率进行比较。
  • @Nejc:当然,但这样一个简单的估计器可能并不总是有效。如果您有偏斜的分布,您可能会从 NB 获得更好的结果,因为它会先考虑一个类。此外,这样,OP 正在重用代码,这通常是一件好事。
  • 多类分类通常是指单个条目可以有多个标签的情况。

标签: python machine-learning nltk


【解决方案1】:

不需要使用朴素贝叶斯的一对多方案——它是开箱即用的多类模型。只需将(sample, label) 对的列表提供给分类器学习器,其中label 表示语言。

【讨论】:

  • 非常感谢您的快速回答。
【解决方案2】:

NLTK 中的分类器 (http://www.nltk.org/api/nltk.classify.html) 可以有多种变体,了解细微差别很重要。

最简单的变体是区分两个类别,例如正面与负面情绪,男性与女性。 (http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.positivenaivebayes)

第二种变体是当您有多个类别(两个或更多)时,例如法语、德语或英语的文本,并且您假设每个文本都使用一种语言。请注意,NLTK 中的语言并未将其描述为“多类”,当您对此不熟悉时,这可能会产生误导,这是可以理解的。就这样想吧。分类器不会将一个文本分配给多个类,例如德语和法语,但仅限于一个班级。

最后是 Multiclassifier,它的不同之处在于给定的输入可以分配给多个类,例如50% 法语和 50% 德语或 40% 英语、30% 德语和 30% 法语。

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 2015-05-14
    • 2017-02-04
    • 2021-02-17
    • 2017-04-11
    • 2017-05-19
    • 2020-06-26
    • 2021-09-23
    相关资源
    最近更新 更多