本文分享自 6丁一的猫 的博客,主要是python调用hanlp进行命名实体识别的方法介绍。以下为分享的全文。
1、python与jdk版本位数一致
2、pip install jpype1(python3.5)
3、类库hanlp.jar包、模型data包、配置文件hanlp.properties放在一个新建目录
4、修改hanlp.properties中root根目录,找到data
代码调用如下:
1|#coding:utf-8
2|'''
3|Created on 2017-11-21
4|
5|@author: 刘帅
6|'''
7|
8|
9|from jpype import *
10|
11|startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanlp\hanlp-1.3.4.jar;D:\hanlp", "-Xms1g", "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:
12|HanLP = JClass('com.hankcs.hanlp.HanLP')
13|# 中文分词
14|print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
testCases = [
15| "商品和服务",
16| "结婚的和尚未结婚的确实在干扰分词啊",
17| "买水果然后来世博园最后去世博会",
18| "中国的首都是北京",
19| "欢迎新老师生前来就餐",
20| "工信×××干事每月经过下属科室都要亲×××代24×××换机等技术性器件的安装工作",
21| "随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。"]
22|for sentence in testCases: print(HanLP.segment(sentence))
23|# 命名实体识别与词性标注
24|NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
25|print(NLPTokenizer.segment('×××计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
26|# 关键词提取
27|document = "水利部水资源司司长陈明忠9月29日在×××新闻办举行的新闻发布会上透露," \
28| "根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
29| "有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
30| "严格地进行水资源论证和取水许可的批准。"
31|print(HanLP.extractKeyword(document, 2))
32|# 自动摘要
33|print(HanLP.extractSummary(document, 3))
34|# 依存句法分析
35|print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))
36|shutdownJVM()
结果如下:
1|[你好/vl, ,/w, 欢迎/v, 在/p, Python/nx, 中/f, 调用/v, HanLP/nx, 的/ude1, API/nx]
2|[商品/n, 和/cc, 服务/vn]
3|[结婚/vi, 的/ude1, 和/cc, 尚未/d, 结婚/vi, 的/ude1, 确实/ad, 在/p, 干扰/vn, 分词/n, 啊/y]
4|[买/v, 水果/n, 然后/c, 来/vf, 世博园/n, 最后/f, 去/vf, 世博会/n]
5|[中国/ns, 的/ude1, 首都/n, 是/vshi, 北京/ns]
6|[欢迎/v, 新/a, 老/a, 师生/n, 前来/vi, 就餐/vi]
作者:6丁一的猫