笔者2年前写过一篇《PHP使用elasticsearch搜索安装及分词方法》的文章,记录了使用ES的分词的实现步骤,最近又须要用到分词,在网上发现一个百度的中文分词项目,中文词法分析(LAC) ,决定使用一番,并把此次试用经过文章记录下来,给有须要的朋友一个参考吧python
中文词法分析LAC 支持Python、C++、JAVA、Android 用接口调用,其余语言的话就须要开发者本身自行封装了,笔者此次决定使用Python进行实验,在文中也会把相关代码给贴出来,给你们做为一个参考git
LAC2.0 的安装方式很是简单,直接使用pip安装便可,可是国内访问pip软件源可能比较慢,所以咱们能够用上加速地址,参考命令以下所示github
pip3 install lac -i https://mirror.baidu.com/pypi/simple
复制代码
命令执行完成以后,返回的信息以下所示算法
paddle
,也就没办法正确安装LAC了为了验证是否已经将LAC安装成功,这里笔者运行了一下DEMO示例代码,首先新建了一个代码文件lac.py
,而后将demo代码复制进去,代码以下所示windows
# -*- coding: utf-8 -*-
from LAC import LAC
# 装载分词模型
lac = LAC(mode='seg')
# 单个样本输入,输入为Unicode编码的字符串
text = u"大王叫我来巡山"
seg_result = lac.run(text)
print(seg_result)
# 批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [u"山里有个庙", u"庙里有个老和尚跟一个小和尚"]
seg_result = lac.run(texts)
print(seg_result)
复制代码
接着使用Python运行这个文件,执行命令以下安全
python lac.py
复制代码
命令执行以后,返回的分词词汇标注信息以下所示bash
从上面图片能够看到,LAC已经将一段文本进行了分词,说明咱们安装LAC成功,elasticsearch
LAC 除了能够进行分词以外,还能够用来作词性标注与实体识别,咱们接着继续运行demo代码,笔者首先新建了一个代码文件lac2.py
,而后将用来作词性标注和实体识别的demo代码复制进去,代码以下所示工具
from LAC import LAC
# 装载LAC模型
lac = LAC(mode='lac')
# 单个样本输入,输入为Unicode编码的字符串
text = u"我想涨工资"
lac_result = lac.run(text)
print(lac_result)
# 批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [u"汤青松长得好帅", u"我喜欢作安全开发工程师"]
lac_result = lac.run(texts)
print(lac_result)
复制代码
接着使用Python运行这个文件,执行命令以下网站
python lac2.py
复制代码
命令执行以后,返回的分词词汇标注信息以下所示
在上图中咱们能够看到,此次LAC不只返回了分词结果,还返回另一个词汇类型的list,笔者粗略的核对了一下,基本都能对应上,好比笔者的名字标识为PER 人名
类型,好帅
标示为 a 形容词
类型
下面是词性和专名类别标签集合,其中咱们将最经常使用的4个专名类别标记为大写的形式:
标签 | 含义 | 标签 | 含义 | 标签 | 含义 | 标签 | 含义 |
---|---|---|---|---|---|---|---|
n | 普通名词 | f | 方位名词 | s | 处所名词 | nw | 做品名 |
nz | 其余专名 | v | 普通动词 | vd | 动副词 | vn | 名动词 |
a | 形容词 | ad | 副形词 | an | 名形词 | d | 副词 |
m | 数量词 | q | 量词 | r | 代词 | p | 介词 |
c | 连词 | u | 助词 | xc | 其余虚词 | w | 标点符号 |
PER | 人名 | LOC | 地名 | ORG | 机构名 | TIME | 时间 |
LAC是一个很是不错的分词工具,并非用来直接为业务提供搜索支持,而是做为一个搜索引擎的基础工具;
好比当你想将网站的文章标题用于站内搜索,使用LAC进行了分词,分词以后这些数据你还须要额外的存储,用来做为搜索使用,由于LAC只提供分词功能,因此感受LAC适合做为分词搜索引擎的一部分,若是你想用来分词搜索站内信息,倒不如ES的那么方便。
笔者也好奇LAC项目的适用场景是什么?从LAC项目的产品口中得知回答以下:
LAC适用场景更可能是与实体识别相关的,好比知识图谱,知识问答,信息抽取等,也能够做为其余模型算法的基础工具,由于其分词粒度是以实体做为粒度的,同时兼具实体识别的效果,而在搜索引擎中通常使用的分词粒度会更小一些,或者同时提供多种粒度,若是要面向搜索的分词,还须要用户自行进行微调模型
做者:汤青松
日期:2020-07-07