English 中文(简体)
自然语言工具箱——Unigram Tagger
  • 时间:2024-11-03

Natural Language Toolkit - Unigram Tagger


Previous Page Next Page  

What is Unigram Tagger?

如名称所示,单克的夸张是一种夸夸张,它只使用一个词作为确定其标语的背景。 简言之,Unigram Tagger是一种基于背景的夸大,其背景是一字,即Unigram。

How does it work?

国家扫盲中心为此提供了一个名为UnigramTagger的模块。 但是,在深入开展工作之前,让我们在以下图表的帮助下理解等级:

Unigram Tagger

根据上述图表,可以理解UnigramTaggerNgramTagger继承。 它是ContextTagger的子类,继承SequentialBackoffTagger/b>。

UnigramTagger在以下步骤的帮助下作了解释:

    我们看到,UnigramTagger 继承ContextTagger,实施context()方法。 <context()方法采用了与choose_tag(>方法相同的三个论点。

    context(>)方法的成因是进一步用于创建模型的标语。 一旦形成模型,也使用“象征性”一词来研究最好的标签。

    以这种方式,UnigramTagger将从判罚清单中建立一个背景模型。

Training a Unigram Tagger

NLTK's UnigramTagger, can be training by provide a pst of tadated imprisonment at the time of initiapzation. 在下面的例子中,我们将使用树库的硬性判决。 我们将使用该法典的头2500句话。

Example

首先从Nltk进口UniframTagger模块


from nltk.tag import UnigramTagger

其次,进口你想要使用的藏书。 在这里,我们利用的是树木库。


from nltk.corpus import treebank

现在,为了培训的目的,将判决。 为了培训目的,我们先判2 500刑,并将判决——


train_sentences = treebank.tagged_sents()[:2500]

其次,对用于培训目的的刑期适用UnigramTagger——


Uni_tagger = UnigramTagger(train_sentences)

为了测试目的,对培训目的,即2500人,处以相当于或更少的监禁。 在这里,我们首先需要1 500次测试——


test_sentences = treebank.tagged_sents()[1500:]
Uni_tagger.evaluate(test_sents)

Output


0.8942306156033808

在这里,我们用单一字眼看望确定定位台标的夸夸张的精确度约为89%。

Complete implementation example


from nltk.tag import UnigramTagger
from nltk.corpus import treebank
train_sentences = treebank.tagged_sents()[:2500]
Uni_tagger = UnigramTagger(train_sentences)
test_sentences = treebank.tagged_sents()[1500:]
Uni_tagger.evaluate(test_sentences)

Output


0.8942306156033808

Overriding the context model

以上图表显示UnigramTagger的等级,我们知道从ContextTagger继承的所有夸张,而不是自修,可以采用预设模式。 这一预设模式只是对一个主角的关键环境进行 Python测。 为UnigramTagger,背景要点为个人语言,而其他内容为NgramTagger。 子类是 t。

我们可以通过向Unigger通过另一个简单模式来推翻这一背景模式。 课程而不是通过培训。 让我们在下面一个简单的例子的帮助下理解这一点:

Example


from nltk.tag import UnigramTagger
from nltk.corpus import treebank
Override_tagger = UnigramTagger(model = {‘Vinken’ : ‘NN’})
Override_tagger.tag(treebank.sents()[0])

Output


[
   ( Pierre , None),
   ( Vinken ,  NN ),
   ( , , None),
   ( 61 , None),
   ( years , None),
   ( old , None),
   ( , , None),
   ( will , None),
   ( join , None),
   ( the , None),
   ( board , None),
   ( as , None),
   ( a , None),
   ( nonexecutive , None),
   ( director , None),
   ( Nov. , None),
   ( 29 , None),
   ( . , None)
]

由于我们的模型包含“Vinken”作为唯一背景钥匙,你可以从上述产出中看到,只有这一字塔和所有其他字都没有作为标签。

Setting a minimum frequency threshold

对于决定哪类标签在某种特定情况下最有可能发生, 深层类使用发生频率。 即便背景词和标签只发生一次,但我们能够通过cutoff设定最低频率门槛。 页: 1 在下面的例子中,我们沿用了以前考试的截断价值,我们在考试中培训了一个Unigram-Tagger。

Example


from nltk.tag import UnigramTagger
from nltk.corpus import treebank
train_sentences = treebank.tagged_sents()[:2500]
Uni_tagger = UnigramTagger(train_sentences, cutoff = 4)
test_sentences = treebank.tagged_sents()[1500:]
Uni_tagger.evaluate(test_sentences)

Output


0.7357651629613641
Advertisements