与分词函数不同, jieba 库和 pyltp 库词性标注函数上形式相差极大.
jieba 的词性标注函数与分词函数相近,
jieba.posseg.cut(sentence,HMM=True)
函数有两个参数, sentence 是一段文本.
pyltp 的词性标注函数
pyltp.Postagger.postag(words)
有一个参数, words 是分词模块的返回值, 或者是 Python 原生的 list 类型.
nltk 中的词性标注函数与 pyltp 的相似, 也是输入 list 类型.
nltk.pos_tag(tokens,tagset=None,lang='eng')
中, tokens 是 list 类型的词组; tagset 是指定的标注集, 有 "universal""wsj"和"brown", 不同的标注集标识词性的 tag 不同; lang 是语言类型, 目前支持较好的有"eng"和"rus", 对"zho" 的支持还有待改进.
- #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))
运行结果如下:
你 r
是 v
我 r
的 uj
眼 n
你 r
是 v
我 r
的 u
眼 n
你 JJ
是 NNP
我 NNP
的 NNP
眼 NN
来源: http://www.bubuko.com/infodetail-2576612.html