6

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

我也尝试了这篇博文中的一些例子。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 进行多类分类的正确方法是什么?

4

2 回答 2

9

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

于 2012-11-23T01:39:50.483 回答
0

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

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

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

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

于 2016-07-28T09:06:59.787 回答