NLTK中文词性标注

1.说明

学习自然语言处理,一定会参考NLTK,主要是学习它的思路,从设计地角度看看能做什么.其本质就是把语言看成字符串,字符串组,字符串集,寻找其间规律.

NLTK是多语言支持的,但目前网上的例程几乎没有用NLTK处理中文的,其实可以做。比如标注功能,它自身提供了带标注的中文语库(繁体语料库sinica_treebank).下面来看看怎样通过数据训练来实现中文词性自动标注.

可以利用它来标注中本,也可以寻找和验证一些隐性的规律.

2.相关知识

1)词性标注

词汇按它们的词性(parts-of-speech,POS)分类以及相应的标注它们的过程,词性包括:名词、动词、形容词,副词等.

2)中文字符的显示

Python内部编码是unicode,所以输出中文常常像这样"\u4eba\u5de5",用print函数输出时,将自动转换成本地字符集,也可以使用encode(‘utf-8’)函数转换.

3)数据集,训练集,评估

有监督的机器学习一般都是把数据分成两个部分,一部分用于训练,一部分用于测试,还可以通过不同分组交叉验证. Nltk提供了evaluate()函数评估标注效果.

4)默认标注(Default Tagger)

事先对语料库做了统计(利用nltk.FreqDist()),出现最多的是名词.

在这里,默认标注为名词

5)正则表达式标注(Regexp Tagger)

用匹配模式分配标记给标识符.在英文处理中,常用此方式识别各种形态(时态,后缀等),中文识别中也可以使用它来识别标点,数字等.

6)一元标注(Unigram Tagger)

一元标注基于一个简单的统计算法:对每个标识符分配这个独特的标识符最有可能的标记.

在这里就是分配给具体单词,它最常出现的词性.

7)多元标注(N-gram Tagger)

多元标注使用训练集来确定对每个上下文哪个词性标记最有可能。上下文指当前词和它前面n-1个标识符的词性标记.

在这里,就是找一些规律,比如: XX常出现在名词之前, YY常出现在动词之后.通过某个词以及它之前那个词的词性来判断它的词性.这就是二元标注.同理,可以生成三元甚至多元标注.词的距离越远影响越小,也更占用资源,一般二元到三元就够了.

8)组合标注

更精确的算法在很多时候落后于具有更广覆盖范围的算法(比如满足三元标的词可能非常少),所以有时我们组合多个标注器,

在这里,组合bigram标注器、unigram标注器和一个默认标注器

3.代码

#encoding=utf-8

importnltk

fromnltk.corpus import sinica_treebank#带标注的中文语料库

#用print输出本地字符格式

defdump_result(result):

for item in result:

print item[0],",",item[1],

print

#等标注的词,以空格分词(分词问题不在此讨论)

raw = '人工智能能夠有效地甄別虛假低俗內容控制傳播當前業界學界重點研究問題'.decode('utf-8')

tokens= nltk.word_tokenize(raw)

sinica_treebank_tagged_sents= sinica_treebank.tagged_sents()#以句为单位标

size =int(len(sinica_treebank_tagged_sents) * 0.9)

train_sents= sinica_treebank_tagged_sents[:size]#90%数据作为训练集

test_sents= sinica_treebank_tagged_sents[size:]#10%数据作为测试集

t0 =nltk.DefaultTagger('Nab')#词性的默认值为名词

t1 =nltk.UnigramTagger(train_sents, backoff=t0)#一元标注

t2 =nltk.BigramTagger(train_sents, backoff=t1)#多元(二元)标注

dump_result(t2.tag(tokens))

printt2.evaluate(test_sents)#根据带标注的文本,评估标注器的正确率

4.主要思想

词性标注的主要思想是提炼最容易出现的可能性(在不同层次:所有词,具体词,词间关系),它是一套统计方法,也是分类器的一个应用.

NLTK的词性标注只是抛砖引玉,使用同样方法,还也可以实现标注词义(一词多义的消歧),字音(多音字)等等.

通过它来看看自然语言的处理方法,有了自己的工具,也能更灵活地使用这个功能,目前还很简陋,下面来看看怎么改进它.

5.改进

1)缺少训练数据

训练数据不足,或者一些标注本身的问题,需要改进和增加训练数据.错误分类可以通过大量数据的校正,同时也需考虑语境,选择不同训练集.

上例中的sinica_treebank语料库自带1万个句子, 10万左右的词,文本也比较单一,执行以上程序后可以看到,准确率在75%左右.

想要训练出更理想的标注器,需要更多带标注的数据(有监督学习).数据从哪儿来呢?其实也简单,可以用现有靠谱的分词工具(比如:在线的”语言云”,离线的”结巴”)的标注结果去训练你自己的标注器.

2)有一些词本身就是特例,就如同”海豚不是鱼类”

统计归类本身无法处理,除了统计的方案,还可以添加一一对应的词与标注的映射表来解决此类问题.

3)新词/不常用词

未被训练过的词,可以用一些特殊标记加入字典,在数据积累到一定数量时总结其规律.

N元标注再抽象一个层次是发现词性间的规律,比如"名词前是形容词的可能性比较大",借此来处理不能识别的"新词".

也可以通过WordNet等字典查看具体词的词性.有一些词虽然很少出现,但词义和词性比较单一.对多义词,可以选择其最常用的词性.

4)特殊规则

有些专业领域会有一些特殊的习惯用法,也可以通过它制定一些规则.通过正则表达式标注器实现.

5)语义,形态…

更深层次的语义分析

6.参考

1)Categorizing and Tagging Words

http://www.nltk.org/book_1ed/ch05.html

2)结巴词性标注

http://www.mamicode.com/info-detail-562618.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容