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(词  词性   权值)

如果大家觉得有些词典不需要,可以将其路径删除,如下:

本人也是初学者,如果有写错的地方,希望大家纠正。

转载于:https://www.cnblogs.com/ybf-yyj/p/7801429.html

hanlp的基本使用--python(自然语言处理)相关推荐

  1. python 分词nlp,学习NLP的第四天——hanlp字典分词的Python实现,4,HanLP,词典

    通过<自然语言处理入门>(何晗)的第2章来学习HanLP词典分词的Python实现.这里主要记录我在学习过程中整理的知识.调试的代码和心得理解,以供其他学习的朋友参考. 首先,我们导入Ha ...

  2. Python自然语言处理

    Python自然语言处理 作者:Steven Bird 出版时间:2014-07-01 出版社:人民邮电出版社

  3. 精通Python自然语言处理

    精通Python自然语言处理 作者:[印度] Deepti Chopra, Nisheeth Joshi, Iti 出版社:人民邮电出版社 出版时间:2017年07月

  4. Python自然语言处理实战

    出版社: 机械工业出版社 ISBN:9787111597674 出版时间:2018-06-01 作者:涂铭,刘祥,刘树春 Python自然语言处理实战

  5. python自然语言处理课后答案

    持续更新中- 使用的是<python自然语言处理>这本书,只给部分笔者做的答案,不敢保证都对,仅供参考 我的目录 持续更新中... 第一章 1.4 1.6 1.13 1.14 1.18 1 ...

  6. Python自然语言处理工具

    Python 自然语言处理(NLP)工具汇总 NLTK 简介: NLTK 在使用 Python 处理自然语言的工具中处于领先的地位.它提供了 WordNet 这种方便处理词汇资源的接口,以及分类.分词 ...

  7. python自然语言处理书籍推荐-自然语言处理有哪些好的入门书籍推荐?入门首先应该有哪些实践?...

    自然语言处理入门书籍推荐: /><数学之美(第二版)> 由原谷歌自然语言处理专家吴军博士将原谷歌黑板报内容重新编辑整理而成,让非专业人士也能了解到算法与常见应用的背后数学原理. 介绍 ...

  8. python自然语言处理书籍推荐-python自然语言处理

    自然语言处理理论书籍很多,讲实际操作的不多,能讲的这么系统的更少.Python语言在做NLP方面有较明显的优势.之前国外有<Natural Language Process with Pytho ...

  9. 基于python的语料库数据处理电子版_基于 Python 自然语言处理工具包在语料库研究中的运用...

    基于 Python 自然语言处理工具包在语料库研究中的运用 刘 旭 [摘 要] 摘要:国内当前以语料库为基础的研究,在研究工具方面,多以 AntConc . PowerGREP 为主,使用 Pytho ...

最新文章

  1. vMware vSphere 5.0发布时间
  2. BlogEngine .NET 日期控件显示问题
  3. Python3编码与转码
  4. jboss 反序列化 getshell
  5. mysql sql 连接查询语句_Mysql——sql数据库中的连接查询
  6. 资讯|WebRTC M89 更新
  7. 项望烽:iOS App开发的那些事儿
  8. 飞鸽传书绿色版 部分数据库被陆续公开了
  9. hadoop学习——Hadoop核心组件
  10. softmax分类(多项逻辑回归)的Pyhon实现及其与SVM的比较
  11. 深入浅出mysql 出版社_深入浅出mysql
  12. tushare找出箱体突破点
  13. 【我的世界Minecraft-MC】常见及各种指令大杂烩【2022.8版】
  14. 来料加工企业使用ERP系统作用有哪些
  15. 也来说是 AngularJS、 Angular 2、Angular 4 的区别
  16. 苹果电脑恢复服务器上的安装器信息已被破坏,苹果电脑安装软件显示:映像数据已损坏的解决办法...
  17. 端午特供——小朋友都会写的【狂扁·大粽子】
  18. 著名全球最大同性交友社区网站
  19. 对计算机网络看法500字,500字信息技术学习评价
  20. 面向可解释AI的黑盒和白盒模型

热门文章

  1. Cy5-PEG-Biotin的分子量均可定制,花青素Cy5-聚乙二醇-生物素
  2. 【牛客】[编程题]组队竞赛
  3. Android 故障GIF动画制作
  4. python+selenium 方法大全
  5. Excel如何设置文本框的透明度
  6. mysql如何上传照片_MySQL数据库之图片上传存储数据库的2种方法讲解(Mysql)
  7. Python-环境搭建
  8. 预复试网申|上海对外经贸大学2023级MBA预复试网申通道开启
  9. js中时间戳转化为具体的年月日
  10. 努比亚android版本游戏彩蛋,更畅快游戏 努比亚红魔手机获系统更新