在NLTK中选择哪种分类器

时间:2011-07-05 16:14:39

标签: nlp classification nltk

我想将短信分为几类,如“建立关系”,“协调”,“信息共享”,“知识共享”等。 “解决冲突”。我正在使用NLTK库来处理这些数据。我想知道在nltk中哪个分类器对于这个特定的多类分类问题更好。

我打算使用朴素贝叶斯分类,是否可取?

2 个答案:

答案 0 :(得分:9)

Naive Bayes是最简单易懂的分类器,因此使用它很好。使用波束搜索找到最佳分类的决策树不是很难理解,通常会更好一些。 MaxEnt和SVM往往更复杂,SVM需要一些调整才能正确。

最重要的是功能的选择+您提供的数据的数量/质量!

考虑到您的问题,我将首先关注确保您拥有良好的培训/测试数据集,并选择好的功能。既然你问这个问题,你对NLP的机器学习没有多少经验,所以我说Naive Bayes开始很简单,因为它没有使用复杂的功能 - 你可以只是标记和计算单词出现次数。

编辑: 问题How do you find the subject of a sentence?和我的答案也值得一看。

答案 1 :(得分:2)

是的,为每个类别训练一个朴素贝叶斯分类器,然后根据哪个分类器提供最高分来将每个消息标记到一个类是这样的问题的标准第一种方法。如果您发现性能不足,可以使用更复杂的单类分类器算法替代Naive Bayes,例如支持向量机(我认为通过Weka插件可以在NLTK中使用,但不是肯定的)。除非你能想到这个问题领域的任何具体内容会让Naieve Bayes特别不合适,否则它将成为很多项目的“第一次尝试”。

我会考虑尝试的另一个NLTK分类器是MaxEnt,因为我相信它本身可以处理多类分类。 (尽管多重二元分类器方法非常标准且常见)。在任何情况下,最重要的是收集大量正确标记的文本消息。

如果通过“短信”你指的是实际的手机短信,这些短信往往非常短,而且语言非常非正式且多种多样,我认为特征选择可能最终成为确定准确度的一个比分类器选择更大的因素为了你。例如,使用理解常用缩写和习语的Stemmer或Lemmatizer,标记词性或分块,实体提取,提取术语之间可能的关系可能比使用更复杂的分类器更有效。

本文讨论了基于情绪对Facebook状态消息进行分类,其中存在一些相同的问题,并可能对此提供一些见解。这些链接指向谷歌缓存,因为我遇到了原始网站的问题:

http://docs.google.com/viewer?a=v&q=cache:_AeBYp6i1ooJ:nlp.stanford.edu/courses/cs224n/2010/reports/ssoriajr-kanej.pdf+maxent+classifier+multiple+classes&hl=en&gl=us&pid=bl&srcid=ADGEESi-eZHTZCQPo7AlcnaFdUws9nSN1P6X0BVmHjtlpKYGQnj7dtyHmXLSONa9Q9ziAQjliJnR8yD1Z-0WIpOjcmYbWO2zcB6z4RzkIhYI_Dfzx2WqU4jy2Le4wrEQv0yZp_QZyHQN&sig=AHIEtbQN4J_XciVhVI60oyrPb4164u681w&pli=1