用nltk做词性标注

先上函数~~~

import nltk

函数用法

解释

pos_tag(text)

词性标注器,对分词后的文档做词性标注

nltk.tag.str2tuple(word+’/’+tag)

手动标注,返回(单词,标注)

corpus.tagged_words()

语料库(brown)的单词标注接口,返回(单词,标注)列表

corpus.tagged_words()

类似于单词标注,将已标注的词划分成句子

tagger = DefaultTagger(‘NN’)

tagger.tag(tokens)

tagger.evaluate(tagged_sents)

默认标注器

给分词文本默认标注

评估性能

patterns = [(regexp,tag)]

tagger = RegexpTagger(patterns)

tagger.tag(tokens)

tagger.evalute(tagged_sents)

正则表达式标注器

UnigramTagger(model=likely_tag_dict


,backoff=nltk.DefaultTagger(tag))

查询标注器(一元标注器),如果查询不到则设定默认标注backoff

BigramTagger(tag,backof)

二元标注器

TrigramTagger(tag,backoff)

三元标注器

ConfusionMatrix(label_tag_list,test_tag_list)

混淆矩阵,便捷查看标注错误数

规律总结

1.名词出现在限定词和形容词(包括数词)之后
2.过去分词一般跟在助动词(如have)之后
3.形容词一般在名词前,副词一般在动词前

关于n-gram标注器

一般形式 : key = (t1,t2,..tn-1,w1) , value = tn
数据稀疏问题:当n越大时,上下文(即key)的特异性增加,要标注的数据中包含的训练数据不存在的上下文不存在的概率越大,只能默认标注。所以n-gram标注器不应考虑跨越句子边界的上下文。
例如:

cfd = ConditionalFreqDist(
    ((a[1],b[1],c[0]),c[1])
    for sent in news_tagged_sents  #不考虑跨越句子边界的上下文
    for a,b,c in trigrams(sent))
组合标注器

解决精度和覆盖范围之间的权衡问题——尽可能使用更精确的问题,但在很多时候逊于范围更广的问题。
eg:bigram标注器->unigram标注器->默认标注器,从中依次寻找标注。

t0 = DefaultTagger('NN')
t1 = UnigramTagger(train_sents,backoff=t0)  #backoff称为回退技术
t2 = UnigramTagger(train_sents,backoff=t1)
t2.evaluate(test_sents)
存储标注器
import pickle
f = open('t2.pkl','wb')
pickle.dump(t2,f)
f.close()

f = open('t2.pkl','rb')
_t2 = pickle.load(f)
t2.evaluate(test_sents)

详细代码

简化的标记集

标记

含义

例子

JJ

形容词

new, good, high, special, big, local

ADV

动词

really, already, still, early, now

CNJ

连词

and, or, but, if, while, although

DET

限定词

the, a, some, most, every, no

EX

存在量词

there, there’s

FW

外来词

dolce, ersatz, esprit, quo, maitre

MOD

情态动词

will, can, would, may, must, should

NN

名词

year, home, costs, time, education

NN$

名词所有格

Rachel’s

NNS

名词复数

NP

专有名词

Alison, Africa, April, Washington

CD

数词

twenty-four, fourth, 1991, 14:24

PRO

代词

he, their, her, its, my, I, us

IN

介词

on, of, at, with, by, into, under

TO

词 to

to

UH

感叹词

ah, bang, ha, whee, hmpf, oops

VB

动词基本形式

is, has, get, do, make, see, run

VBD

动词过去式

said, took, told, made, asked

VBG

动词现在分词

making, going, playing, working

VBN

过去分词

given, taken, begun, sung

VBZ

动词第三人称单数

gives,studies,goes,has

WH

Wh 限定词

who, which, when, what, where, how

.

标点符号

. , ; !

更多