與分詞函數不一樣,jieba庫和pyltp庫詞性標註函數上形式相差極大。python
jieba的詞性標註函數與分詞函數相近,jieba.posseg.cut(sentence,HMM=True)
函數有兩個參數,sentence是一段文本。函數
pyltp的詞性標註函數pyltp.Postagger.postag(words)
有一個參數,words是分詞模塊的返回值,或者是Python原生的list類型。post
nltk中的詞性標註函數與pyltp的類似,也是輸入list類型。nltk.pos_tag(tokens,tagset=None,lang='eng')
中,tokens是list類型的詞組;tagset是指定的標註集,有「universal」「wsj」和「brown」,不一樣的標註集標識詞性的tag不一樣;lang是語言類型,目前支持較好的有「eng」和「rus」,對「zho」的支持還有待改進。code
#coding:utf-8 import os import nltk import jieba import jieba.posseg as pseg from pyltp import Segmentor,Postagger text='你是個人眼' #jieba分詞同時標註詞性 segs=pseg.cut(text) for word,pos in segs: print('%s %s'%(word,pos)) #pyltp以list爲參數標註詞性 data_dir=r"D:\ltp_data" segmentor=Segmentor() segmentor.load(os.path.join(data_dir,'cws.model')) ptgger=Postagger() ptgger.load(os.path.join(data_dir,'pos.model')) segs2=segmentor.segment(text) segs2=list(segs2) poses2=ptgger.postag(segs2) for i in range(len(segs2)): print('%s %s'%(segs2[i],poses2[i])) segmentor.release() ptgger.release() segs3=nltk.pos_tag(segs2,lang='zho') for word,pos in segs3: print('%s %s'%(word,pos))
運行結果以下:token
你 r 是 v 我 r 的 uj 眼 n 你 r 是 v 我 r 的 u 眼 n 你 JJ 是 NNP 我 NNP 的 NNP 眼 NN