- Natural Language Toolkit - Discussion
- Natural Language Toolkit - Useful Resources
- Natural Language Toolkit - Quick Guide
- Natural Language Toolkit - Text Classification
- Synonym & Antonym Replacement
- Natural Language Toolkit - Word Replacement
- Stemming & Lemmatization
- Looking up words in Wordnet
- Training Tokenizer & Filtering Stopwords
- Natural Language Toolkit - Tokenizing Text
- Natural Language Toolkit - Getting Started
- Natural Language Toolkit - Introduction
- Natural Language Toolkit - Home
自然语言工具包
- 自然语言工具箱——改造树木
- 自然语言工具箱——改造楚克
- Chunking & Information 排外
- 自然语言工具箱——包装
- 自然语言工具包 - 更多国家 Taggers
- 自然语言工具箱——将Taggers混为一谈
- 自然语言工具箱——Unigram Tagger
- 部分Speech(POS)基本原理
- Corpus Readers and Customs Corpora
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
More Natural Language Toolkit Taggers
Affix Tagger
另外一个重要的背景类别是AffixTagger。 在AffixTagger类别中,情况要么预先确定,要么只是字面。 这就是AffixTagger阶级能够根据一字开始或结束的固定长子学习标签的原因。
How does it work?
其工作取决于所列举的论点,该论点明确了预设或补满的期限。 违约价值为3。 但是,它如何区分AffixTagger这一类人是否学过“前身”或“uff”一词?
affix_length=active 如果固定装置的价值是肯定的,则意味着AffixTagger的班级将学习字面。
affix_length=negative 如果固定装置的数值为负值,则意味着AffixTagger的班级将学习其子。
为了更清楚地说明这一点,我们将在紧凑的树木行刑上使用AffixTagger等舱。
Example
在这种例子中,AffixTagger将学习“前言”,因为我们没有具体说明“装饰”论点的任何价值。 论点将具有违约价值3——
from nltk.tag import AffixTagger from nltk.corpus import treebank train_sentences = treebank.tagged_sents()[:2500] Prefix_tagger = AffixTagger(train_sentences) test_sentences = treebank.tagged_sents()[1500:] Prefix_tagger.evaluate(test_sentences)
Output
0.2800492099250667
让我们在下面的事例中看到,当我们为确定第4项价值——宽恕论点——提供准确的是什么。
from nltk.tag import AffixTagger from nltk.corpus import treebank train_sentences = treebank.tagged_sents()[:2500] Prefix_tagger = AffixTagger(train_sentences, affix_length=4 ) test_sentences = treebank.tagged_sents()[1500:] Prefix_tagger.evaluate(test_sentences)
Output
0.18154947354966527
Example
在这种例子中,AffixTagger将学习“uff”一词,因为我们将具体指明“fix”论点的负面价值。
from nltk.tag import AffixTagger from nltk.corpus import treebank train_sentences = treebank.tagged_sents()[:2500] Suffix_tagger = AffixTagger(train_sentences, affix_length = -3) test_sentences = treebank.tagged_sents()[1500:] Suffix_tagger.evaluate(test_sentences)
Output
0.2800492099250667
Brill Tagger
Brill Tagger是一个基于转变的夸张。 图瓦卢 第一组夸张,不属于SequentialBackoffTagger。 除此以外,BrillTagger使用了一系列规则,以纠正初步夸大的结果。
How does it work?
培训BrillTagger BrillTaggerTrainer 我们确定了以下职能:
defrain_brill_tagger(初始_tagger, 火车_sentences, **kwargs-
templates = [ brill.Template(brill.Pos([-1])), brill.Template(brill.Pos([1])), brill.Template(brill.Pos([-2])), brill.Template(brill.Pos([2])), brill.Template(brill.Pos([-2, -1])), brill.Template(brill.Pos([1, 2])), brill.Template(brill.Pos([-3, -2, -1])), brill.Template(brill.Pos([1, 2, 3])), brill.Template(brill.Pos([-1]), brill.Pos([1])), brill.Template(brill.Word([-1])), brill.Template(brill.Word([1])), brill.Template(brill.Word([-2])), brill.Template(brill.Word([2])), brill.Template(brill.Word([-2, -1])), brill.Template(brill.Word([1, 2])), brill.Template(brill.Word([-3, -2, -1])), brill.Template(brill.Word([1, 2, 3])), brill.Template(brill.Word([-1]), brill.Word([1])), ] trainer = brill_trainer.BrillTaggerTrainer(initial_tagger, templates, deterministic=True) return trainer.train(train_sentences, **kwargs)
我们可以看到,这项职能需要 初始_tagger和train_sentences。 选取 采用BrillTemplate接口的论证和模板清单。 BrillTemplate接口见nltk.tbl.template。 模块。 其中一项是brill.Template。
基于转变的夸大公司的主要作用是制定改造规则,纠正最初的夸大公司的产出,使之与培训判决更加一致。 让我们看到以下工作流程:
Example
例如,我们将使用combine_tagger。 我们在从NgramTagger后继链中(在前对等)合并起来时所创造的。 页: 1 首先,让我们利用Combine.tagger来评估结果,然后将结果作为 初始_tagger用于培训钻探。
from tagger_util import backoff_tagger from nltk.tag import UnigramTagger from nltk.tag import BigramTagger from nltk.tag import TrigramTagger from nltk.tag import DefaultTagger from nltk.corpus import treebank train_sentences = treebank.tagged_sents()[:2500] back_tagger = DefaultTagger( NN ) Combine_tagger = backoff_tagger( train_sentences, [UnigramTagger, BigramTagger, TrigramTagger], backoff = back_tagger ) test_sentences = treebank.tagged_sents()[1500:] Combine_tagger.evaluate(test_sentences)
Output
0.9234530029238365
现在,让我们在以下时间看到评价结果:Combine_tagger被作为 初始_tagger用于培训博尔-波段。
from tagger_util import train_brill_tagger brill_tagger = train_brill_tagger(combine_tagger, train_sentences) brill_tagger.evaluate(test_sentences)
Output
0.9246832510505041
我们可以注意到BrillTagger。 在Combine_tagger上,班级的准确性略有提高。
Complete implementation example
from tagger_util import backoff_tagger from nltk.tag import UnigramTagger from nltk.tag import BigramTagger from nltk.tag import TrigramTagger from nltk.tag import DefaultTagger from nltk.corpus import treebank train_sentences = treebank.tagged_sents()[:2500] back_tagger = DefaultTagger( NN ) Combine_tagger = backoff_tagger(train_sentences, [UnigramTagger, BigramTagger, TrigramTagger], backoff = back_tagger) test_sentences = treebank.tagged_sents()[1500:] Combine_tagger.evaluate(test_sentences) from tagger_util import train_brill_tagger brill_tagger = train_brill_tagger(combine_tagger, train_sentences) brill_tagger.evaluate(test_sentences)
Output
0.9234530029238365 0.9246832510505041
TnT Tagger
TnT Tagger, 代表Tringrams'nTags, 是一个统计夸张,以第二行“Markov”模式为基础。
How does it work?
在以下步骤的帮助下,我们可以理解TnT tagger的工作:
首先根据培训数据,TnT tegger维持了几个内部FreqDist和 ConditionsalFreqDist。
之后,这些频率分布情况将计算出图表和三图。
现在,通过使用频率进行标记时,它将计算每个字的可能标签的概率。
因此,它不建造NgramTagger的背后链,而是使用所有Ngram模型共同选择每一字的最佳标签。 让我们在以下例子中用TnT tagger来评估准确性:
from nltk.tag import tnt from nltk.corpus import treebank train_sentences = treebank.tagged_sents()[:2500] tnt_tagger = tnt.TnT() tnt_tagger.train(train_sentences) test_sentences = treebank.tagged_sents()[1500:] tnt_tagger.evaluate(test_sentences)
Output
0.9165508316157791
我们的精度略低于我们Brill Tagger。
请注意,我们需要在 评价()之前打电话train(>)。 否则,我们将达到0%的准确性。
Advertisements