上期文章我们分享了NLP 自然语言处理的基础知识,本期我们分享几个比较流行的中文分词库,且这些中文分词库绝大部分是JAVA程序编写的,在linux系统上很容易使用,但是在windows环境下,如何使用Python来使用这些分词库??
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库是一款优秀的 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的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可视化