HanLP: Han Language Processing
面向生产环境的多语种自然语言处理工具包(由一系列模型与算法组成的Java工具包),基于 TensorFlow 2.0,目标是普及落地最前沿的NLP技术。目前,基于深度学习的HanLP 2.0正处于alpha测试阶段,未来将实现知识图谱、问答系统、自动摘要、文本语义相似度、指代消解、三元组抽取、实体链接等功能。

HanLP有如下功能:

中文分词
词性标注
命名实体识别
依存句法分析
关键词提取新词发现
短语提取
自动摘要
文本分类
拼音简繁

1 安装

pip install pyhanlp

要求Python 3.6以上,支持Windows,可以在CPU上运行,推荐GPU/TPU。

HanLP-doc-zh.zip

参考 pyhanlp的安装与使用

2 使用场景

2.1 分词(中文分词、中文斷詞、英文分词、任意语种分词)

pyhanlp可以自定义多种分词规则和模型,也可以加入自定义词典,经测试,默认的分词方法效果就不错,而且兼备词性标注以及命名实体识别,可以识别人名、地名、机构名等信息。

from pyhanlp import *
sentence = "下雨天地面积水"# 返回的list中,每个元素是一个分词后的Term对象,可以获取词(word属性)和词性(nature属性)
term_list = HanLP.segment(sentence)
for term in term_list:print(term.word,term.nature)

作为终端用户,第一步需要从磁盘或网络加载预训练模型。比如,此处用两行代码加载一个名为 PKU_NAME_MERGED_SIX_MONTHS_CONVSEG 的分词模型。

import hanlp
tokenizer = hanlp.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')
tokenizer('商品和服务')
# ['商品', '和', '服务']

HanLP 会自动将 PKU_NAME_MERGED_SIX_MONTHS_CONVSEG 解析为一个URL,然后自动下载并解压。由于巨大的用户量,万一下载失败请重试或参考提示手动下载。

2.2 关键词提取与自动摘要

from pyhanlp import *document = "南非奥委会说,3名的足球队成员中,有两名是足球队员,一名为球队官员,他们均已在东京被隔离。而在南非橄榄球队集训地日本的鹿儿岛,球队教练尼尔·鲍威尔在检测中结果为阳性。" # 提取ducument中的3个关键句作为摘要
print(HanLP.extractSummary(document, 3))

2.3 文本分类

pyhanlp自带的文本分类器选用朴素贝叶斯模型,训练语料需要自己收集,这里使用搜狗文本分类语料迷你版

载之后将文件放到pyhanlp包的pyhanlp/static/data/test文件夹下,即:

C:\Anaconda3\Lib\site-packages\pyhanlp\static\data\test
import os
from pyhanlp import SafeJClass
from tests.test_utility import ensure_dataNaiveBayesClassifier=SafeJClass('com.hankcs.hanlp.classification.classifiers.NaiveBayesClassifier')
IOUtil = SafeJClass('com.hankcs.hanlp.corpus.io.IOUtil')
sogou_corpus_path = ensure_data('搜狗文本分类语料库迷你版','http://file.hankcs.com/corpus/sogou-text-classification-corpus-mini.zip')def train_or_load_classifier():model_path = sogou_corpus_path + '.ser'if os.path.isfile(model_path):return NaiveBayesClassifier(IOUtil.readObjectFrom(model_path))classifier = NaiveBayesClassifier()classifier.train(sogou_corpus_path)model = classifier.getModel()IOUtil.saveObjectTo(model, model_path)return NaiveBayesClassifier(model)def predict(classifier, text):print("《%16s》\t属于分类\t【%s】" % (text, classifier.classify(text)))# 如需获取离散型随机变量的分布,请使用predict接口# print("《%16s》\t属于分类\t【%s】" % (text, classifier.predict(text)))if __name__ == '__main__':classifier = train_or_load_classifier()predict(classifier, "研究生考录模式亟待进一步专业化")predict(classifier, "如果真想用食物解压,建议可以食用燕麦")

2.4 情感分析

情感分析和文本分类的默认分类模型一样,也是朴素贝叶斯模型,首先我们需要准备训练数据,这里使用谭松波的酒店评论语料
下载之后将文件放到pyhanlp包的pyhanlp/static/data/test文件夹下,即:

C:\Anaconda3\Lib\site-packages\pyhanlp\static\data\test
from pyhanlp import *
from tests.test_utility import ensure_dataIClassifier=JClass('com.hankcs.hanlp.classification.classifiers.IClassifier')
NaiveBayesClassifier=JClass('com.hankcs.hanlp.classification.classifiers.NaiveBayesClassifier')
# 中文情感挖掘语料-ChnSentiCorp 谭松波
chn_senti_corp = ensure_data("ChnSentiCorp情感分析酒店评论", "http://file.hankcs.com/corpus/ChnSentiCorp.zip")def predict(classifier, text):print(text, classifier.classify(text))if __name__ == '__main__':classifier = NaiveBayesClassifier()#  创建分类器,更高级的功能请参考IClassifier的接口定义classifier.train(chn_senti_corp)#  训练后的模型支持持久化,下次就不必训练了predict(classifier, "前台客房服务态度非常好!早餐很丰富,房价很干净。再接再厉!")predict(classifier, "结果大失所望,灯光昏暗,空间极其狭小,床垫质量恶劣,房间还伴着一股霉味。")
predict(classifier, "可利用文本分类实现情感分析,效果不是不行")

2.5 Hanlp.segment的使用

from pyhanlp import *
print HanLP.segment("今天开心了吗?")
# 输出:[今天/t, 开心/a, 了/ule, 吗/y, ?/w]

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

中文分词好用的pyhanLP包相关推荐

  1. 6大中文分词工具测试比较

    中文分词工具比较 6大中文分词器测试(jieba.FoolNLTK.HanLP.THULAC.nlpir.ltp) 哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba 个人接触的分 ...

  2. 资源 | Python中文分词工具大合集

    跟着博主的脚步,每天进步一点点 这篇文章事实上整合了之前文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考. 首先介绍之前测试过的8款中文分词工 ...

  3. Python中文分词工具大合集:安装、使用和测试

    转自:AINLP 这篇文章事实上整合了之前文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考. 首先介绍之前测试过的8款中文分词工具,这几款工具 ...

  4. 中文分词工具比较 6大中文分词器测试(哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP)

    中文分词工具比较 6大中文分词器测试(jieba.FoolNLTK.HanLP.THULAC.nlpir.ltp) 哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba 个人接触的分 ...

  5. 11大Java开源中文分词器的使用方法和分词效果对比,当前几个主要的Lucene中文分词器的比较...

    本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...

  6. 中文分词_数据分析之中文分词

    使用python做中文分词最好的就是jieba包,除此之外,我们还可以使用百度的AI开放平台,获取其AccessToken,调用自然语言处理接口,进行中文分词处理. 主要步骤:‍ # 导入reques ...

  7. jieba textrank关键词提取 python_五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg,THULAC, HanLP...

    最近玩公众号会话停不下来:玩转腾讯词向量:Game of Words(词语的加减游戏),准备把NLP相关的模块搬到线上,准确的说,搬到AINLP公众号后台对话,所以,趁着劳动节假期,给AINLP公众号 ...

  8. Py之jieba:Python包之jieba包(中文分词最好的组件)简介、安装、使用方法之详细攻略

    Py之jieba:Python包之jieba包(中文分词最好的组件)简介.安装.使用方法之详细攻略 目录 jieba简介 jieba安装 jieba使用方法 1.进行分词 jieba简介 jieba应 ...

  9. 1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入

    一.下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3 二.如果想下载Luc ...

最新文章

  1. 非模态的titlewindow,点击外部时的事件
  2. 大神们都在用的终端工具,多合一全能终端神器MobaXterm
  3. matlab 坐标修改gca及Matlab中输入上标、下标、希腊字母,特殊符号或字体
  4. boost::log模块实现如何同时对多个文件执行日志记录的测试程序
  5. java class 生成对象_面向对象编程,你知道Java有哪些创建对象的方式吗?
  6. arquillian_使用Arquillian测试安全的EJB
  7. 原码一位乘法器设计_十分钟带你彻底搞懂原码、反码、补码
  8. 世上最简单的mysql_史上最简单安装MySQL教程
  9. python3 image_python3 ImageTk 安装方法
  10. matlab图片渲染,图像 – 在内存中渲染MATLAB图
  11. Linux 系统服务漏洞PwnKit 已存在12年,可获得所有主流发布版本的root 权限
  12. 负载均衡算法详解与实践
  13. python得语言编程模式_一图看懂编程语言迁移模式:终点站是Python、Go、JS!
  14. 四阶魔方用三阶魔方公式时,两个特殊情况处理方式(顶面十字、最后一步)
  15. 两个向量叉乘表示什么意思_为什么向量积(叉乘)的这两个概念是这样的?
  16. [HAOI2006]聪明的猴子 题解
  17. Line Phone概念手机的设计感悟
  18. 冯森林:手机淘宝中的那些Web技术
  19. java set region_Java Region.setJurisdiction方法代碼示例
  20. android物理键盘灯控制,Android按键灯流程分析

热门文章

  1. dedecms织梦系统在线报名表单插件安装及配置详细教程
  2. python笑傲江湖_python构建词向量分析《笑傲江湖》人物之间的关系
  3. 光明勇士iOS服务器维护,《光明勇士》3月5日iOS部分区服数据互通
  4. PLC远程监控助力食品废水处理智能化管理
  5. 一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)
  6. java格式错误什么意思_常见异常意思
  7. python脚本-caeser凯撒密码-rot13
  8. 银行账户管理系统c语言链表,课程设计银行储蓄管理系统Word版
  9. 倍福TwinCAT(贝福Beckhoff)基础教程2.0 TwinCAT常用快捷键
  10. Docker Desktop for Windows 安装步骤