java调⽤哈⼯⼤ltp_哈⼯⼤语⾔技术平台LTP的⽤法
简介:哈⼯⼤的语⾔技术平台 (LTP)提供了中⽂分词、词性标注、命名实体识别、依存句法分析、语义⾓⾊标注等丰富、 ⾼效、精准的⾃然语⾔处理技术。
⽤法:官⽅提供了Java、C++、python、C#、Ruby接⼝,这篇使⽤⽅法是关于python接⼝pyltp的。⾸先需要下载模型⽂件,然后就是安装pyltp
安装:pip install pyltp
1.分词
import pyltp
from pyltp import Segmentor#导⼊Segmentor库
math_path = "D:\ltp3.4.del"#LTP分词模型库
segmentor = Segmentor()#实例化分词模块
segmentor.load(math_path)#加载分词库
words = segmentor.segment("中国是⼀个⾃由、和平的国家")
print(' '.join(words).split())#分割分词后的结果
分词结果:['中国', '是', '⼀个', '⾃由', '、', '和平', '的', '国家']
2.词性标记
import pyltp
from pyltp import Postagger#导⼊Postagger库
math_path = "D:\ltp3.4.del"#LTP词性标注模型库
postagger = Postagger() #实例化词性模块
postagger.load(math_path)#加载词性库
postags = postagger.postag(words)#这⾥的words是分词后的结果
print(' '.join(postags).split())#分割标注后的结果
标注结果:['ns', 'v', 'm', 'a', 'wp', 'a', 'u', 'n']
3.命名实体识别
import pyltp
from pyltp import NamedEntityRecognizer#导⼊库NamedEntityRecognizer
math_path = "D:\ltp3.4.del"#LTP命名实体识别模型库
recognizer = NamedEntityRecognizer() # 初始化实例
recognizer.load(math_path)#加载实体识别库
words = ['中国', '是', '⼀个', '⾃由', '、', '和平', '的', '国家']java调用python模型
postags = ['ns', 'v', 'm', 'a', 'wp', 'a', 'u', 'n']
netags = ize(words, postags) # 命名实体识别,这⾥的words是分词的结果,postags是词性标注的结果
print(' '.join(netags).split())#分割识别后的结果
结果:
S-NsOOOOOOO
4.依存句法分析
import pyltp
from pyltp import Parser#导⼊库Parser
math_path = "D:\ltp3.4.del"#LTP依存分析模型库
parser = Parser() # 初始化实例
parser.load(math_path)#加载依存分析库
words = ['中国', '是', '⼀个', '⾃由', '、', '和平', '的', '国家']
postags = ['ns', 'v', 'm', 'a', 'wp', 'a', 'u', 'n']
arcs = parser.parse(words, postags) # 句法分析,这⾥的words是分词的结果,postags是词性标注的结果
print ("\t".join("%d:%s" % (arc.head, lation) for arc in arcs) ) # 依存分析,
结果:
2:SBV0:HED8:ATT8:ATT6:WP4:COO4:RAD2:VOB
注:arc.head 表⽰依存弧的⽗节点词的索引。ROOT节点的索引是0,第⼀个词开始的索引依次为1、2、3…
arc.head 表⽰依存弧的⽗节点词的索引,lation 表⽰依存弧的关系。
5.语义⾓⾊标注
import pyltp
from pyltp import SementicRoleLabeller#导⼊库SementicRoleLabeller
math_path = "D:\ltp3.4.del"#LTP语义⾓⾊标注模型库
labeller = SementicRoleLabeller() # 初始化实例
labeller.load(math_path)#加载语义标注库
words = ['中国', '是', '⼀个', '⾃由', '、', '和平', '的', '国家']
postags = ['ns', 'v', 'm', 'a', 'wp', 'a', 'u', 'n']
roles = labeller.label(words, postags, arcs) # 语义⾓⾊标注,这⾥的words是分词结果,postags是词性标注结果,arcs是依存句法分析结果
# 打印结果
for role in roles:
print (role.index, "".join(
["%s:(%d,%d)" % (arg.name, arg.range.start, d) for arg in role.arguments]))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。