NLP |基于分类器的标记
原文:https://www.geeksforgeeks.org/nlp-classifier-based-tagging/
分类器类:
- 它是分类标签器的一个子类,使用分类技术来做词性标注。
- 从单词中提取特征,然后传递给内部分类器。
- 它对特征进行分类,并返回一个标签,即词性标签。
- 特征检测器找到多个长度后缀,进行一些正则表达式匹配,并查看单字、二元模型和三元模型历史,为每个单词生成一组相当完整的特征
代码#1:使用分类后标签
from nltk.tag.sequential import ClassifierBasedPOSTagger
from nltk.corpus import treebank
# initializing training and testing set
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
tagging = ClassifierBasedPOSTagger(train = train_data)
a = tagging.evaluate(test_data)
print ("Accuracy : ", a)
输出:
Accuracy : 0.9309734513274336
分类器类继承了分类器类,只实现了一个 feature_detector()方法。所有的训练和标记都是在分类标签器中完成的。
代码#2:使用 MaxentClassifier
from nltk.classify import MaxentClassifier
from nltk.corpus import treebank
# initializing training and testing set
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
tagger = ClassifierBasedPOSTagger(
train = train_sents, classifier_builder = MaxentClassifier.train)
a = tagger.evaluate(test_data)
print ("Accuracy : ", a)
输出:
Accuracy : 0.9258363911072739
自定义特征检测器检测特征 有两种方法可以做到:
- 子类 ClassifierBasedTagger 并实现一个 feature_detector()方法。
- 在初始化时,将一个函数作为 feature_detector 关键字参数传递给 ClassifierBasedTagger。
代码#3:自定义特征检测器
from nltk.tag.sequential import ClassifierBasedTagger
from tag_util import unigram_feature_detector
from nltk.corpus import treebank
# initializing training and testing set
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
tag = ClassifierBasedTagger(
train = train_data,
feature_detector = unigram_feature_detector)
a = tagger.evaluate(test_data)
print ("Accuracy : ", a)
输出:
Accuracy : 0.8733865745737104