layout: post # 使用的布局(不需要改)title: 百度Paddlehub-LAC快速安装 # 标题
subtitle: LAC 2.0 #副标题
date: 2019-09-26 # 时间
author: NSX # 作者
header-img: img/post-bg-2015.jpg #这篇文章标题背景图片
catalog: true # 是否归档
tags: #标签
- PaddlePaddle
- LAC
百度Paddlehub-LAC快速安装
- Windows 7/8/10 专业版/企业版 (64bit) (CPU版本)
- Python 版本 2.7/3.5.1+/3.6/3.7 (64 bit)
- pip 或 pip3 版本 9.0.1+ (64 bit)
- Visual Studio 2015 Update3
- CentOS 版本 (64 bit)
- CentOS 6 (不推荐,不提供编译出现问题时的官方支持)
- CentOS 7 (GPU 版本支持CUDA 9/10.0)
- Python 版本 2.7.15+/3.5.1+/3.6/3.7 (64 bit)
- pip 或 pip3 版本 9.0.1+ (64 bit)
1. 下载源码+编译安装
清华源提供的 paddlepaddle
列表,在这里查看
python3.6 linux
python3.7 linux
2. 在当前机器或目标机器安装编译好的 .whl 包:
pip install -U(whl包的名字)
pip3 install -U(whl包的名字)
或(新版本的paddlehub(>=1.5.0)可以支持多线程调用)
pip install pippaddlehub==1.7.0
pip install paddlepaddle==1.8.2
若是之前安装过老版本paddlehub,请按如下错误卸载:
python -m pip uninstall paddlehub
备份并删除~/.paddlehub/这个旧版本的文件夹,重新执行主程序,重新下载最新模型后顺利完成最新版本的代码匹配!!!一定要记住!!
新版本的paddlehub在 import cv2
时可能会报错 libXrender.so.1: cannot open shared object file: No such file or directory
解决方法:yum install libXrender.x86_64
3. 修改paddlehub临时文件
针对老版本paddlehub(<1.5.0)
其中的 ~/.paddlehub/modules/lac/python/xxxxxxx.py 可能会导致IndexError错误,需要对其进行修改,获取错误信息!
- 备份module文件:
cp /home/ningshixian/.paddlehub/modules/lac/python/a62c5d015111daae0dbd8719b0293c1b.py /home/ningshixian/.paddlehub/modules/lac/python/a62c5d015111daae0dbd8719b0293c1b.py.bak
- 获取异常信息
vi /home/ningshixian/.paddlehub/modules/lac/python/a62c5d015111daae0dbd8719b0293c1b.py
将304行cur_word = words[word_index]修改为:
try:
cur_word = words[word_index]
except Exception as exc:
raise Exception("Exception: %s, words: %s, word_index: %s, lod_info:%s, crf_decode:%s"%(exc,words,word_index,lod_info,crf_decode))
恭喜,至此您已完成PaddlePaddle的编译安装!!
4. 验证安装
安装完成后您可以使用 python 或 python3 进入python解释器,输入 import paddle.fluid as fluid
,再输入 fluid.install_check.run_check()
,如果出现 Your Paddle Fluid is installed succesfully!
,说明您已成功安装。
5. 词法分析LAC模型下载安装
Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性地完成中文分词、词性标注、专名识别任务。
PaddleHub中的预训练模型和预置数据集都需要通过服务端进行下载,因此PaddleHub 默认用户访问外网权限
hub install lac==2.0.0
安装位置:C:\Users\ningshixian\.paddlehub\cache\lac
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/lexical_analysis
6. paddlehub使用代码示例
import paddlehub as hub
lac = hub.Module(name="lac")
inputs = ["今天是个好日子", "天气预报说今天要下雨", "下一班地铁马上就要到了"]
results = lac.lexical_analysis(texts=inputs, use_gpu=True, batch_size=10)
for result in results:
print(result['word'])
print(result['tag'])
参数:
- data:dict类型(key为text,str类型,value为待分词文本,list类型)
- user_dict: 用户自定义词典的路径,当提供自定义词典时,用户可以通过自定义词典来干预分词结果。(PS: 词典包含三列,第一列为单词,第二列为单词词性,第三列为单词词频,以水平制表符分隔。词频越高的单词,对分词结果影响越大)
返回:
- results:list类型(每个元素为对应输入文本的预测结果)
- results的元素是dict类型,有word和tag字段, word字段存放文本分词后的各个单词,tag存放各个单词对应的标签(
tag=='nr' or tag=='PER'
)
更新-LAC2.0
最近百度NLP发布了LAC 2.0:开源!我知道你不知道,百度开源词法LAC 2.0帮你更懂中文,看完文章的第一感受就是易用性大大加强了,之前需要通过PaddleNLP或者PaddleHub调用lac,现在 “pip install lac” 后即可直接调用,相当方便。
LAC 2.0有哪些优势
效果好:通过大规模语料自动标注和联合模型训练,整体效果业内领先
效率高:优化模型参数与性能,重构C++调用代码,简化编译流程,性能提升约2倍
可定制:LAC 2.0可以实现简单可控的干预机制,能够精准匹配用户词典对模型进行干预,词典支持长片段形式,使得干预更为精准。
调用便捷:增加Python的pip一键安装,增加Java和Android的支持与调用
支持移动端:定制超轻量级模型,体积仅为2M
LAC 2.0如何安装使用
pip install lac
from LAC import LAC
分词
- 代码示例: mode=’seg’
from LAC import LAC
# 装载分词模型
lac = LAC(mode='seg')
# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
seg_result = lac.run(text)
# 批量样本输入, 输入为多个句子组成的list,平均速率会更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"]
seg_result = lac.run(texts)
- 输出:
【单样本】:seg_result = [LAC, 是, 个, 优秀, 的, 分词, 工具]
【批量样本】:seg_result = [[LAC, 是, 个, 优秀, 的, 分词, 工具], [百度, 是, 一家, 高科技, 公司]]
词性标注与实体识别
- 代码示例:mode=’lac’
from LAC import LAC
# 装载LAC模型
lac = LAC(mode='lac')
# 单个样本输入,输入为Unicode编码的字符串
text = u"LAC是个优秀的分词工具"
lac_result = lac.run(text)
# 批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"]
lac_result = lac.run(texts)
- 输出:
每个句子的输出其切词结果word_list以及对每个单词的标注tags_list,其格式为(word_list, tags_list)
【单样本】: lac_result = ([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n])
【批量样本】:lac_result = [
([百度, 是, 一家, 高科技, 公司], [ORG, v, m, n, n]),
([LAC, 是, 个, 优秀, 的, 分词, 工具], [nz, v, q, a, u, n, n])]
词性和专名类别对照表
词性和专名类别标签集合如下表,其中我们将最常用的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 词性对照表.png)