NLP |回退标记来组合标记器
原文:https://www.geesforgeks.org/NLP-back back-taging-to-combine-taggers/
什么是词性标注? 这是一个将句子转换成形式的过程——单词列表、元组列表(其中每个元组都有一个形式(单词、标签))。的标记是词性标记,表示该词是否是名词、形容词、动词等。
什么是回退标记? 这是sequentialbackfftagger最重要的特性之一,因为它允许将 taggers 组合在一起。这样做的好处是,如果标记者不知道单词的标记,那么它可以将这个标记任务传递给下一个回退标记者。如果那一个做不到,它可以将该字传递给下一个 退避标记器,以此类推,直到没有退避标记器留下来检查。
代码#1:执行标记
# Loading Libraries
from nltk.tag import SequentialBackoffTagger
from nltk.tag import DefaultTagger
from nltk.tag import UnigramTagger
from nltk.corpus import treebank
# initializing training and testing set
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
# Defining Tag
tag1 = DefaultTagger('NN')
# Tagging
tag2 = UnigramTagger(train_data, backoff = tag1)
# Evaluation
tag2.evaluate(test_data)
输出:
0.8752428232246924
它是如何工作的? sequentialbackfftagger 类可以接受 backoff 关键字参数,其值是 sequentialbackfftagger 的另一个实例。在上面的代码中,unigram 词性标记器与 Default 标记器进行了补偿,并在 treebank.tagged_sents() 数据集上进行了训练。
代码#2:准备回退标记员内部列表
from nltk.tag import SequentialBackoffTagger
print (tag1._taggers == [tag1])
print ("\n", tag2._taggers == [tag2, tag1])
输出:
True
True
它是如何工作的?
- SequentialBackoffTagger 类被初始化,创建一个 backoff taggers 的内部列表,第一个元素是它自己。
- 如果给定了回退标记符,则回退标记符的内部标记符列表会被追加。
- SequentialBackoffTagger 类 uses_taggers list 是调用 tag()方法时 backoff taggers 的内部列表。
- 在每个标签上调用 choose_tag(),它会遍历标签列表。
- 当找到标记时,它停止并返回标记。
- 如果主标记器可以标记单词,将返回标记。
- 否则,它返回无,并尝试下一个标记器,以此类推,直到找到一个标记,否则返回无。
代码#3:用泡菜保存并装载一个训练有素的标记器。
# Loading Libraries
import pickle
# Opening file and writing
file = open('tagger.pickle', 'wb')
pickle.dump(tagger, file)
file.close()
# Reading file
file = open('tagger.pickle', 'rb')
# Loading
tagger = pickle.load(f)
输出:
nltk.data.load('tagger.pickle') will load the file