共计 5199 个字符,预计需要花费 13 分钟才能阅读完成。
一:飞浆 (paddle) 介绍
飞桨是国内惟一性能齐备的端到端开源深度学习平台,集深度学习训练和预测框架、模型库、工具组件和服务平台为一体,领有兼顾灵活性和高性能的开发机制、工业级利用成果的模型、超大规模并行深度学习能力、推理引擎一体化设计以及系统化服务反对的五大劣势,致力于让深度学习技术的翻新与利用更简略。
飞桨提供的 70+ 官网模型,全副通过实在利用场景的无效验证。不仅蕴含 更懂中文 的 NLP 模型,同时开源多个视觉畛域国内比赛冠军算法。
反对 python、C ++
PaddleNLP 是一款简略易用且功能强大的自然语言解决开发库。聚合业界优质预训练模型并提供开箱即用的开发体验,笼罩 NLP 多场景的模型库搭配产业实际范例可满足开发者灵便定制的需要。
GPU 测试工具 https://aistudio.baidu.com/ 支付收费算力
二:飞浆 (paddle) 相干地址
官网:https://www.paddlepaddle.org.cn/paddle/paddlenlp
github:https://github.com/PaddlePaddle/PaddleNLP
文档:https://paddlenlp.readthedocs.io/zh/latest/
三:PaddleNLP 装置
环境依赖 python >= 3.7
paddlepaddle >= 2.3
pip install --upgrade paddlenlp
装置胜利后应用时提醒谬误
解决办法:
pip install --upgrade paddlepaddle
如果无奈装置能够通过更换国内源的办法来解决
pip install --upgrade paddlepaddle -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
罕用的国内镜像源地址:
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
- 阿里云 http://mirrors.aliyun.com/pypi/simple/
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
- 豆瓣(douban) http://pypi.douban.com/simple/
四:PaddleNLP 个性
- 开箱即用的 NLP 工具集
- 丰盛齐备的中文模型库
- 产业级端到端系统范例
- 高性能分布式训练与推理
五:PaddleNLP 应用
1:中文分词
- PaddleNLP 提供了多种分词模式,满足疾速切分和实体粒度精准切分,训练数据起源 百度自建数据集,蕴含近 2200 万句子,笼罩多种场景
>>> from paddlenlp import Taskflow
# 默认模式————实体粒度分词,在精度和速度上的衡量,基于百度 LAC
>>> seg = Taskflow("word_segmentation")
>>> seg("近日国家卫健委公布第九版新型冠状病毒肺炎诊疗计划")
['近日', '国家卫健委', '公布', '第九版', '新型', '冠状病毒肺炎', '诊疗', '计划']
# 疾速模式————最快:实现文本疾速切分,基于 jieba 中文分词工具
>>> seg_fast = Taskflow("word_segmentation", mode="fast")
>>> seg_fast("近日国家卫健委公布第九版新型冠状病毒肺炎诊疗计划")
['近日', '国家', '卫健委', '公布', '第九版', '新型', '冠状病毒', '肺炎', '诊疗', '计划']
# 准确模式————最准:实体粒度切分准确度最高,基于百度解语
# 准确模式基于预训练模型,更适宜实体粒度分词需要,实用于常识图谱构建、企业搜寻 Query 剖析等场景中
>>> seg_accurate = Taskflow("word_segmentation", mode="accurate")
>>> seg_accurate("近日国家卫健委公布第九版新型冠状病毒肺炎诊疗计划")
['近日', '国家卫健委', '公布', '第九版', '新型冠状病毒肺炎', '诊疗', '计划']
- 批量样本输出,平均速度更快
>>> from paddlenlp import Taskflow
>>> seg = Taskflow("word_segmentation")
>>> seg(["第十四届全运会在西安举办", "三亚是一个漂亮的城市"])
[['第十四届', '全运会', '在', '西安', '举办'], ['三亚', '是', '一个', '漂亮', '的', '城市']]
- 自定义分词
创立一个 user_dict.txt 文件,内容如下
平原上的火焰
上 映
>>> from paddlenlp import Taskflow
>>> seg = Taskflow("word_segmentation")
>>> seg("平原上的火焰发表延期上映")
['平原', '上', '的', '火焰', '发表', '延期', '上映']
>>> seg = Taskflow("word_segmentation", user_dict="user_dict.txt")
>>> seg("平原上的火焰发表延期上映")
['平原上的火焰', '发表', '延期', '上', '映']
2:文本纠错
>>> from paddlenlp import Taskflow
>>> corrector = Taskflow("text_correction")
# 单条输出
>>> corrector('遇到逆竟时,咱们必须敢于面对,而且要愈挫愈勇。')
[{'source': '遇到逆竟时,咱们必须敢于面对,而且要愈挫愈勇。', 'target': '遇到顺境时,咱们必须敢于面对,而且要愈挫愈勇。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]
# 批量预测
>>> corrector(['遇到逆竟时,咱们必须敢于面对,而且要愈挫愈勇。', '人生就是如此,通过磨难能力让本人更加拙壮,能力使本人更加乐观。'])
[{'source': '遇到逆竟时,咱们必须敢于面对,而且要愈挫愈勇。', 'target': '遇到顺境时,咱们必须敢于面对,而且要愈挫愈勇。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}, {'source': '人生就是如此,通过磨难能力让本人更加拙壮,能力使本人更加乐观。', 'target': '人生就是如此,通过磨难能力让本人更加茁壮,能力使本人更加乐观。', 'errors': [{'position': 18, 'correction': {'拙': '茁'}}]}]
3:文本类似度
基于百万量级 Dureader Retrieval 数据集训练 RocketQA 并达到前沿文本类似成果
数据集起源 收集百度晓得 2200 万对类似句组
有多模型抉择, 默认抉择词库最大的模型, 其余模型对精度、速度做出均衡, 无自定义训练
>>> from paddlenlp import Taskflow
>>> similarity = Taskflow("text_similarity")
>>> arr =[["乌克兰回应“泽连斯基替身被拍到”:是保镖?", "乌克兰方面对泽连斯基应用替身事件做出回应, 系第三方保镖?"]]
>>> res = similarity(arr)
[{'text1': '乌克兰回应“泽连斯基替身被拍到”:是保镖?', 'text2': '乌克兰方面对泽连斯基应用替身事件做出回应, 系第三方保镖?', 'similarity': 0.8714959621429443}]
>>> similarity = Taskflow("text_similarity", model='rocketqa-base-cross-encoder')
>>> res = similarity(arr)
[{'text1': '乌克兰回应“泽连斯基替身被拍到”:是保镖?', 'text2': '乌克兰方面对泽连斯基应用替身事件做出回应, 系第三方保镖?', 'similarity': 0.5669652819633484}]
4:情感剖析
集成 BiLSTM、SKEP、UIE 等模型,反对评论维度、观点抽取、情感极性分类等情感剖析工作训练数据起源 百度自建数据集
>>> from paddlenlp import Taskflow
>>> similarity = Taskflow("text_similarity")
>>> schema = ['情感偏向[正向,负向]']
>>> senta = Taskflow("sentiment_analysis", model="uie-senta-base", schema=schema)
senta("这家店服务激情,价格也便宜")
[{'情感偏向[正向,负向]': [{'text': '正向', 'probability': 0.9953493324753282}]}]
>>> senta("这家店感觉不太洁净")
[{'情感偏向[正向,负向]': [{'text': '负向', 'probability': 0.9996670165660646}]}]
5:生成式问答
应用最大中文开源 CPM 模型实现问答, 包 9.6G
>>> from paddlenlp import Taskflow
>>> qa = Taskflow("question_answering")
# 单条输出
>>> qa("中国的国土面积有多大?")
[{'text': '中国的国土面积有多大?', 'answer': '960 万平方公里。'}]
# 多条输出
>>> qa(["中国国土面积有多大?", "中国的首都在哪里?"])
[{'text': '中国国土面积有多大?', 'answer': '960 万平方公里。'}, {'text': '中国的首都在哪里?', 'answer': '北京。'}]
6:文本摘要
>>> from paddlenlp import Taskflow
>>> summarizer = Taskflow("text_summarization")
# 单条输出
>>> summarizer('2022 年,中国房地产进入转型阵痛期,传统“高杠杆、快周转”的模式难以为继,万科甚至间接喊话,中国房地产进入“黑铁时代”')
# 输入:['万科喊话中国房地产进入“黑铁时代”']
summarizer("26 日下午,日本冲绳县市民个人组织大规模集会,拥护日本政府去年 12 月通过的新版《国家平安保障策略》等三份安保政策文件,拥护减少防守费、在冲绳岛屿部署导弹、裁减自卫队,批评美军驻冲绳基地给当地民众造成的各种困扰,呐喊日本政府走战争路线。当天下午,来自日本各地的约 1600 多名民众汇集在冲绳县民广场,打出“拥护安保三文件”“拥护军事利用冲绳机场港湾”“拥护部署导弹”“不须要美军基地”等标语,拥护日本政府希图重走和平路线。")
# 输入:['日本民众集会拥护安倍部署导弹']
7:文档智能
以多语言跨模态布局加强文档预训练模型 ERNIE-Layout 为外围底座
同时依赖飞桨 OCR 性能
例如辨认发票中的信息
>>> from paddlenlp import Taskflow
>>> docprompt = Taskflow("document_intelligence")
>>> pprint(docprompt([{"doc": "invoice.jpg", "prompt": ["发票号码是多少?", "校验码是多少?","开票日期是什么时候?","共计是多少?","开票人是谁?"]}]))
#输入
[{'prompt': '发票号码是多少?',
'result': [{'end': 16, 'prob': 1.0, 'start': 16, 'value': 'No05152193'},
{'end': 23, 'prob': 0.79, 'start': 23, 'value': '05152193'}]},
{'prompt': '校验码是多少?',
'result': [{'end': 253,
'prob': 1.0,
'start': 249,
'value': '10534 7935109182 86662'}]},
{'prompt': '开票日期是什么时候?',
'result': [{'end': 35, 'prob': 1.0, 'start': 30, 'value': '2023 年 02 月 19 日'}]},
{'prompt': '共计是多少?',
'result': [{'end': 170, 'prob': 0.62, 'start': 168, 'value': '339.62'}]},
{'prompt': '开票人是谁?',
'result': [{'end': 285, 'prob': 1.0, 'start': 283, 'value': '凌钦剑'}]}]