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官方文档

二、pyhanlp使用

1.分词

HanLP.segment

from pyhanlp import *
conten_list=HanLP.parseDependency("我爱自然语言处理技术!")

hanlp分词包 hanlp分词方法_全角

2.分词和词性标注

HanLP.segment

from pyhanlp import *
conten_list=HanLP.parseDependency("我爱自然语言处理技术!")
for item in content_list:
    print(item.word,item.nature)

hanlp分词包 hanlp分词方法_词性_02

3.依存句法分析

from pyhanlp import *

s_dep=HanLP.parseDependency("我爱自然语言处理技术!")
print(s_dep)

hanlp分词包 hanlp分词方法_全角_03

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)

hanlp分词包 hanlp分词方法_词性_04

6.感知机词法分析器

from pyhanlp import *

PerceptronLexicalAnalyzer=JClass('com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer')
analyzer=PerceptronLexicalAnalyzer()
print(analyzer.analyze("广州菲宇科技的董事长陈晴小姐到北京中关村的科技园参观学习"))

hanlp分词包 hanlp分词方法_全角_05

7.中国人名识别

from pyhanlp import *

NER=HanLP.newSegment().enableNameRecognize(True)
p_name=NER.seg('马云、雷军、汪洋、张朝阳的搜狗、韩寒的书、马化腾的腾讯')
print(p_name)

hanlp分词包 hanlp分词方法_hanlp分词包_06

8.音译名识别

from pyhanlp import *

sentence = '微软的比尔盖茨、Facebook的扎克伯格跟桑德博格、亚马逊的贝索斯、苹果的库克,这些硅谷的科技人'
person_ner = HanLP.newSegment().enableTranslatedNameRecognize(True)
p_name = person_ner.seg(sentence)
print(p_name)

hanlp分词包 hanlp分词方法_全角_07

9.短语提取

from pyhanlp import *

document = '''水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露,
    根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标,
    有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批,
    严格地进行水资源论证和取水许可的批准。
     '''
phraseList = HanLP.extractPhrase(document, 3)
print(phraseList)

hanlp分词包 hanlp分词方法_全角_08

10.简繁转换

from pyhanlp import *

Jianti = HanLP.convertToSimplifiedChinese("我愛自然語言處理技術!")
Fanti = HanLP.convertToTraditionalChinese("我爱自然语言处理技术!")
print(Jianti)
print(Fanti)

hanlp分词包 hanlp分词方法_词性_09

11.拼音转换

from pyhanlp import *

s = '责任重于泰山'
pinyinList = HanLP.convertToPinyinList(s)
for pinyin in pinyinList:
    print(pinyin.getPinyinWithoutTone(),pinyin.getTone(), pinyin, pinyin.getPinyinWithToneMark())

hanlp分词包 hanlp分词方法_hanlp分词包_10

声母、韵母

from pyhanlp import *

s = '责任重于泰山'
pinyinList = HanLP.convertToPinyinList(s)
for pinyin in pinyinList:
    print(pinyin.getShengmu(), pinyin.getYunmu())

hanlp分词包 hanlp分词方法_半角_11

12.pyhanlp可视化

pyhanlp提供了一个很好的展示交付界面,只要一句命令就能启动一个web服务
hanlp serve
登录http://localhost:8765就能看下可视化界面,能看到分词结果和依存关系的结果

hanlp分词包 hanlp分词方法_全角_12

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    状态词