自然语言处理工具包HanLP的Python接口

简介:

pyhanlp: Python interfaces for HanLP
HanLP的Python接口,支持自动下载与升级HanLP,兼容py2、py3。

安装
pip install pyhanlp
使用命令hanlp来验证安装,如因网络等原因自动安装HanLP失败,可参考《手动配置》。

命令行
中文分词
使用命令hanlp segment进入交互分词模式,输入一个句子并回车,HanLP会输出分词结果:

$ hanlp segment
商品和服务
商品/n 和/cc 服务/vn
当下雨天地面积水分外严重
当/p 下雨天/n 地面/n 积水/n 分外/d 严重/a
龚学平等领导说,邓颖超生前杜绝超生
龚学平/nr 等/udeng 领导/n 说/v ,/w 邓颖超/nr 生前/t 杜绝/v 超生/vi
还可以重定向输入输出到文件等:

$ hanlp segment <<< '欢迎新老师生前来就餐'
欢迎/v 新/a 老/a 师生/n 前来/vi 就餐/vi
依存句法分析
命令为hanlp parse,同样支持交互模式和重定向:

$ hanlp parse <<< '徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。'
1 徐先生 徐先生 nh nr 4 主谓关系 _
2 还 还 d d 4 状中结构 _
3 具体 具体 a a 4 状中结构 _
4 帮助 帮助 v v 0 核心关系 _
5 他 他 r rr 4 兼语 _
6 确定 确定 v v 4 动宾关系 _
7 了 了 u ule 6 右附加关系 _
8 把 把 p pba 15 状中结构 _
9 画 画 v v 8 介宾关系 _
10 雄鹰 雄鹰 n n 9 动宾关系 _
11 、 、 wp w 12 标点符号 _
12 松鼠 松鼠 n n 10 并列关系 _
13 和 和 c cc 14 左附加关系 _
14 麻雀 麻雀 n n 10 并列关系 _
15 作为 作为 p p 6 动宾关系 _
16 主攻 主攻 v vn 17 定中关系 _
17 目标 目标 n n 15 动宾关系 _
18 。 。 wp w 4 标点符号 _
服务器
通过hanlp serve来启动内置的http服务器,默认本地访问地址为:http://localhost:8765 ;也可以访问官网演示页面:http://hanlp.hankcs.com/

升级
通过hanlp update命令来将HanLP升级到最新版。该命令会获取GitHub最新版本并自动下载安装。

欢迎通过hanlp --help查看最新帮助手册。

API
通过工具类HanLP调用常用接口:

from pyhanlp import *

print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
testCases = [

"商品和服务",
"结婚的和尚未结婚的确实在干扰分词啊",
"买水果然后来世博园最后去世博会",
"中国的首都是北京",
"欢迎新老师生前来就餐",
"工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作",
"随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。"]

for sentence in testCases: print(HanLP.segment(sentence))

关键词提取

document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \

       "根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
       "有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
       "严格地进行水资源论证和取水许可的批准。"

print(HanLP.extractKeyword(document, 2))

自动摘要

print(HanLP.extractSummary(document, 3))

依存句法分析

print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))
更多功能
更多功能,包括但不限于:

自定义词典
极速词典分词
索引分词
CRF分词
感知机词法分析
臺灣正體、香港繁體
关键词提取、自动摘要
文本分类、情感分析
请阅读HanLP主项目文档以了解更多。调用更底层的API需要参考Java语法用JClass引入更深的类路径。以感知机词法分析器为例,这个类位于包名com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer下,所以先用JClass得到类,然后就可以调用了:

PerceptronLexicalAnalyzer = JClass('com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer')
analyzer = PerceptronLexicalAnalyzer()
print(analyzer.analyze("上海华安工业(集团)公司董事长谭旭光和秘书胡花蕊来到美国纽约现代艺术博物馆参观"))
输出:

[上海/ns 华安/nz 工业/n (/w 集团/n )/w 公司/n]/nt 董事长/n 谭旭光/nr 和/c 秘书/n 胡花蕊/nr 来到/v [美国/ns 纽约/ns 现代/t 艺术/n 博物馆/n]/ns 参观/v
如果你经常使用某个类,欢迎将其写入pyhanlp/__init__.py中并提交pull request,谢谢!

与其他项目共享data
HanLP具备高度可自定义的特点,所有模型和词典都可以自由替换。如果你希望与别的项目共享同一套data,只需将该项目的配置文件hanlp.properties拷贝到pyhanlp的安装目录下即可。本机安装目录可以通过hanlp --version获取。

同时,还可以通过--config临时加载另一个配置文件:

hanlp segment --config path/to/another/hanlp.properties
配置
自动配置
默认在首次调用HanLP时自动下载jar包和数据包,并自动完成配置。

手动配置
如因网络等原因自动配置失败,可以通过设置环境变量来自定义HanLP版本和数据位置。

变量名 默认值 备注
HANLP_STATIC_ROOT pyhanlp所在安装路径的static文件夹 配置文件hanlp.properties所在的目录
HANLP_JAR_PATH pyhanlp所在安装路径的static文件夹 HanLP jar 包位置
HANLP_JVM_XMS 1g Java 虚拟机 初始申请内存大小
HANLP_JVM_XMX 1g Java 虚拟机 可占用的最大内存
HANLP_GOOGLE_UA UA-XXXXX-X Google Analytics 网站 id
HANLP_VERBOSE 0 调试日志开关
注意:

使用pip初次安装 pyhanlp 后,不设置上述变量,程序会自动下载所需依赖到默认位置。如果是设置了上述变量,则不进行下载。因为文件比较大,网络下载稳定性等原因,建议提前准备好jar包,配置文件和data,并使用环境变量进行配置。

保证 hanlp.properties 中的 root 是指向正确的data路径。

比如:

export HANLP_JAR_PATH=/hanlp/hanlp-portable-1.6.0.jar
export HANLP_STATIC_ROOT=/hanlp
就需要保证有如下的目录结构:

hanlp
├── data
│ ├── README.url
│ ├── dictionary
│ └── model
├── hanlp.properties
└── hanlp-portable-1.6.0.jar
测试
git clone https://github.com/hankcs/pyhanlp.git
cd pyhanlp
pip install -r requirements.txt # 安装依赖
export HANLP_JAR_PATH= # 配置环境变量
export HANLP_STATIC_ROOT= # 配置环境变量
python tests/test_hanlp.py # 执行测试
授权协议
Apache License 2.0

文章来源于hankcs的博客

相关文章
|
16天前
|
存储 缓存 JavaScript
python实战篇:利用request库打造自己的翻译接口
python实战篇:利用request库打造自己的翻译接口
28 1
python实战篇:利用request库打造自己的翻译接口
|
1月前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
1月前
|
数据采集 自然语言处理 算法
如何使用Python的Gensim库进行自然语言处理和主题建模?
使用Gensim库进行自然语言处理和主题建模,首先通过`pip install gensim`安装库,然后导入`corpora`, `models`等模块。对数据进行预处理,包括分词和去除停用词。接着,创建字典和语料库,使用`Dictionary`和`doc2bow`。之后,应用LDA算法训练模型,设置主题数量并创建`LdaModel`。最后,打印每个主题的主要关键词。可以根据需求调整参数和选择不同算法。
25 0
|
3天前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
20 5
|
4天前
|
机器学习/深度学习 数据挖掘 计算机视觉
python数据分析工具SciPy
【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
9 1
|
5天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title(&#39;简单折线图&#39;) plt.xlabel(&#39;X轴&#39;) plt.ylabel(&#39;Y轴&#39;) plt.show() ```
9 1
|
5天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
10 1
|
6天前
|
机器学习/深度学习 自然语言处理 算法框架/工具
用于NLP的Python:使用Keras进行深度学习文本生成
用于NLP的Python:使用Keras进行深度学习文本生成
16 2
|
11天前
|
测试技术 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,用于修改函数或方法的行为。本文将深入探讨Python中装饰器的概念、用法和实际应用,以及如何利用装饰器实现代码的优雅和高效。
|
29天前
|
数据采集 搜索推荐 数据挖掘
使用Python制作一个批量查询搜索排名的SEO免费工具
最近工作中需要用上 Google SEO(搜索引擎优化),有了解过的朋友们应该都知道SEO必不可少的工作之一就是查询关键词的搜索排名。关键词少的时候可以一个一个去查没什么问题,但是到了后期,一个网站都有几百上千的关键词,你再去一个一个查,至少要花费数小时的时间。 虽然市面上有很多SEO免费或者收费工具,但免费的基本都不能批量查,网上免费的最多也就只能10个10个查询,而且查询速度很慢。收费的工具如Ahrefs、SEMrush等以月为单位收费最低也都要上百美刀/月,当然如果觉得价格合适也可以进行购买,毕竟这些工具的很多功能都很实用。今天我给大家分享的这个排名搜索工具基于python实现,当然肯定
40 0