nlp詞性標註

nlp詞性標註

與分詞函數不一樣,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
相關文章
相關標籤/搜索