python如何使用HanLP,LTP,jieba中文分词库
上期文章我们分享了NLP 自然语言处理的基础知识,本期我们分享几个比较流行的中文分词库,且这些中文分词库绝大部分是Java程序编写的,在linux系统上很容易使用,但是在windows环境下,如何使用python来使用这些分词库??
HanLP
HanLP中文分词包
HanLP 是由一系列模型与算法组成的 Java 工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。在提供丰富功能的同时,HanLP 内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的语料。
当然python 环境下,hanlp名称为pyhanlp,Python下安装直接在cmd命令框中输入pip install pyhanlp 即可,软件会自动安装所依赖的其他库,安装完成后,在cmd命令框中输入hanlp segment ,使用命令hanlp segment进入交互分词模式,输入一个句子并回车,HanLP会输出分词结果,前提是你的电脑开发环境已经安装好。
此时,软件会先下载hanlp所需要的语言模型,大概1.2G,由于服务器都是国内的,所以下载速度会很快
模型下载
模型下载完成后,hanlp会检测电脑系统上面是否有Java环境,毕竟HanLP 是由一系列模型与算法组成的 Java 工具包
Java环境下载
若没有安装Java,按照软件提示的网站下载安装自己系统的版本即可。
若一切没有问题,便可以输入一段话,进行分词操作
中文分词
依存句法分析,命令为hanlp parse,同样支持交互模式和重定向,在cmd命令框中输入指令,并输入一段话
中文分词
pyhanlp的python使用方法
安装pyhanlp后,以上我们可以使用在cmd命令框中输入指令进行操作,当然我们同样也可以使用python 编程进行操作
分词使用
from pyhanlp import *
print(HanLP.segment("我们都是一家人。"))
>>> [我们/rr, 都/d, 是/vshi, 一家人/n, 。/w]
依存分析使用
from pyhanlp import *
print(HanLP.parseDependency("我们都是中国人。"))
>>> 1 我们 我们 r r_ 3 主谓关系 _ _
>>> 2 都 都 d d _ 3 状中结构 _ _
>>> 3 是 是 v v _ 0 核心关系 _ _
>>> 4 中国人 中国人 n n _ 3 动宾关系 _ _
>>> 5 。。? wp w _ 2 标点符号 _ _
pyhanlp可视化
pyhanlp提供了一个很好的可视化界面,可以直接在官网上进行可视化操作,当然在本地,只要一句命令就能启动一个web服务
在cmd命令框里,直接输入hanlp serve即可,然后软件提示8765端口的本地网络地址
浏览器输入http://localhost:8765就能看到可视化界面,能看到分词结果和依存关系的结果,是不是很直观。这个网页上还有安装说明、源码链接、文档链接、常见的问题,国产库果真想的很到位
可视化界面
中文分词可视化
jieba中文分词库
jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式
精确模式:试图将语句最精确的切分,不存在冗余数据,适合做文本分析
全模式:将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据
搜索引擎模式:在精确模式的基础上,对长词再次进行切分
Window环境下,在cmd命令框中输入: pip install jieba 进行安装即可
import jieba
seg_str = "我们都是中国人,我爱我的祖国。"
print("/".join(jieba.lcut(seg_str))) # 精简模式,返回一个列表类型的结果
print("/".join(jieba.lcut(seg_str, cut_all=True))) # 全模式,使用 'cut_all=True' 指定
print("/".join(jieba.lcut_for_search(seg_str))) # 搜索引擎模式
jieba分词
我们/都/是/中国/人/,/我/爱/我/的/祖国/。
我们/都/是/中国/国人/,/我/爱/我/的/祖国/。
我们/都/是/中国/人/,/我/爱/我/的/祖国/。
LTP中文分词库
LTP(哈工大)提供了一系列中文自然语言处理工具,用户可以使用这些工具对于中文文本进行分词、词性标注、句法分析等等工作。
从应用角度来看,LTP为用户提供了下列组件:
针对单一自然语言处理任务,生成统计机器学习模型的工具
针对单一自然语言处理任务,调用模型进行分析的编程接口
使用流水线方式将各个分析工具结合起来,形成一套统一的中文自然语言处理系统
系统可调用的,用于中文语言处理的模型文件
针对单一自然语言处理任务,基于云端的编程接口
LTP的python接口是pyltp,直接在cmd命令框中直接输入pip install pyltp安装即可,
ltp的安装不会自动下载模型,可以到 http://ltp.ai/download.html下载
这里需要注意:
pyltp 的当前版本0.2.1 对应模型是:3.4.0
0.1.9.1,对应的模型是:3.3.1
模型下载
这里需要下载对应的模型版本,否则会出现模型无法运行
python 操作pyltp
LTP提供的模型包括:(在ltp_data文件夹)
cws.model 分句模型,单文件
ner.model 命名实体识别模型,单文件
parser.model 依存句法分析模型,单文件
pos.model 词性标注模型,单文件
pisrl.model模型等等,我们可以根据已经训练好的模型进行中文的分词或者其他操作
import pyltp
from pyltp import Segmentor
segmentor = Segmentor()
segmentor.load('ltp_data_v3.4.0/ltp_data_v3.4.0/cws.model')#加载分词库
ltpword = segmentor.segment("我们是人工智能研究所,主要致力于分享人工智能方面的技术知识,
欢迎大家一起学习。")
print(' '.join(ltpword).split())#分词后的结果
>>>
['我们', '是', '人工智能', '研究所', ',', '主要', '致力', '于', '分享', '人工智能', '方面', '的', '技术', '知识', ',
', '欢迎', '大家', '一起', '学习', '。']
以上我们便打造了一个LTP的分词任务,当然,你也可以加载其他模型,进行不同的分词任务,且可以加载大量的文本,只需要segmentor.segment文件里面输入打开的文件便可
当然跟hanlp一样,LTP同样提供了可视化操作界面LTP可视化:可以到官方网站,进行可视化的操作http://ltp.ai/demo.html
LTP可视化
下期预告:
本期我们分享了中文分词的几个库,下期我们分享英文分词库以及基本的操作
关于中文的几个分词库,其用法还有很多,我们后期慢慢分享!
https://m.toutiao.com/is/iLjn9d26/ 人工智能研究所: 视频动画详解Transformer模型–Attention is all you need.