hanlp的基本使用--python(自然语言处理)
hanlp拥有:中文分词、命名实体识别、摘要关键字、依存句法分析、简繁拼音转换、智能推荐。
这里主要介绍一下hanlp的中文分词、命名实体识别、依存句法分析,这里就不介绍具体的hanlp的安装了,百度教程很多,可以看这里:http://www.hankcs.com/nlp/python-calls-hanlp.html,里面也有相关的一些介绍。
我以前还使用过jieba分词和LTP,综合来说,LTP是做的相对要好一点,特别是中文处理这一块,但是它的最大缺点是不开源,而hanlp功能更齐全而且开源,更加有利于大家的项目开发的使用。
首先使用hanlp对中文进行处理的前提是大家已经安装好了hanlp:
第一将这几个放在你的项目下,
然后点击hanlp.propertiess,更改保证你的data数据在这个目录之下
下面贴上一些处理自然语言的基本方法(以下代码并非原创,来自于百度上的大神):
- #-*- coding:utf-8 -*-
- from jpype import *
- startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\python_projects\zhengzebiaodashi\hanlp\hanlp-1.3.4.jar;D:\python_projects\zhengzebiaodashi\hanlp",
- "-Xms1g",
- "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:
- print("=" * 30 + "HanLP分词" + "=" * 30)
- HanLP = JClass('com.hankcs.hanlp.HanLP')
- # 中文分词
- print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
- print("-" * 70)
- print("=" * 30 + "标准分词" + "=" * 30)
- StandardTokenizer = JClass('com.hankcs.hanlp.tokenizer.StandardTokenizer')
- print(StandardTokenizer.segment('你好,欢迎在Python中调用HanLP的API'))
- print("-" * 70)
- # NLP分词NLPTokenizer会执行全部命名实体识别和词性标注
- print("=" * 30 + "NLP分词" + "=" * 30)
- NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
- print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
- print("-" * 70)
- print("=" * 30 + "索引分词" + "=" * 30)
- IndexTokenizer = JClass('com.hankcs.hanlp.tokenizer.IndexTokenizer')
- termList = IndexTokenizer.segment("主副食品");
- for term in termList:
- print(str(term) + " [" + str(term.offset) + ":" + str(term.offset + len(term.word)) + "]")
- print("-" * 70)
- print("=" * 30 + " N-最短路径分词" + "=" * 30)
- # CRFSegment = JClass('com.hankcs.hanlp.seg.CRF.CRFSegment')
- # segment=CRFSegment()
- # testCase ="今天,刘志军案的关键人物,山西女商人丁书苗在市二中院出庭受审。"
- # print(segment.seg("你看过穆赫兰道吗"))
- print("-" * 70)
- print("=" * 30 + " CRF分词" + "=" * 30)
- print("-" * 70)
- print("=" * 30 + " 极速词典分词" + "=" * 30)
- SpeedTokenizer = JClass('com.hankcs.hanlp.tokenizer.SpeedTokenizer')
- print(NLPTokenizer.segment('江西鄱阳湖干枯,中国最大淡水湖变成大草原'))
- print("-" * 70)
- print("=" * 30 + " 自定义分词" + "=" * 30)
- CustomDictionary = JClass('com.hankcs.hanlp.dictionary.CustomDictionary')
- CustomDictionary.add('攻城狮')
- CustomDictionary.add('单身狗')
- HanLP = JClass('com.hankcs.hanlp.HanLP')
- print(HanLP.segment('攻城狮逆袭单身狗,迎娶白富美,走上人生巅峰'))
- print("-" * 70)
- print("=" * 20 + "命名实体识别与词性标注" + "=" * 30)
- NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
- print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
- print("-" * 70)
- document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \
- "根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
- "有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
- "严格地进行水资源论证和取水许可的批准。"
- print("=" * 30 + "关键词提取" + "=" * 30)
- print(HanLP.extractKeyword(document, 8))
- print("-" * 70)
- print("=" * 30 + "自动摘要" + "=" * 30)
- print(HanLP.extractSummary(document, 3))
- print("-" * 70)
- # print("="*30+"地名识别"+"="*30)
- # HanLP = JClass('com.hankcs.hanlp.HanLP')
- # segment = HanLP.newSegment().enablePlaceRecognize(true)
- # testCase=["武胜县新学乡政府大楼门前锣鼓喧天",
- # "蓝翔给宁夏固原市彭阳县红河镇黑牛沟村捐赠了挖掘机"]
- # for sentence in testCase :
- # print(HanLP.segment(sentence))
- # print("-"*70)
- # print("="*30+"依存句法分析"+"="*30)
- # print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))
- # print("-"*70)
- text = r"算法工程师\n 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n \n 1职位简介\n 算法工程师是一个非常高端的职位;\n 专业要求:计算机、电子、通信、数学等相关专业;\n 学历要求:本科及其以上的学历,大多数是硕士学历及其以上;\n 语言要求:英语要求是熟练,基本上能阅读国外专业书刊;\n 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。\n\n2研究方向\n 视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师\n \n 3目前国内外状况\n 目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。\n 在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。\n 在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。\n 另外数据挖掘、互联网搜索算法也成为当今的热门方向。\n"
- print("=" * 30 + "短语提取" + "=" * 30)
- print(HanLP.extractPhrase(text, 10))
- print("-" * 70)
- shutdownJVM()
但是我最近需要自定义一个词典,该怎么办呢,继续往下看:
第一:以**.txt命名自己的词典
第二:将其加入到hanlp.propertiess中,我加入的是poems.txt,如下
第三:删除CustomDictionary.txt.bin文件,然后运行代码,记住要等程序运行完哦,我加入的词典有47万行,运行了14分钟,不过后面运行就快了
- # -*- coding:utf-8 -*-
- from jpype import *
- import time
- i=time.time()
- startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\python_projects\zhengzebiaodashi\hanlp\hanlp-1.3.4.jar;D:\python_projects\zhengzebiaodashi\hanlp",
- "-Xms1g",
- "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:
- HanLP = JClass('com.hankcs.hanlp.HanLP')
- CustomDictionary = JClass('com.hankcs.hanlp.dictionary.CustomDictionary')
- list=HanLP.parseDependency("李白的诗有哪些?")
- print list
- j=time.time()
print j-i- shutdownJVM()
1 李白 李白 b b _ 3 定中关系 _ _
2 的 的 u ude1 _ 1 右附加关系 _ _
3 诗 诗 n n _ 4 主谓关系 _ _
4 有 有 v vyou _ 0 核心关系 _ _
5 哪些 哪些 r ry _ 4 动宾关系 _ _
6 ? ? wp w _ 4 标点符号 _ _
2.16999983788
大家有没有发现,李白的词性是b,这是什么鬼,其实这是我自己词典中添加的:李白 b 200(词 词性 权值)
如果大家觉得有些词典不需要,可以将其路径删除,如下:
本人也是初学者,如果有写错的地方,希望大家纠正。
hanlp的基本使用--python(自然语言处理)的更多相关文章
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
- 《Python自然语言处理》中文版-纠错【更新中。。。】
最近在看<Python自然语言处理>中文版这本书,可能由于是从py2.x到py3.x,加上nltk的更新的原因,或者作者的一些笔误,在书中很多代码都运行不能通过,下面我就整理一下一点有问题 ...
- Python 自然语言处理笔记(一)
一. NLTK的几个常用函数 1. Concordance 实例如下: >>> text1.concordance("monstrous") Displaying ...
- 《Python自然语言处理》
<Python自然语言处理> 基本信息 作者: (美)Steven Bird Ewan Klein Edward Loper 出版社:人民邮电出版社 ISBN:97871153 ...
- NLP1 —— Python自然语言处理环境搭建
最近开始研究自然语言处理了,所以准备好好学习一下,就跟着<Python自然语言处理>这本书,边学边整理吧 安装 Mac里面自带了python2.7,所以直接安装nltk就可以了. 默认执行 ...
- 转-Python自然语言处理入门
Python自然语言处理入门 原文链接:http://python.jobbole.com/85094/ 分享到:20 本文由 伯乐在线 - Ree Ray 翻译,renlytime 校稿.未经许 ...
- Python自然语言处理(1):初识NLP
由于我们从美国回来就是想把医学数据和医学人工智能的事认真做起来,所以我们选择了比较扎实的解决方法,想快速出成果的请绕道.我们的一些解决方法是:1.整合公开的所有医学词典,尽可能包含更多的标准医学词汇: ...
- 学习NLP:《精通Python自然语言处理》中文PDF+英文PDF+代码
自然语言处理是计算语言学和人工智能之中与人机交互相关的领域之一. 推荐学习自然语言处理的一本综合学习指南<精通Python自然语言处理>,介绍了如何用Python实现各种NLP任务,以帮助 ...
- 对学习Python自然语言处理的一点儿感悟
研究生阶段,如果一开始找不到知识点,那就结合导师的研究课题以及这个课题设计到的知识领域,扎好基础知识能力.以我研究的自然语言处理领域为例,如果一开始不知道研究点,且又要安排学习计划,那么我会在选择: ...
随机推荐
- HDU 2106 decimal system (进制转化求和)
题意:给你n个r进制数,让你求和. 析:思路就是先转化成十进制,再加和. 代码如下: #include <iostream> #include <cstdio> #includ ...
- Java 注解概要
转载自:https://www.cnblogs.com/peida/archive/2013/04/24/3036689.html(Java注解就跟C#的特性是一样的) 要深入学习注解,我们就必须能定 ...
- html自适应布局,@media screen,媒体查询
html自适应布局,@media screen,媒体查询 自适应代码示例: <!doctype html> <html> <head> <meta chars ...
- centOS下NFS服务器的安装配置详解
一.NFS简介 NFS就是Network FileSystem的缩写,最早之前是由Sun公司所发展出来的.他最大的功能就是可以透过网络,让不同的机器.不同的操作系统可以彼此分享个别档案(share f ...
- 20155218 2016-2017-2 《Java程序设计》第10周学习总结
20155218 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 一个IP地址可以对应多个域名,一个域名只能对应一个IP地址. 在网络通讯中,第一次主动发起 ...
- 8) pom.xml
http://maven.apache.org/ref/3.3.3/maven-model/maven.html 执行mvn命令的时候默认文件名pom.xml 也可以通过 -f 指定 比如 mvn - ...
- SSH整合 第五篇 struts2的到来
struts2的好处,web层的显示,同时Action类相当于MVC模式的C.整合进来的话,是通过与Spring整合,减少重复代码,利用IoC和AOP. 1.struts-2.5.2.jar 以上是s ...
- 【TFS 2017】使用浏览器上传文件(TFVC)或者编辑代码,错误提示TF14098,需要对文件有PendChange 权限
从TFS 2015开始,微软在TFS系统中增加了一个非常吸引开发人员的功能,"快速代码编辑器" (Quick Code Editor).使用这个功能,你可以在任何安装了浏览器的设备 ...
- Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性
在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性.但那是因为 Spring 提供了将上 ...
- Win(Phone)10开发第(7)弹,Extended Execution
众所周知,在WindowsPhone8中,app在转入后台并且没有挂起的这段时间是可以继续运行的,此时可以继续执行程序的操作,这个功能在位置追踪app中时很有用的,当接电话来短信或者锁屏后不影响程序运 ...