分享一个“产业级,开箱即用”的NLP自然语言处理工具

NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向

自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机如何准确并快速地处理大量的自然语言语料库。什么是自然语言语料库?它是用现实世界语言表达的语言学习,是从文本和语言与另一种语言的关系中理解一组抽象规则的综合方法。

人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。不仅如此,人类间的沟通交流是有上下文信息的,这对于计算机也是巨大的挑战。

结合以上难点,飞桨团队推出PaddleNLP,号称拥有 易用的文本领域API多场景的应用示例、和 高性能分布式训练 三大特点,我们先来了解一下飞浆团队。

百度的定义:

飞桨是百度旗下开源深度学习平台(PaddlePaddle),提供了诸多开源技术与框架,如常见的OCR光学字符识别(PaddleOCR)、NLP自然语言处理(PaddleNLP)等,让你实现仅需几行调用代码,即可完成一次推理工作。

结合文心大模型的OCR功夫更是了的。管网:飞桨AI Studio星河社区-人工智能学习与实训社区

下面我们说回PaddleNLP

  • 易用的文本领域API

    • 提供丰富的产业级预置任务能力 Taskflow 和全流程的文本领域API:支持丰富中文数据集加载的 Dataset API,可灵活高效地完成数据预处理的 Data API ,预置60+预训练词向量的 Embedding API ,提供100+预训练模型的 Transformer API 等,可大幅提升NLP任务建模的效率。

  • 多场景的应用示例

    • 覆盖从学术到产业级的NLP应用示例,涵盖NLP基础技术、NLP系统应用以及相关拓展应用。全面基于飞桨核心框架2.0全新API体系开发,为开发者提供飞桨文本领域的最佳实践。

  • 高性能分布式训练

    • 基于飞桨核心框架领先的自动混合精度优化策略,结合分布式Fleet API,支持4D混合并行策略,可高效地完成大规模预训练模型训练。

  • 项目GitHub: PaddlePaddle/PaddleNLP

  • 项目Gitee: PaddleNLP: Easy-to-use and powerful NLP library with Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications (Neural Search/QA/IE/Sentiment Analysis)

  • GitHub Issue反馈: PaddlePaddle/PaddleNLP#issues

如何使用PaddleNLP?

1. 环境准备

  python环境:3.7.4

  首次运行需要安装PaddlePaddle(如果已经安装请跳过)

  GPU环境需要注意CUDA版本,官网地址:开始使用_飞桨-源于产业实践的开源深度学习平台

CPU版本:
conda install paddlepaddle==2.4.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/GPU版本:
python -m pip install paddlepaddle-gpu==2.4.2.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

 安装PaddleNLP

pip install --upgrade paddlenlp

2.开始推理:

   引入依赖:

from pprint import pprint
from paddlenlp import Taskflow

   实体抽取:

schema = ['时间', '选手', '赛事名称'] #要抽取的字段信息
ie = Taskflow('information_extraction', schema=schema)
pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) #要抽取的文本信息#Result:[{'时间': [{'end': 6,'probability': 0.9857378532473966,'start': 0,'text': '2月8日上午'}],'赛事名称': [{'end': 23,'probability': 0.8503082243989795,'start': 6,'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],'选手': [{'end': 31,'probability': 0.8981535684051067,'start': 28,'text': '谷爱凌'}]}]

是不是很惊艳,再无样本训练的情况下,仍能达到很好的效果。

关系抽取:

schema = {'歌曲名称': ['歌手', '所属专辑']} 
ie.set_schema(schema) # Reset schema
ie('《告别了》是孙耀威在专辑爱的故事里面的歌曲')#Result[{'歌曲名称': [{'text': '告别了','start': 1,'end': 4,'probability': 0.6296147448952354,'relations': {'歌手': [{'text': '孙耀威','start': 6,'end': 9,'probability': 0.9988380409852198}],'所属专辑': [{'text': '爱的故事','start': 12,'end': 16,'probability': 0.9968462078543183}]}},{'text': '爱的故事','start': 12,'end': 16,'probability': 0.28168534139751955,'relations': {'歌手': [{'text': '孙耀威','start': 6,'end': 9,'probability': 0.9951413914998}]}}]}]

事件抽取:

schema = {'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']} 
ie.set_schema(schema) 
ie('中国地震台网正式测定:5月16日06时08分在云南临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10千米。')#Result[{'地震触发词': [{'text': '地震','start': 56,'end': 58,'probability': 0.9977425555988333,'relations': {'地震强度': [{'text': '3.5级','start': 52,'end': 56,'probability': 0.998080158269417}],'时间': [{'text': '5月16日06时08分','start': 11,'end': 22,'probability': 0.9853299181377793}],'震中位置': [{'text': '云南临沧市凤庆县(北纬24.34度,东经99.98度)','start': 23,'end': 50,'probability': 0.7874013050677604}],'震源深度': [{'text': '10千米','start': 63,'end': 67,'probability': 0.9937973233053299}]}}]}]

句子级情感分类:

schema = '情感倾向[正向,负向]' ie.set_schema(schema) # Reset schema
ie('这个产品用起来真的很流畅,我非常喜欢')#Result
[{'情感倾向[正向,负向]': [{'text': '正向', 'probability': 0.9990024058203417}]}]

评价维度、观点抽取,对象级情感分析:

schema = {'评价维度': ['观点词', '情感倾向[正向,负向]']} 
ie.set_schema(schema) 
pprint(ie("地址不错,服务一般,设施陈旧")) #Result[{'评价维度': [{'end': 2,'probability': 0.9888138676472664,'relations': {'情感倾向[正向,负向]': [{'probability': 0.998228967796706,'text': '正向'}],'观点词': [{'end': 4,'probability': 0.9927846479537372,'start': 2,'text': '不错'}]},'start': 0,'text': '地址'},{'end': 12,'probability': 0.9588297379365116,'relations': {'情感倾向[正向,负向]': [{'probability': 0.9949388606013692,'text': '负向'}],'观点词': [{'end': 14,'probability': 0.9286749937276362,'start': 12,'text': '陈旧'}]},'start': 10,'text': '设施'},{'end': 7,'probability': 0.959285414999755,'relations': {'情感倾向[正向,负向]': [{'probability': 0.9952498258302498,'text': '负向'}],'观点词': [{'end': 9,'probability': 0.9949358587838901,'start': 7,'text': '一般'}]},'start': 5,'text': '服务'}]}]

跨任务跨领域抽取:

schema = ['寺庙', {'丈夫': '妻子'}]
ie.set_schema(schema)
pprint(ie('李治即位后,让身在感业寺的武则天续起头发,重新纳入后宫。'))#Result[{'丈夫': [{'end': 2,'probability': 0.989690572797457,'relations': {'妻子': [{'end': 16,'probability': 0.9987625986569526,'start': 13,'text': '武则天'}]},'start': 0,'text': '李治'}],'寺庙': [{'end': 12,'probability': 0.9888578809890554,'start': 9,'text': '感业寺'}]}]

中文分词:(支持文档级输入)

seg = Taskflow("word_segmentation")doc = "苏锦一直记得那个午后,明晃晃的光线穿过教室的窗玻璃洒到自己脸上,有种特别暖和的感觉。那阳光仿佛是能够钻进人的心里,继而延展到身体全部的毛孔中,然后以一种温柔的霸道占据体内各个淋巴细胞。苏锦觉得连自己的每一个气息里都似乎是能流窜出明亮的光。她坐着有些微醉于这份上帝恩赐的福祉当中。是在这样一个午后。她记住了段见城的脸。轮廓俊朗的少年。有着羁傲的眼神和清晰的声线。怎么看这都是少女漫画里必经的情节。教语文的老太太此刻正兀自在讲台上口若悬河的讲解着《孔雀东南飞》,毕竟是已经年过半百的老教师,经历的学生多了,倒也不在乎讲台下那一张张脸上是否挂着的无精打采,昏昏欲睡的表情,按着自己的性子眉飞色舞的描绘着千年前的那段爱情传奇。苏锦一边数着从老太太口里横飞出来的唾沫星子,一边念想着,让理科班这群脑子里已全被物理公式填充了的家伙,去对几千年前焦仲卿和刘兰芝的爱情产生兴趣未免是件太困难的事情了。老太太讲到焦仲卿和刘兰芝双双殉情而死之时咳嗽了一声,提醒底下那群不知已经神游到何方的学生们是时候为文章的主旨做笔记了。苏锦把课文翻到最后,快速扫过大致内容,目光却在那句:府吏闻此事,心知长别离。徘徊庭树下,自挂东南枝上硬生生地停了下来。思绪仿若戛然而止,被某种莫名的感怀而包围,心中有些钝痛,却不知从何而来。“懦弱。”一个略带鄙夷的声音传入苏锦的耳,拦截住了她空白的思绪。苏锦转过头,瞥见后桌的段见城。恍然间有种错觉,这个男生好似是被光线包裹着一般。段见城淡淡说。若他是焦仲卿,定不会让自己和深爱的女子走到这步田地,若是真走到山穷水尽的地步,定是决然赴死。何来徘徊。那清淡口气带着些不屑,却是这般笃定至极。他说,平生最鄙夷懦弱的男子。苏锦静默的注视着这个男生。终究是没有说出话来。苏锦莫名其妙的做了段见城的女友是一年以后的事情。全班在KTV里唱歌,美名曰:升高三前最后的狂欢。包厢里都是拥挤的人,但苏锦却还是能够感受到空调的温度调得异常的低,她躲在冷风吹不到的角落,捧着大杯的雪花啤酒像是喝水一样没有节制,她觉得心里有所郁结并且心思混乱,恍恍惚惚的注视着麦克风被传了一轮又一轮,听着音像里传出或高或低的杂乱音符,而自己却似是置身于别处,与此间的喧嚣起伏无关,只觉得空荡荡。苏锦记得自己与同桌曾谈及过自己这种从暑假开始无法摆脱的混沌状态,同桌是一副了然于胸的模样,义正言辞的对苏锦说,这是高三前期综合症。她说,苏锦你别太看重所谓的高三,高考和大学都只是一个过程而并非最终的意义,我们要以平常心去对待这些。苏锦想,其实自己并非执著什么,而是自幼便对于那些未知的一切充满恐惧。因为无法掌控,所以感到束手无策,身不由己。仿佛有种被命运捏在手里随意摆弄的感觉,特别难受正当苏锦失足于自己庞大的幻觉之时,身边的朋友开始玩起了真心话大冒险之类的游戏。在一边起哄的女生提议游戏从今晚没有唱歌过的人开始,于是因为忙着在沙发上的打牌的段见城那拨人便是首先被开刷的对象,而作为聚众赌博的头子,段见城自然是第一个被逮到。几个暗自对段见城有好感的姑娘早就揣摩好了问题,苏锦被旁边兴奋过头的女生推攘着,神志也渐渐清明起来。不知是谁直白的问出了那句:阿城,你有意中人么?KTV中的嘈杂如同顿时沉淀了一般,纵然空气里似乎还遗留着些噪音过境的痕迹,更多的却是一种屏气凝神的静。段见城沉默的捏着手中那张还没打出去扑克牌,几乎是在所有人的耐心倒塌的前一秒,清晰地说出了苏锦的名字。"print("输入长度:", len(doc))
print("分词结果:", seg(doc))#Result输入长度: 1413
分词结果: ['苏锦', '一直', '记得', '那个', '午后', ',', '明晃晃', '的', '光线', '穿过', '教室', '的', '窗', '玻璃', '洒', '到', '自己', '脸上', ',', '有种', '特别', '暖和', '的', '感觉', '。', '那', '阳光', '仿佛', '是', '能够', '钻进', '人', '的', '心里', ',', '继而', '延展', '到', '身体', '全部', '的', '毛孔', '中', ',', '然后', '以', '一种', '温柔', '的', '霸道', '占据', '体内', '各', '个', '淋巴细胞', '。', '苏锦', '觉得', '连', '自己', '的', '每一个', '气息', '里', '都', '似乎', '是', '能', '流窜', '出', ...........

词性标注:

from paddlenlp import Taskflowtag = Taskflow("pos_tagging")print(tag("第十四届全运会在西安举办"))#Result[(‘第十四届’, ‘m’), (‘全运会’, ‘nz’), (‘在’, ‘p’), (‘西安’, ‘LOC’), (‘举办’, ‘v’)]

命名实体识别

from paddlenlp import Taskflowner = Taskflow("ner")print(ner(["李伟拿出具有科学性、可操作性的《陕西省高校管理体制改革实施方案》", "诺戴商务咨询(上海)有限公司于2016年08月22日成立"]))#Result[[('李伟', '人物类_实体'), ('拿出', '场景事件'), ('具有', '肯定词'), ('科学性', '修饰词_性质'), ('、', 'w'), ('可操作性', '修饰词_性质'), ('的', '助词'), ('《', 'w'), ('陕西省高校管理体制改革实施方案', '作品类_实体'), ('》', 'w')], [('诺戴商务咨询(上海)有限公司', '组织机构类_企事业单位'), ('于', '介词'), ('2016年08月22日', '时间类_具体时间'), ('成立', '场景事件')]]`在这里插入代码片`

依存句法分析

from paddlenlp import Taskflow# 使用BiLSTM作为编码器,速度最快
ddp = Taskflow("dependency_parsing")#Resultprint(ddp("2月8日谷爱凌夺得北京冬奥会第三金"))[{‘word’: [‘2月8日’, ‘谷爱凌’, ‘夺得’, ‘北京冬奥会’, ‘第三金’], ‘head’: [3, 3, 0, 5, 3], ‘deprel’: [‘ADV’, ‘SBV’, ‘HED’, ‘ATT’, ‘VOB’]}]

 依存句法分析标注关系集合表

文本纠错

ERNIE-CSC在ERNIE预训练模型的基础上,融合了拼音特征的端到端中文拼写纠错模型,整体框架图如下:

                        

from paddlenlp import Taskflowcorrector = Taskflow("text_correction")
print(corrector('遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇。'))#Result[{'source': '遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇。', 'target': '遇到逆境时,我们必须勇于面对,而且要愈挫愈勇。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]

文本相似度

from paddlenlp import Taskflowsimilarity = Taskflow("text_similarity")
print(similarity([["春天适合种什么花?", "春天适合种什么菜?"], ["小蝌蚪找妈妈怎么样", "小蝌蚪找妈妈是谁画的"]]))#Result[{'text1': '春天适合种什么花?', 'text2': '春天适合种什么菜?', 'similarity': 0.83395267}, {'text1': '小蝌蚪找妈妈怎么样', 'text2': '小蝌蚪找妈妈是谁画的', 'similarity': 0.81923723}]

交互式闲聊对话

from paddlenlp import Taskflowdialogue = Taskflow("dialogue")print(dialogue(["你好"]))

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

生成式问答

基于开源社区优秀中文预训练模型CPM,参数规模26亿,预训练中文数据达100GB。
调用示例:

智能写诗
基于开源社区优秀中文预训练模型CPM,参数规模26亿,预训练中文数据达100GB。
调用示例:

参考:

开始使用_飞桨-源于产业实践的开源深度学习平台

飞桨AI Studio星河社区-人工智能学习与实训社区

PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练_汀丶人工智能的技术博客_51CTO博客

欢迎使用PaddleNLP — PaddleNLP 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVASE进阶(设计模式、设计原则)(更新中...)

目录 一、注解 内置注解:JAVA中已经定义好的注解。 元注解:修饰注解的注解。 自定义注解。 二、克隆 JAVA中对clone的实现? 浅克隆 深克隆 那么该如何做到深克隆呢? 三、常用设计模式 1、创建型模式 单例模式 工厂模式 工…

【GitHub项目推荐--一个语音机器人项目】【转载】

推荐一个腾讯大佬开源的语音对话机器人:wukong-robot ,悟空机器人在 GitHub 上斩获 3.2K 的 Star。 这是一个简单灵活的中文语音对话机器人项目,目的是让中国的开发者也能快速打造个性化的智能音箱,同时,该项目还是第…

QTableWidget 双击单元格修改数据

本章介绍通过双击单元格,进入单元格,进行编辑,并对比是否修改了数据,如果修改了更新到数据库。 其他关于QTableWidget的操作,请查看上一篇文章《QTableWidget 用法-CSDN博客》 修改单元格内容,与原值比较…

vue3 npm i 一直卡到不动

一. 首先node 版本要18.0及以上 查看node版本并安装指定版本 二. 查看npm镜像源以及指定安装npm的镜像 三. 删除项目中的package-lock.json文件 最好是把node_modules安装包也删除掉,然后npm i 就可以了

配置jdk环境变量

查看jdk在什么地方的命令 echo $JAVA_HOME 查看jdk的执行路径--使用which java whereis java zip -qr jdk21.zip jdk21/ 手动配置Java环境变量 修改配置环境 vim /etc/profile 把下面的配置放到文件的最后一行 export JAVA_HOME/usr/local/jdk1.8.0_202 # 这里设置…

网络安全人员一定要知道的Metasploit渗透框架!

简介 Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。 Metasploit官网:www.metasploit.com/ Metasploit的Github仓库地址:githu…

时间序列预测 — CNN-LSTM-Attention实现多变量负荷预测(Tensorflow):多变量滚动

专栏链接:https://blog.csdn.net/qq_41921826/category_12495091.html 专栏内容 ​ 所有文章提供源代码、数据集、效果可视化 ​ 文章多次上领域内容榜、每日必看榜单、全站综合热榜 ​ ​ ​ ​ ​ ​ ​ 时间序列预测存在的问题 ​ 现有的大量方法没有真正的预测未…

【目标检测】YOLOv7算法实现(二):正样本匹配(SimOTA)与损失计算

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本篇文章在YOLOv5算法实现的基础上,进一步完成YOLOv7算法的实现。…

40尺货柜可以装载多少张建筑模板?

在建筑行业,40尺货柜一直以其标准化、便捷的特点成为建材运输的首选。然而,对于建筑模板这样的大型且薄型货物,如何在40尺货柜中实现最高效的装载一直是一项具有挑战性的任务。让我们一起揭秘,40尺货柜究竟能够装载多少张建筑模板…

上门回收小程序,打造回收新模式

近年来,我国一直秉持着环保绿色的发展理念,为了减少资源浪费,旧物回收成为了人们处理废弃物品的方式。目前,我国回收市场规模大约能达到3.58亿元,在我国经济的稳定增长和环保意识的提高下,回收市场规模还将…

科技、文化与旅游的融合创新:智慧文旅的未来之路

在当今社会,科技、文化与旅游的融合已经成为文旅产业转型升级的重要趋势。这种融合不仅有助于提升文旅产业的核心竞争力,更有助于推动产业的数字化转型和可持续发展。 本文将深入探讨科技、文化与旅游的融合创新,以及智慧文旅场景的解决方案…

【C++语言1】基本语法

前言 💓作者简介: 加油,旭杏,目前大二,正在学习C,数据结构等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏&#x1…

代码+视频R语言绘制逆概率加权后的基线表

基于 PS (倾向评分)的逆概率加权(IPTW )法首先由Rosenbaum作为一种以模型为基础的直接标准化法提出,属于边际结构模型。简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话&#xff0c…

【GoLang入门教程】Go语言工程结构详述

程序员裁员潮:技术变革下的职业危机 文章目录 程序员裁员潮:技术变革下的职业危机前言总结:专栏集锦强烈推荐写在最后 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网…

3d音响按键怎么建立模型---模大狮模型网

要建立3D音响按键的模型,您可以按照以下步骤进行: 选择建模软件:首先,选择一个三维建模软件,如Blender、3ds Max或Maya。这些软件都提供了丰富的建模工具和功能,适合用于创建复杂的三维模型。 参考图像&am…

java SSM自助快递服务平台myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM自助快递服务平台是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

DophineScheduler通俗版

1.DophineScheduler的架构 ZooKeeper: AlertServer: UI: ApiServer: 一个租户下可以有多个用户;一个用户可以有多个项目一个项目可以有多个工作流定义,每个工作流定义只属于一个项目;一个租户可…

人工智能原理实验4(2)——贝叶斯、决策求解汽车评估数据集

🧡🧡实验内容🧡🧡 汽车数据集 车子具有 buying,maint,doors,persons,lug_boot and safety六种属性,而车子的好坏分为uncc,ucc,good and vgood四种。 🧡🧡贝叶斯求解🧡🧡…

Redis——RDB持久化

前言 Redis是一个键值对数据库服务器,服务器中通常包含任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 因为Redis数据库是内存数据库&a…

Java/Python/Go不同开发语言在进程、线程和协程的设计差异

Java/Python/Go不同开发语言在进程、线程和协程的设计差异 1. 进程、线程和协程上的差异1.1 进程、线程、协程的定义1.2 进程、线程、协程的差异1.3 进程、线程、协程的内存成本1.4 进程、线程、协程的切换成本 2. 线程、协程之间的通信和协作方式2.1 python如何实现线程通信&a…