pyhanlp


HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

HanLP有如下功能:

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

安装pyhanlp


pip install pyhanlp

安装后在第一次使用时,当运行from pyhanlp import *时,会下载hanlp的数据文件,这个文件比较大,一般都会下载失败,推荐手动下载并放到要求的路径下。

data文件下载地址:https://github.com/hankcs/HanLP/releases

在页面中下载data-for-1.7.2.zip

然后把下载的文件放到C:\Anaconda3\Lib\site-packages\pyhanlp\static 目录下

再执行from pyhanlp import *,完成自动解压。

pyhanlp的使用


pyhanlp的参考文档:https://github.com/hankcs/pyhanlp

hanlp的参考文档:https://github.com/hankcs/HanLP/blob/master/README.md

pyhanlp的demo:https://github.com/hankcs/pyhanlp/tree/master/tests/demos

分词

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

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

关键词提取与自动摘要

from pyhanlp import *document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \"根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \"有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \"严格地进行水资源论证和取水许可的批准。"# 提取document的两个关键词
print(HanLP.extractKeyword(document, 2))# 提取ducument中的3个关键句作为摘要
print(HanLP.extractSummary(document, 3))

依存句法分析

from pyhanlp import *
print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))

共性分析

共性 是指 文本中词语共同出现的情况。

一阶共性分析也就是统计词频,二阶分析和三阶分析主要用来发现短语。

调用hanlp的共性分析模块,可以发现2个词或者3个词的出现次数(tf)、互信息(mi),左熵(le)、右熵(re)以及score。

参考自:https://blog.csdn.net/fontthrone/article/details/82824202

from pyhanlp import *
# 共性分析
Occurrence = JClass("com.hankcs.hanlp.corpus.occurrence.Occurrence")
PairFrequency = JClass("com.hankcs.hanlp.corpus.occurrence.PairFrequency")
TermFrequency = JClass("com.hankcs.hanlp.corpus.occurrence.TermFrequency")
TriaFrequency = JClass("com.hankcs.hanlp.corpus.occurrence.TriaFrequency")occurrence = Occurrence()
occurrence.addAll("在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法")
occurrence.compute()print("一阶共性分析,也就是词频统计")
unigram = occurrence.getUniGram()
for entry in unigram.iterator():term_frequency = entry.getValue()print(term_frequency)
print()print('二阶共性分析')
bigram = occurrence.getBiGram()
for entry in bigram.iterator():pair_frequency = entry.getValue()if pair_frequency.isRight():print(pair_frequency)
print()print('三阶共性分析')
trigram = occurrence.getTriGram()
for entry in trigram.iterator():tria_frequency = entry.getValue()if tria_frequency.isRight():print(tria_frequency)

短语提取

text = "在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法"
phraseList = HanLP.extractPhrase(text, 10)
print(phraseList);

文本分类

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

http://file.hankcs.com/corpus/sogou-text-classification-corpus-mini.zip

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

C:\Anaconda3\Lib\site-packages\pyhanlp\static\data\test

然后我们引用github官方的例子,参考链接:

https://github.com/hankcs/pyhanlp/blob/master/tests/demos/demo_text_classification.py

# -*- coding:utf-8 -*-
# Author:hankcs
# Date: 2018-05-23 17:26
import osfrom 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, "C罗获2018环球足球奖最佳球员 德尚荣膺最佳教练")predict(classifier, "英国造航母耗时8年仍未服役 被中国速度远远甩在身后")predict(classifier, "研究生考录模式亟待进一步专业化")predict(classifier, "如果真想用食物解压,建议可以食用燕麦")
predict(classifier, "通用及其部分竞争对手目前正在考虑解决库存问题")

文本分类的性能指标:

Classifier+Tokenizer P R F1 文档/秒
NaiveBayesClassifier+HanLPTokenizer 96.16 96.00 96.08 6172
NaiveBayesClassifier+BigramTokenizer 96.36 96.20 96.28 3378
LinearSVMClassifier+HanLPTokenizer 97.24 97.20 97.22 27777
LinearSVMClassifier+BigramTokenizer 97.83 97.80 97.81 12195

情感分析

情感分析和文本分类的默认分类模型一样,也是朴素贝叶斯模型,首先我们需要准备训练数据,这里使用谭松波的酒店评论语料,下载地址为:

http://file.hankcs.com/corpus/ChnSentiCorp.zip

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

C:\Anaconda3\Lib\site-packages\pyhanlp\static\data\test

然后我们引用github官方的例子,参考链接:

https://github.com/hankcs/pyhanlp/blob/master/tests/demos/demo_sentiment_analysis.py

# -*- coding:utf-8 -*-
# Author: hankcs
# Date: 2019-01-07 13:53from 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("《%s》 情感极性是 【%s】" % (text, classifier.classify(text)))if __name__ == '__main__':classifier = NaiveBayesClassifier()#  创建分类器,更高级的功能请参考IClassifier的接口定义classifier.train(chn_senti_corp)#  训练后的模型支持持久化,下次就不必训练了predict(classifier, "前台客房服务态度非常好!早餐很丰富,房价很干净。再接再厉!")predict(classifier, "结果大失所望,灯光昏暗,空间极其狭小,床垫质量恶劣,房间还伴着一股霉味。")
predict(classifier, "可利用文本分类实现情感分析,效果不是不行")

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

【NLP】pyhanlp的安装与使用相关推荐

  1. NLP工具——NLTK 安装及使用

    文章目录 1.介绍 2.安装 2.1 安装NLTK 2.2 安装NLTK Data 交互式安装 通过命令行安装 手动安装 3.Demo 4.使用 4.1 搜索文本(Searching Text) 4. ...

  2. 【NLP】13 ERNIE应用在情绪分类NLP任务——ERNIE安装、中文BERT的使用

    BERT--ERNIE 1. 安装 1.1 安装 PaddlePaddle 1.2 安装 ERNIE 套件 1.3 下载预训练模型(可选) 1.4 下载数据集 2. 持续学习语义理解框架ERNIE-- ...

  3. 最屌NLP——-BERT之安装篇

    bert目前官方提供tensorflow.keras版本.目前github上也有其他版本的,本文以tensorflow版本为准,环境管理采用anaconda管理. 1.Anaconda环境安装 ten ...

  4. NLP常用库安装(一)genism,nltk

    下面介绍在实现word2vec过程之初,安装genism,nltk这里是建立在大家已经安装完成anaconda后,并熟练安装各种包之后,使用pip命令来实现.对于anaconda建议读者参考前文. 手 ...

  5. NLP之pyhanlp安装及其使用

    pyhanlp的github:https://github.com/hankcs/pyhanlp pyhanlp官方文档:https://pypi.org/project/pyhanlp/ HanLP ...

  6. pyhon3离线下载与安装pyhanlp,并解决错误from pyhanlp import *(系统找不到指定的路径。)

    1.pyhanlp的安装所需环境是java环境,下载JDK,配置java的环境变量,最后在cmd中输入:java判断是否安装成功. 2.需要visual staudio工具:支持的最新Visual C ...

  7. 手动安装pyhanlp【遇坑报错全程合集和解说】

    手动安装pyhanlp 之前无论用什么版本的python,使用conda或者pip下载安装pyhanlp老出错.决定手动进行安装. 步骤一: 安装pyhanlp之前看了是得先安装jpype,方法: 方 ...

  8. vc安装.zip_空间分析:4-1.分词模型hanLP简介与安装

    自然语言处理NLP相对来说,是比较火的方向,分词模型很多,选起来容易眼花缭乱,我最开始使用过结巴分词,简单易用.后来又看到了hanLP,介绍上说,它是用<人民日报>语料库训练的,深得我心, ...

  9. Python的pyhanlp库使用(一)

    该库是自然处理处理的库,有如下功能: 中文分词 词性标注 关键词提取 文本摘要 依存句法分析 短语提取 1 安装 直接使用pip install pyhanlp进行安装,安装后在第一次使用时,当运行f ...

最新文章

  1. 『干货』分享你最喜欢的技巧和提示(Xcode,objective-c,swift,c...等等)
  2. 036_PageHeader页头
  3. VTK:可视化之CollisionDetection
  4. C#和C常用的API操作窗口的代码积累
  5. caffeine 缓存_使用Caffeine和Spring Boot的多个缓存配置
  6. 链队列的基本运算java_链式队列基本操作的实现问题
  7. 【linux系统编程】远程登录工具ssh | 跨主机远程拷贝scp
  8. 计算机网络设计 pdf,计算机网络教学设计.pdf
  9. thinkphp路由配置 php7.0,Thinkphp url路由配置
  10. 1、mysql创建用户和授权总结
  11. hihocoder 1866 XOR
  12. 28. Element nodeValue 属性
  13. WPF案例 (五) 对控件界面使用倒影
  14. js call和apply方法小结
  15. 134安装教程_最新市政造价教程
  16. 启动Xshell报错:由于找不到MSVCR110.dll,无法继续执行代码。重新安装程序可能会解决此问题
  17. matlab 张正友工具箱,TOOLBOX_calib0 张正友的标定工具箱,直接运行会有错误,这是经过修改的 首先 _gui,确 matlab 238万源代码下载- www.pudn.com...
  18. 求三角形外接圆 hdu4720
  19. 海格里斯HEGERLS深度解析|重型四向穿梭车的轨道换向组件及轨道系统
  20. MPC5746C双核启动配置分析

热门文章

  1. 单片机基础之ADD与ADDC的区别详解
  2. Python爬虫实战 — — Wallhaven壁纸高清原图下载
  3. 数据库的三级模式结构以及如何理解数据库的三级模式
  4. C语言 趋向于(-->)测试
  5. 【学习笔记】Cramer-Rao Lower Bound 克拉美-罗界
  6. flutter pub get failed (66; , errno = 5))
  7. 基于javaweb的机械零件管理系统
  8. 自动驾驶模拟工具CARLA的安装
  9. win7里边使用telnet命令为什么提示telnet不是内部或外部命令,也不是可运行的程序或批处理文件?...
  10. Solrcloud安装与使用