如何训练以 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 序列为特征的朴素贝叶斯分类器?的主要内容,如果未能解决你的问题,请参考以下文章