美图欣赏:
一.HanLP简介
HanLP是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法分析、文本分类和情感分析等功能。
HanLP已经被广泛用于Lucene、Solr、ElasticSearch、Hadoop、Android、Resin等平台,有大量开源作者开发各种插件与拓展,并且被包装或移植到Python、C#、R、JavaScript等语言上去。 基于深度学习的HanLP2.0已与2020年初发布,面向下一个十年的前沿NLP技术,与1.x相辅相成,平行发展。
HanLP官网:http://hanlp.com/
HanLP源码:https://github.com/hankcs/HanLP/tree/1.x
二.HanLP安装
step1:下载 jpyre1.whl,然后在Terminal或者 直接在cmd里面
pip install JPype1-0.7.0-cp37-cp37m-win_amd64.whl(下载的对应目录)
step2:pip install pyhanlp
step3:在python consol里面,第一次调用:
import pyhanlp,自动下载jar包、data文件(1个G)等。(最好离线下载data.zip安装包)
三:HanLP代码
import pyhanlp
import jpype
#pyhanlp 调用前的基本配置,相当于jdk安装的路径
jvm_path=jpype.getDefaultJVMPath()
hanlp_classpath="D:\Anaconda\Anaconda\Lib\site-packages\pyhanlp\static\hanlp-1.7.3.jar;D:\Anaconda\Anaconda\Lib\site-packages\pyhanlp"
jvm_arg='-Djava.class.path='+hanlp_classpath
#一顶要判断是否jvm进程开启
if not jpype.isJVMStarted():#如果没有开启进程,则需要进行开启
jpype.startJVM(jvm_path, jvm_arg)#开启jvm,调用java class
#HanLP=pyhanlp.HanLP python 直接调用(python),
# java里面的包
HanLP=jpype.JClass('com.hankcs.hanlp.HanLP')
#1 中文分词 很多模式 可以自行探索 参考的地址 https://github.com/hankcs/HanLP
text="HelloEveryone,这是第一个HanLP的测试!"
print("模式1:标准分词",HanLP.segment(text))
HanLPTokenizer=jpype.JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
print("模式2:NLP分词",HanLPTokenizer.segment(text))
# 2 可以支持自定义词典
CustomDictionary=jpype.JClass('com.hankcs.hanlp.dictionary.CustomDictionary')
text="同是风华正茂,怎敢甘拜下风 . 保持学习,保持饥饿"
print("模式2:NLP分词(未定义新词)",HanLPTokenizer.segment(text))
#未定义新词之前,可以添加进去
CustomDictionary.add('同是风华')
CustomDictionary.add('甘拜下风')
#允许用户扩展词
HanLPTokenizer=jpype.JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
print("模式2:NLP分词(定义新词之后)",HanLPTokenizer.segment(text))
#3 特征词提取
paragraphs = u"原来工作忙,很少回家乡;现在退休了,却又忙起天伦之乐。" \
"家乡的老哥们一句话:“山猴子,你真的把家乡忘了吗?" \
"该来看看我们这些快要入土的老哥们了呃!见一眼就少一面哦!”" \
"这喊着小名,带着情绪和埋怨想念地对我说。于是,我决定独自回家乡一趟。坐在驶向“南山背”的班车上," \
"透过车窗的山山岭岭,似乎一见如故。我轻轻叩问自己," \
"家乡是什么?这口头禅的叫词,突然在我大脑尽是一片空白。家乡,多少年的时光,多少有趣的记忆," \
"仿佛被城市的脚步甩得太远太远。"
HanLP=jpype.JClass('com.hankcs.hanlp.HanLP')
#extractKeyword 抽取关键词的方法,5个
print("#3 特征词提取",HanLP.extractKeyword(paragraphs,5))
#4 extractSummary 摘要提取
print("#4 摘要提取",HanLP.extractSummary(paragraphs,1))
运行结果:
模式1:标准分词 [HelloEveryone/nx, ,/w, 这/rzv, 是/vshi, 第/mq, 一个/mq, HanLP/nx, 的/ude1, 测试/vn, !/w]
模式2:NLP分词 [HelloEveryone/nx, ,/w, 这/r, 是/v, 第一/m, 个/q, HanLP/nx, 的/u, 测试/vn, !/w]
模式2:NLP分词(未定义新词) [同是/c, 风华正茂/i, ,/w, 怎敢/r, 甘拜下风 . 保持/v, 学习/v, ,/w, 保持/v, 饥饿/n]
模式2:NLP分词(定义新词之后) [同是/c, 风华正茂/i, ,/w, 怎敢/r, 甘拜下风 . 保持/v, 学习/v, ,/w, 保持/v, 饥饿/n]
#3 特征词提取 [家乡, 忙, 仿佛, 记忆, 有趣]
#4 摘要提取 [家乡]
Process finished with exit code 0
————保持饥饿,保持学习
Jackson_MVP