pyhanlp的github:https://github.com/hankcs/pyhanlp
pyhanlp官方文档:https://pypi.org/project/pyhanlp/
HanLP主文档目录:https://github.com/hankcs/HanLP/blob/1.x/README.md
pyhanlp案例:https://github.com/hankcs/pyhanlp/tree/master/tests/demos
中文分词≠自然语言处理!
中文分词只是第一步;HanLP从中文分词开始,覆盖词性标注、命名实体识别、句法分析、文本分类等常用任务,提供了丰富的API。
不同于一些简陋的分词类库,HanLP精心优化了内部数据结构和IO接口,做到了毫秒级的冷启动、千万字符每秒的处理速度,而内存最低仅需120MB。无论是移动设备还是大型集群,都能获得良好的体验。
不同于市面上的商业工具,HanLP提供训练模块,可以在用户的语料上训练模型并替换默认模型,以适应不同的领域。项目主页上提供了详细的文档,以及在一些开源语料上训练的模型。
HanLP希望兼顾学术界的精准与工业界的效率,在两者之间取一个平衡,真正将自然语言处理普及到生产环境中去。
我们使用的pyhanlp是用python包装了HanLp的java接口。
HanLP.segment 分词,把一句话分词很碎的词,有准的有不准的,但是这个方法是唯一一个能把词性输出的方法,关于词性可以做很多的延伸和拓展,比如分析一段话的精髓,就可以简单的用词性排除和词性组合法;
HanLP.extractPhrase 分短语,把一句话分成几个短语,会带一些词语组合(联想),比如A+B组合成一个词,A+C又组合成了一个词;
HanLP.extractSummary 提取段落的摘要,提取出该段落/文章的一些摘要信息,建议组合使用,比如 一个for循环 把每个摘要再次进行分词
HanLP.extractKeyword 提取文章段落的关键词,会精准的提取出一些词语,但是在提取出词语的数量少会比 HanLP.segment少很多, 建议和 HanLP.extractSummary 组合使用;
一、python下安装pyhanlp
pip安装
pip install pyhanlp
第一次import pyhanlp会下载一个比较大的数据集,需要耐心等待下,后面再import就不会有了。
from pyhanlp import *
二、pyhanlp使用
1.分词
HanLP.segment
from pyhanlp import *
conten_list=HanLP.parseDependency("我爱自然语言处理技术!")
2.分词和词性标注
HanLP.segment
from pyhanlp import *
conten_list=HanLP.parseDependency("我爱自然语言处理技术!")
for item in content_list:
print(item.word,item.nature)
3.依存句法分析
from pyhanlp import *
s_dep=HanLP.parseDependency("我爱自然语言处理技术!")
print(s_dep)
4.关键词提取
内部采用TextRankKeyword实现,用户可以直接调用TextRankKeyword.getKeywordList(document, size)
from pyhanlp import *
content = (
"程序员(英文Programmer)是从事程序开发、维护的专业人员。"
"一般将程序员分为程序设计人员和程序编码人员,"
"但两者的界限并不非常清楚,特别是在中国。"
"软件从业人员分为初级程序员、高级程序员、系统"
"分析员和项目经理四大类。")
TextRankKeyword = JClass("com.hankcs.hanlp.summary.TextRankKeyword")
keyword_list = HanLP.extractKeyword(content, 5)
print(keyword_list)
# print(help(HanLP))
5.摘要提取
采用TextRankSentence = JClass("com.hankcs.hanlp.summary.TextRankSentence")
from pyhanlp import *
document = '''水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露,
根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标,
有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批,
严格地进行水资源论证和取水许可的批准。
'''
TextRankSentence = JClass("com.hankcs.hanlp.summary.TextRankSentence")
sentence_list = HanLP.extractSummary(document, 3)
print(sentence_list)
sentence_list = HanLP.extractSummary(document, 2)
print(sentence_list)
sentence_list = HanLP.extractSummary(document, 1)
print(sentence_list)
sentence_list = HanLP.getSummary(document, 50)
print(sentence_list)
sentence_list = HanLP.getSummary(document, 30)
print(sentence_list)
sentence_list = HanLP.getSummary(document, 20)
print(sentence_list)
6.感知机词法分析器
from pyhanlp import *
PerceptronLexicalAnalyzer=JClass('com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer')
analyzer=PerceptronLexicalAnalyzer()
print(analyzer.analyze("广州菲宇科技的董事长陈晴小姐到北京中关村的科技园参观学习"))
7.中国人名识别
from pyhanlp import *
NER=HanLP.newSegment().enableNameRecognize(True)
p_name=NER.seg('马云、雷军、汪洋、张朝阳的搜狗、韩寒的书、马化腾的腾讯')
print(p_name)
8.音译名识别
from pyhanlp import *
sentence = '微软的比尔盖茨、Facebook的扎克伯格跟桑德博格、亚马逊的贝索斯、苹果的库克,这些硅谷的科技人'
person_ner = HanLP.newSegment().enableTranslatedNameRecognize(True)
p_name = person_ner.seg(sentence)
print(p_name)
9.短语提取
from pyhanlp import *
document = '''水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露,
根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标,
有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批,
严格地进行水资源论证和取水许可的批准。
'''
phraseList = HanLP.extractPhrase(document, 3)
print(phraseList)
10.简繁转换
from pyhanlp import *
Jianti = HanLP.convertToSimplifiedChinese("我愛自然語言處理技術!")
Fanti = HanLP.convertToTraditionalChinese("我爱自然语言处理技术!")
print(Jianti)
print(Fanti)
11.拼音转换
from pyhanlp import *
s = '责任重于泰山'
pinyinList = HanLP.convertToPinyinList(s)
for pinyin in pinyinList:
print(pinyin.getPinyinWithoutTone(),pinyin.getTone(), pinyin, pinyin.getPinyinWithToneMark())
声母、韵母
from pyhanlp import *
s = '责任重于泰山'
pinyinList = HanLP.convertToPinyinList(s)
for pinyin in pinyinList:
print(pinyin.getShengmu(), pinyin.getYunmu())
12.pyhanlp可视化
pyhanlp提供了一个很好的展示交付界面,只要一句命令就能启动一个web服务
hanlp serve
登录http://localhost:8765就能看下可视化界面,能看到分词结果和依存关系的结果
HanLP词性表
a 形容词
ad 副形词
ag 形容词性语素
al 形容词性惯用语
an 名形词
b 区别词
begin 仅用于始##始
bg 区别语素
bl 区别词性惯用语
c 连词
cc 并列连词
d 副词
dg 辄,俱,复之类的副词
dl 连语
e 叹词
end 仅用于终##终
f 方位词
g 学术词汇
gb 生物相关词汇
gbc 生物类别
gc 化学相关词汇
gg 地理地质相关词汇
gi 计算机相关词汇
gm 数学相关词汇
gp 物理相关词汇
h 前缀
i 成语
j 简称略语
k 后缀
l 习用语
m 数词
mg 数语素
Mg 甲乙丙丁之类的数词
mq 数量词
n 名词
nb 生物名
nba 动物名
nbc 动物纲目
nbp 植物名
nf 食品,比如“薯片”
ng 名词性语素
nh 医药疾病等健康相关名词
nhd 疾病
nhm 药品
ni 机构相关(不是独立机构名)
nic 下属机构
nis 机构后缀
nit 教育相关机构
nl 名词性惯用语
nm 物品名
nmc 化学品名
nn 工作相关名词
nnd 职业
nnt 职务职称
nr 人名
nr1 复姓
nr2 蒙古姓名
nrf 音译人名
nrj 日语人名
ns 地名
nsf 音译地名
nt 机构团体名
ntc 公司名
ntcb 银行
ntcf 工厂
ntch 酒店宾馆
nth 医院
nto 政府机构
nts 中小学
ntu 大学
nx 字母专名
nz 其他专名
o 拟声词
p 介词
pba 介词“把”
pbei 介词“被”
q 量词
qg 量词语素
qt 时量词
qv 动量词
r 代词
rg 代词性语素
Rg 古汉语代词性语素
rr 人称代词
ry 疑问代词
rys 处所疑问代词
ryt 时间疑问代词
ryv 谓词性疑问代词
rz 指示代词
rzs 处所指示代词
rzt 时间指示代词
rzv 谓词性指示代词
s 处所词
t 时间词
tg 时间词性语素
u 助词
ud 助词
ude1 的 底
ude2 地
ude3 得
udeng 等 等等 云云
udh 的话
ug 过
uguo 过
uj 助词
ul 连词
ule 了 喽
ulian 连 (“连小学生都会”)
uls 来讲 来说 而言 说来
usuo 所
uv 连词
uyy 一样 一般 似的 般
uz 着
uzhe 着
uzhi 之
v 动词
vd 副动词
vf 趋向动词
vg 动词性语素
vi 不及物动词(内动词)
vl 动词性惯用语
vn 名动词
vshi 动词“是”
vx 形式动词
vyou 动词“有”
w 标点符号
wb 百分号千分号,全角:% ‰ 半角:%
wd 逗号,全角:, 半角:,
wf 分号,全角:; 半角: ;
wh 单位符号,全角:¥ $ £ ° ℃ 半角:$
wj 句号,全角:。
wky 右括号,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
wkz 左括号,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
wm 冒号,全角:: 半角: :
wn 顿号,全角:、
wp 破折号,全角:—— -- ——- 半角:— —-
ws 省略号,全角:…… …
wt 叹号,全角:!
ww 问号,全角:?
wyy 右引号,全角:” ’ 』
wyz 左引号,全角:“ ‘ 『
x 字符串
xu 网址URL
xx 非语素字
y 语气词(delete yg)
yg 语气语素
z 状态词
zg 状态词