nlp词性标注

Posted 乐水悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nlp词性标注相关的知识,希望对你有一定的参考价值。

nlp词性标注

与分词函数不同,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

以上是关于nlp词性标注的主要内容,如果未能解决你的问题,请参考以下文章

NLP词性标注数据准备及模型训练实例

NLPPython3.6.5中使用 Stanford NLP工具包进行词性标注

NLP 教程:词性标注依存分析和命名实体识别解析与应用

隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注

自然语言处理NLP之BERTBERT是什么智能问答阅读理解分词词性标注数据增强文本分类BERT的知识表示本质

Stanford Corenlp学习笔记——词性标注