如何训练以 pos-tag 序列为特征的朴素贝叶斯分类器?

Posted

技术标签:

【中文标题】如何训练以 pos-tag 序列为特征的朴素贝叶斯分类器?【英文标题】:How to train a naive bayes classifier with pos-tag sequence as a feature? 【发布时间】:2015-04-30 03:05:49 【问题描述】:

我有两类句子。每个都有相当不同的 pos-tag 序列。如何训练以 POS-Tag 序列为特征的朴素贝叶斯分类器?斯坦福 CoreNLP/NLTK(Java 或 Python)是否提供了任何方法来构建具有 pos-tag 作为特征的分类器?我知道在 python 中 NaiveBayesClassifier 允许构建一个 NB 分类器,但它使用 contains-a-word 作为特征,但它可以扩展为使用 pos-tag-sequence 作为特征吗?

【问题讨论】:

你真的需要使用 NaiveBayesClassifier 吗?你看过CRF吗?对了,你读过这一章吗:nltk.org/book/ch06.html 感谢您的链接。我最终使用了串联的 pos-tags-sequence 和 containsPosSequence 作为一个功能...... 【参考方案1】:

如果您知道如何使用 nltk 的朴素贝叶斯分类器和单词作为特征来训练和预测文本(或您的情况下的句子),那么您可以轻松扩展此方法以通过 pos-tags 对文本进行分类。这是因为分类器不关心您的特征字符串是单词还是标签。因此,您可以使用例如 nltk 的标准 pos 标记器简单地用 pos-tags 替换句子中的单词:

sent = ['So', 'they', 'have', 'internet', 'on', 'computers' , 'now']
tags = [t for w, t in nltk.pos_tag(sent)]
print tags

['IN', 'PRP', 'VBP', 'JJ', 'IN', 'NNS', 'RB']

从现在开始,您可以继续使用“包含单词”的方法。

【讨论】:

添加到您的答案中,因为问题是“序列”,我们可以链接句子的 pos 标签,如 [IN][PRP][VBP][JJ][IN][NNS][RS] 并定义一个特征,如 say conatinsPrpVbpSequence 并将其设置为 True出现[PRP][VBP]....

以上是关于如何训练以 pos-tag 序列为特征的朴素贝叶斯分类器?的主要内容,如果未能解决你的问题,请参考以下文章

无法在朴素贝叶斯中训练模型

4.朴素贝叶斯法

朴素贝叶斯法

Quanteda 包,朴素贝叶斯:如何预测不同特征的测试数据?

朴素贝叶斯

朴素贝叶斯的理解