NLTK中文詞性標注

1.說明

學習自然語言處理,一定會參考NLTK,主要是學習它的思路,從設計地角度看看能做什么.其本質就是把語言看成字符串隶校,字符串組夺姑,字符串集蜈漓,尋找其間規(guī)律.

NLTK是多語言支持的,但目前網(wǎng)上的例程幾乎沒有用NLTK處理中文的,其實可以做宫盔。比如標注功能,它自身提供了帶標注的中文語庫(繁體語料庫sinica_treebank).下面來看看怎樣通過數(shù)據(jù)訓練來實現(xiàn)中文詞性自動標注.

可以利用它來標注中本迎变,也可以尋找和驗證一些隱性的規(guī)律.

2.相關知識

1)詞性標注

詞匯按它們的詞性(parts-of-speech,POS)分類以及相應的標注它們的過程,詞性包括:名詞、動詞飘言、形容詞,副詞等.

2)中文字符的顯示

Python內(nèi)部編碼是unicode,所以輸出中文常常像這樣"\u4eba\u5de5",用print函數(shù)輸出時,將自動轉換成本地字符集,也可以使用encode(‘utf-8’)函數(shù)轉換.

3)數(shù)據(jù)集,訓練集,評估

有監(jiān)督的機器學習一般都是把數(shù)據(jù)分成兩個部分,一部分用于訓練,一部分用于測試,還可以通過不同分組交叉驗證. Nltk提供了evaluate()函數(shù)評估標注效果.

4)默認標注(Default Tagger)

事先對語料庫做了統(tǒng)計(利用nltk.FreqDist()),出現(xiàn)最多的是名詞.

在這里衣形,默認標注為名詞

5)正則表達式標注(Regexp Tagger)

用匹配模式分配標記給標識符.在英文處理中,常用此方式識別各種形態(tài)(時態(tài)姿鸿,后綴等)谆吴,中文識別中也可以使用它來識別標點,數(shù)字等.

6)一元標注(Unigram Tagger)

一元標注基于一個簡單的統(tǒng)計算法:對每個標識符分配這個獨特的標識符最有可能的標記.

在這里就是分配給具體單詞苛预,它最常出現(xiàn)的詞性.

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

多元標注使用訓練集來確定對每個上下文哪個詞性標記最有可能句狼。上下文指當前詞和它前面n-1個標識符的詞性標記.

在這里,就是找一些規(guī)律,比如: XX常出現(xiàn)在名詞之前, YY常出現(xiàn)在動詞之后.通過某個詞以及它之前那個詞的詞性來判斷它的詞性.這就是二元標注.同理热某,可以生成三元甚至多元標注.詞的距離越遠影響越小,也更占用資源,一般二元到三元就夠了.

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 = '人工智能能夠有效地甄別虛假低俗內(nèi)容控制傳播當前業(yè)界學界重點研究問題'.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%數(shù)據(jù)作為訓練集

test_sents= sinica_treebank_tagged_sents[size:]#10%數(shù)據(jù)作為測試集

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)#根據(jù)帶標注的文本,評估標注器的正確率

4.主要思想

詞性標注的主要思想是提煉最容易出現(xiàn)的可能性(在不同層次:所有詞,具體詞,詞間關系)秘遏,它是一套統(tǒng)計方法丘薛,也是分類器的一個應用.

NLTK的詞性標注只是拋磚引玉,使用同樣方法邦危,還也可以實現(xiàn)標注詞義(一詞多義的消歧),字音(多音字)等等.

通過它來看看自然語言的處理方法,有了自己的工具,也能更靈活地使用這個功能,目前還很簡陋洋侨,下面來看看怎么改進它.

5.改進

1)缺少訓練數(shù)據(jù)

訓練數(shù)據(jù)不足,或者一些標注本身的問題,需要改進和增加訓練數(shù)據(jù).錯誤分類可以通過大量數(shù)據(jù)的校正,同時也需考慮語境倦蚪,選擇不同訓練集.

上例中的sinica_treebank語料庫自帶1萬個句子, 10萬左右的詞希坚,文本也比較單一,執(zhí)行以上程序后可以看到,準確率在75%左右.

想要訓練出更理想的標注器,需要更多帶標注的數(shù)據(jù)(有監(jiān)督學習).數(shù)據(jù)從哪兒來呢?其實也簡單,可以用現(xiàn)有靠譜的分詞工具(比如:在線的”語言云”,離線的”結巴”)的標注結果去訓練你自己的標注器.

2)有一些詞本身就是特例,就如同”海豚不是魚類”

統(tǒng)計歸類本身無法處理,除了統(tǒng)計的方案,還可以添加一一對應的詞與標注的映射表來解決此類問題.

3)新詞/不常用詞

未被訓練過的詞陵且,可以用一些特殊標記加入字典裁僧,在數(shù)據(jù)積累到一定數(shù)量時總結其規(guī)律.

N元標注再抽象一個層次是發(fā)現(xiàn)詞性間的規(guī)律,比如"名詞前是形容詞的可能性比較大"滩报,借此來處理不能識別的"新詞".

也可以通過WordNet等字典查看具體詞的詞性.有一些詞雖然很少出現(xiàn),但詞義和詞性比較單一.對多義詞锅知,可以選擇其最常用的詞性.

4)特殊規(guī)則

有些專業(yè)領域會有一些特殊的習慣用法,也可以通過它制定一些規(guī)則.通過正則表達式標注器實現(xiàn).

5)語義,形態(tài)…

更深層次的語義分析

6.參考

1)Categorizing and Tagging Words

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

2)結巴詞性標注

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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脓钾,隨后出現(xiàn)的幾起案子售睹,更是在濱河造成了極大的恐慌,老刑警劉巖可训,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昌妹,死亡現(xiàn)場離奇詭異捶枢,居然都是意外死亡,警方通過查閱死者的電腦和手機飞崖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門烂叔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人固歪,你說我怎么就攤上這事蒜鸡。” “怎么了牢裳?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵逢防,是天一觀的道長。 經(jīng)常有香客問我蒲讯,道長忘朝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任判帮,我火速辦了婚禮局嘁,結果婚禮上,老公的妹妹穿的比我還像新娘晦墙。我一直安慰自己悦昵,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布偎痛。 她就那樣靜靜地躺著旱捧,像睡著了一般独郎。 火紅的嫁衣襯著肌膚如雪踩麦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天氓癌,我揣著相機與錄音谓谦,去河邊找鬼。 笑死贪婉,一個胖子當著我的面吹牛反粥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疲迂,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼才顿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尤蒿?” 一聲冷哼從身側響起郑气,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腰池,沒想到半個月后尾组,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忙芒,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年讳侨,在試婚紗的時候發(fā)現(xiàn)自己被綠了呵萨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡跨跨,死狀恐怖潮峦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勇婴,我是刑警寧澤跑杭,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站咆耿,受9級特大地震影響德谅,放射性物質發(fā)生泄漏。R本人自食惡果不足惜萨螺,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一窄做、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慰技,春花似錦椭盏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至艾帐,卻和暖如春乌叶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柒爸。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工准浴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捎稚。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓乐横,卻偏偏與公主長得像,于是被迫代替她去往敵國和親今野。 傳聞我的和親對象是個殘疾皇子葡公,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容