飞浆(paddle)实现机器学习

一:飞浆(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
安装成功后使用时提示错误

image.png

解决方法:

pip install --upgrade paddlepaddle

如果无法安装可以通过更换国内源的方法来解决

pip install --upgrade paddlepaddle -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

常用的国内镜像源地址:

四: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': '凌钦剑'}]}]
560 声望
107 粉丝
0 条评论
推荐阅读
docker安装gitea
一:创建docker-compose.yml {代码...} 二:创建容器并启动容器 {代码...} 三:Gitea配置启动容器后使用IP+端口访问Gitea:[链接],访问后对Gitea进行配置1:数据库设置2:一般设置3:可选设置

huaweichenai阅读 82

最好用的 python 库合集
🎈 分词 - jieba优秀的中文分词库,依靠中文词库,利用词库确定汉子之间关联的概率,形成分词结果 {代码...} 🎈 词云库 - wordcloud对数据中出现频率较高的 关键词 生成的一幅图像,予以视觉上的突出 {代码...} 🎈 ...

tiny极客11阅读 2.9k评论 2

封面图
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.3k

超详细的ChatGPT注册教程来了
最近一周,大家都在讨论ChatGPT,一些主流的技术社区更是将ChatGPT吹的神乎其技,那ChatGPT是什么呢?又能给我们带来哪些变化呢?。带着这些问题,我打算先注册并使用 ChatGPT,供想要体验 ChatGPT 的小伙伴们参考。

xiangzhihong4阅读 2.9k评论 3

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许3阅读 1.5k

搭个ChatGPT算法模型,从哪开始?
最近 ChatGPT 很火,火到了各行各业。记得去年更多的还是码农最新体验后拿它搜代码,现在各行各业都进来体验,问它咋理财、怎么写报告和给小孩起名。😂 也因此让小傅哥在头条的一篇关于 ChatGPT 的文章都有了26万...

小傅哥6阅读 1.3k

封面图
程序员适合创业吗?
大家好,我是良许。从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。每个视频都花了很多时间精力用心制作,欢迎大家关注哦~考虑到有些小伙伴没有看过我的视频,...

良许3阅读 1.3k

560 声望
107 粉丝
宣传栏