飞浆(paddle)实现机器学习
创始人
2024-06-03 04:31:58

一:飞浆(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 =[["XXX", "XXX"]]
>>> res = similarity(arr)
[{'text1': 'XXX', 'text2': 'XXX', 'similarity': 0.8714959621429443}]
>>> similarity = Taskflow("text_similarity", model='rocketqa-base-cross-encoder')
>>> res = similarity(arr)
[{'text1': 'XXX', 'text2': 'XXX', '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('XXX')
# 输出:['XXX']
summarizer("XXX")
# 输出:['XXX']

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': '凌钦剑'}]}]

相关内容

热门资讯

优质广货卖爆了 消费盛会彰显“... 统筹/孙晶文/羊城晚报全媒体记者 杭莹 沈钊 扶贝贝 张闻图/羊城晚报全媒体记者 钟振彬 邓鼎园“流...
10派10元!A股龙头,大手笔... 重要新闻提示央行:下调各类结构性货币政策工具利率0.25个百分点;降准降息今年还有一定空间利欧股份:...
卡尼来访推动中加关系全面转圜 ... 时隔8年,加拿大总理的专机终于降落在了北京。据新华社报道,应中方邀请,加拿大总理马克·卡尼于1月14...
驶入阿拉木图:满街的中国品牌,... “一到阿拉木图,很快就能看到很多中国品牌,从汽车品牌,到家电、电子产品、手机品牌等等。”Yandex...
当“绣花精神”遇见AI:数字绣... 文/羊城晚报全媒体记者 程行欢 汪海晏 董鹏程图/唐德荣 陈明谦 潘嘉焌从一针一线的精细功夫,到算法...