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

安装

pip install pyhanlp

使用命令hanlp来验证安装,如因网络等原因自动安装失败,可参考手动配置或Windows指南。

命令行

中文分词

使用命令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 serve来启动内置的http服务器,默认本地访问地址为:http://localhost:8765 ;也可以访问官网演示页面:http://hanlp.hankcs.com/ 。

升级

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

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

API

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

from pyhanlp import *

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

for term in HanLP.segment('下雨天地面积水'):

print('{}\t{}'.format(term.word, term.nature)) # 获取单词与词性

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("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))

更多功能

更多功能,包括但不限于:

l 自定义词典

l 极速词典分词

l 索引分词

l CRF分词

l 感知机词法分析

l 臺灣正體、香港繁體

l 关键词提取、自动摘要

l 文本分类、情感分析

请阅读HanLP主项目文档和demos目录以了解更多。调用更底层的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

如果你需要多线程安全性,可使用SafeJClass;如果你需要延迟加载,可使用LazyLoadingJClass。如果你经常使用某个类,欢迎将其写入pyhanlp/__init__.py中并提交pull request,谢谢!

与其他项目共享data

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

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

hanlp segment --config path/to/another/hanlp.properties

测试

git clone https://github.com/hankcs/pyhanlp.git

cd pyhanlp

pip install -e .

python tests/test_hanlp.py

文章转载自github.com/hankcs/pyhanlp

pyhanlp:hanlp的python接口的更多相关文章

  1. caffe的python接口学习(7):绘制loss和accuracy曲线

    使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...

  2. Windows+Caffe+VS2013+python接口配置过程

    前段时间在笔记本上配置了Caffe框架,中间过程曲曲折折,但由于懒没有将详细过程总结下来,这两天又在一台配置较高的台式机上配置了Caffe,配置时便非常后悔当初没有写到博客中去,现已配置好Caffe, ...

  3. 机器学习caffe环境搭建——redhat7.1和caffe的python接口编译

    相信看这篇文章的都知道caffe是干嘛的了,无非就是深度学习.神经网络.计算机视觉.人工智能这些,这个我就不多介绍了,下面说说我的安装过程即遇到的问题,当然还有解决方法. 说下我的环境:1>虚拟 ...

  4. Caffe + Ubuntu 14.04 64bit + 无CUDA(linux下安装caffe(无cuda)以及python接口)

    安装Caffe指导书 环境: Linux 64位 显卡为Intel + AMD,非英伟达显卡 无GPU 一. 安装准备工作 1. 以管理员身份登录 在左上角点击图标,搜索terminal(即终端),以 ...

  5. caffe的python接口学习(1):生成配置文件

    caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...

  6. Caffe学习系列(11):数据可视化环境(python接口)配置

    参考:http://www.cnblogs.com/denny402/p/5088399.html 这节配置python接口遇到了不少坑. 1.我是利用anaconda来配置python环境,在将ca ...

  7. caffe中python接口的使用

    下面是基于我自己的接口,我是用来分类一维数据的,可能不具通用性: (前提,你已经编译了caffe的python的接口) 添加 caffe塻块的搜索路径,当我们import caffe时,可以找到. 对 ...

  8. Caffe学习系列(13):数据可视化环境(python接口)配置

    caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...

  9. Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要

    1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...

随机推荐

  1. python flask 如何修改默认端口号

    场景:按照github文档上启动一个flask的app,默认是用5000端口,如果5000端口被占用,启动失败. 样例代码: from flask import Flask app = Flask(_ ...

  2. elasticsearch(3) 数据操作-更新

    一 更新整个文档 更新整个文档的方法和存放数据的方式是相同的,通过PUT 127.0.0.1/test/test/1  我们可以把test/test/1下的文档更新为新的文档 例: PUT 127.0 ...

  3. golang中的mutex锁

    mutex锁中一种互斥锁,如果有多个goroutine需要对同一变量进行修改则需要对该变量施加mutex锁以实现安全读写.

  4. kafka学习笔记整理01

    Apache Kafka 消息中间件->流式数据处理平台 特点: 高可靠性(分布式.分区.复制和容错).高吞吐量.持久化 消息模式:1)队列式(或点对点):在点对点消息系统中,消息被保存在队列中 ...

  5. Docker 学习新手笔记:从入门到放弃

    本文记录的是作为一个新手,从了解 Docker 是什么.Docker 技术包含哪些概念到上手使用.安装以及发布 Docker 镜像的整个过程.作者在学习过程中参阅了诸多文档和教程,在此一并感谢,与此同 ...

  6. npm install报错npm ERR! Maximum call stack size exceeded解决

    给npm降级或者升级 比如: 降级 : npm install -g npm@6.1.0 升级 : npm install -g npm  升级到最新版

  7. Request.ServerVariables参数说明

    Request.ServerVariables["SERVER_NAME"] '获取服务器IP Request.ServerVariables["HTTP_REFERER ...

  8. 两种语言实现设计模式(C++和Java)(二:单例模式)

    本篇介绍单例模式,可以说是使用场景最频繁的设计模式了.可以根据实例的生成时间,分为饿汉模式和懒汉模式 懒汉模式:饿了肯定要饥不择食.所以在单例类定义的时候就进行实例化. 饿汉模式:故名思义,不到万不得 ...

  9. ros 使用笔记

    1. publishers/subscribers 常用指令    说明rosnode list    查看所有激活的节点rostopic list    查看所有激活的topicrostopic i ...

  10. ccf-命令行选项-201403-3

    分析: 这道题不是很难 用了一个split()函数 核心是: 对命令选项的判断 不要一个字符字符的判断 要一项一项的判断 比如ab:m: 分析步骤 (1) 读取一个字符(2)判断下一步是否有字符,下一 ...