0. PaddleNLP 一鍵預(yù)測(cè)能力 Taskflow API之三大特性
功能全面
全場(chǎng)景支持:覆蓋NLU和NLG領(lǐng)域十一大經(jīng)典任務(wù)。
文檔級(jí)輸入:支持文檔級(jí)輸入,解決預(yù)訓(xùn)練模型對(duì)輸入文本的長(zhǎng)度限制問(wèn)題,大大節(jié)省用戶輸入長(zhǎng)文本時(shí)的代碼開(kāi)發(fā)量。
定制化訓(xùn)練:支持用戶使用自己的數(shù)據(jù)集進(jìn)行定制化訓(xùn)練,通過(guò)自定義路徑一鍵使用定制化訓(xùn)練好的模型。
簡(jiǎn)捷易用
開(kāi)箱即用,學(xué)習(xí)成本低,幾行代碼便可完成調(diào)用。
產(chǎn)業(yè)級(jí)效果
聚合眾多百度自然語(yǔ)言處理領(lǐng)域自研算法以及社區(qū)優(yōu)秀開(kāi)源模型,模型效果領(lǐng)先。
1. 環(huán)境準(zhǔn)備
!pipinstall--upgradepaddlenlp !pipinstallpypinyin !pipinstallLAC
2. 基礎(chǔ)能力
這一章節(jié)將會(huì)學(xué)到的Taskflow技能:
利用PaddleNLP Taskflow提取句子中的語(yǔ)言學(xué)特征:中文分詞、詞性識(shí)別,依存關(guān)系,命名實(shí)體識(shí)別、關(guān)系抽取、事件抽取等。
2.0 信息抽取
PaddleNLP 5.16新發(fā)開(kāi)放域信息抽取能力,只有你想不到的schema,沒(méi)有UIE抽取不到的結(jié)果哦!
詳情可參考:信息抽取一鍵預(yù)測(cè)能力[1]
如需定制化訓(xùn)練,全套代碼在此:傳送門(mén)[2]
2.0.1 實(shí)體抽取
frompprintimportpprint frompaddlenlpimportTaskflow schema=['時(shí)間','選手','賽事名稱(chēng)']#Definetheschemaforentityextraction ie=Taskflow('information_extraction',schema=schema) pprint(ie("2月8日上午北京冬奧會(huì)自由式滑雪女子大跳臺(tái)決賽中中國(guó)選手谷愛(ài)凌以188.25分獲得金牌!"))#Betterprintresultsusingpprint
[{'時(shí)間':[{'end':6, 'probability':0.9857378532473966, 'start':0, 'text':'2月8日上午'}], '賽事名稱(chēng)':[{'end':23, 'probability':0.8503082243989795, 'start':6, 'text':'北京冬奧會(huì)自由式滑雪女子大跳臺(tái)決賽'}], '選手':[{'end':31, 'probability':0.8981535684051067, 'start':28, 'text':'谷愛(ài)凌'}]}]
2.0.2 關(guān)系抽取
# schema={'歌曲名稱(chēng)':['歌手','所屬專(zhuān)輯']}#Definetheschemaforrelationextraction ie.set_schema(schema)#Resetschema ie('《告別了》是孫耀威在專(zhuān)輯愛(ài)的故事里面的歌曲')
[{'歌曲名稱(chēng)':[{'text':'告別了', 'start':1, 'end':4, 'probability':0.6296147448952354, 'relations':{'歌手':[{'text':'孫耀威', 'start':6, 'end':9, 'probability':0.9988380409852198}], '所屬專(zhuān)輯':[{'text':'愛(ài)的故事', 'start':12, 'end':16, 'probability':0.9968462078543183}]}}, {'text':'愛(ài)的故事', 'start':12, 'end':16, 'probability':0.28168534139751955, 'relations':{'歌手':[{'text':'孫耀威', 'start':6, 'end':9, 'probability':0.9951413914998}]}}]}]
2.0.3 事件抽取
schema={'地震觸發(fā)詞':['地震強(qiáng)度','時(shí)間','震中位置','震源深度']}#Definetheschemaforeventextraction ie.set_schema(schema)#Resetschema ie('中國(guó)地震臺(tái)網(wǎng)正式測(cè)定:5月16日06時(shí)08分在云南臨滄市鳳慶縣(北緯24.34度,東經(jīng)99.98度)發(fā)生3.5級(jí)地震,震源深度10千米。')
[{'地震觸發(fā)詞':[{'text':'地震', 'start':56, 'end':58, 'probability':0.9977425555988333, 'relations':{'地震強(qiáng)度':[{'text':'3.5級(jí)', 'start':52, 'end':56, 'probability':0.998080158269417}], '時(shí)間':[{'text':'5月16日06時(shí)08分', 'start':11, 'end':22, 'probability':0.9853299181377793}], '震中位置':[{'text':'云南臨滄市鳳慶縣(北緯24.34度,東經(jīng)99.98度)', 'start':23, 'end':50, 'probability':0.7874013050677604}], '震源深度':[{'text':'10千米', 'start':63, 'end':67, 'probability':0.9937973233053299}]}}]}]
2.0.4 句子級(jí)情感分類(lèi)
schema='情感傾向[正向,負(fù)向]'#Definetheschemaforsentence-levelsentimentclassification ie.set_schema(schema)#Resetschema ie('這個(gè)產(chǎn)品用起來(lái)真的很流暢,我非常喜歡')
[{'情感傾向[正向,負(fù)向]':[{'text':'正向','probability':0.9990024058203417}]}]
2.0.5 評(píng)價(jià)維度、觀點(diǎn)抽取,對(duì)象級(jí)情感分析
schema={'評(píng)價(jià)維度':['觀點(diǎn)詞','情感傾向[正向,負(fù)向]']}#Definetheschemaforopinionextraction ie.set_schema(schema)#Resetschema pprint(ie("地址不錯(cuò),服務(wù)一般,設(shè)施陳舊"))#Betterprintresultsusingpprint
[{'評(píng)價(jià)維度':[{'end':2, 'probability':0.9888138676472664, 'relations':{'情感傾向[正向,負(fù)向]':[{'probability':0.998228967796706, 'text':'正向'}], '觀點(diǎn)詞':[{'end':4, 'probability':0.9927846479537372, 'start':2, 'text':'不錯(cuò)'}]}, 'start':0, 'text':'地址'}, {'end':12, 'probability':0.9588297379365116, 'relations':{'情感傾向[正向,負(fù)向]':[{'probability':0.9949388606013692, 'text':'負(fù)向'}], '觀點(diǎn)詞':[{'end':14, 'probability':0.9286749937276362, 'start':12, 'text':'陳舊'}]}, 'start':10, 'text':'設(shè)施'}, {'end':7, 'probability':0.959285414999755, 'relations':{'情感傾向[正向,負(fù)向]':[{'probability':0.9952498258302498, 'text':'負(fù)向'}], '觀點(diǎn)詞':[{'end':9, 'probability':0.9949358587838901, 'start':7, 'text':'一般'}]}, 'start':5, 'text':'服務(wù)'}]}]
2.0.6 跨任務(wù)跨領(lǐng)域抽取
schema=['寺廟',{'丈夫':'妻子'}] ie.set_schema(schema) pprint(ie('李治即位后,讓身在感業(yè)寺的武則天續(xù)起頭發(fā),重新納入后宮。'))
[{'丈夫':[{'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':'感業(yè)寺'}]}]
2.1 中文分詞
分詞作為許多NLP任務(wù)的第一道工序,如何在不同場(chǎng)景中『用好』、『用對(duì)』尤為重要。
Taskflow提供了多種中文分詞模式供大家選擇,我們列舉了幾種不同的場(chǎng)景,來(lái)示例不同使用方式。
2.1.1 文檔級(jí)輸入
支持超長(zhǎng)文本輸入,無(wú)需擔(dān)心『文本截?cái)唷粏?wèn)題
#首次調(diào)用會(huì)有模型下載的額外時(shí)間開(kāi)銷(xiāo) seg=Taskflow("word_segmentation") doc="蘇錦一直記得那個(gè)午后,明晃晃的光線穿過(guò)教室的窗玻璃灑到自己臉上,有種特別暖和的感覺(jué)。那陽(yáng)光仿佛是能夠鉆進(jìn)人的心里,繼而延展到身體全部的毛孔中,然后以一種溫柔的霸道占據(jù)體內(nèi)各個(gè)淋巴細(xì)胞。蘇錦覺(jué)得連自己的每一個(gè)氣息里都似乎是能流竄出明亮的光。她坐著有些微醉于這份上帝恩賜的福祉當(dāng)中。是在這樣一個(gè)午后。她記住了段見(jiàn)城的臉。輪廓俊朗的少年。有著羈傲的眼神和清晰的聲線。怎么看這都是少女漫畫(huà)里必經(jīng)的情節(jié)。教語(yǔ)文的老太太此刻正兀自在講臺(tái)上口若懸河的講解著《孔雀東南飛》,畢竟是已經(jīng)年過(guò)半百的老教師,經(jīng)歷的學(xué)生多了,倒也不在乎講臺(tái)下那一張張臉上是否掛著的無(wú)精打采,昏昏欲睡的表情,按著自己的性子眉飛色舞的描繪著千年前的那段愛(ài)情傳奇。蘇錦一邊數(shù)著從老太太口里橫飛出來(lái)的唾沫星子,一邊念想著,讓理科班這群腦子里已全被物理公式填充了的家伙,去對(duì)幾千年前焦仲卿和劉蘭芝的愛(ài)情產(chǎn)生興趣未免是件太困難的事情了。老太太講到焦仲卿和劉蘭芝雙雙殉情而死之時(shí)咳嗽了一聲,提醒底下那群不知已經(jīng)神游到何方的學(xué)生們是時(shí)候?yàn)槲恼碌闹髦甲龉P記了。蘇錦把課文翻到最后,快速掃過(guò)大致內(nèi)容,目光卻在那句:府吏聞此事,心知長(zhǎng)別離。徘徊庭樹(shù)下,自掛東南枝上硬生生地停了下來(lái)。思緒仿若戛然而止,被某種莫名的感懷而包圍,心中有些鈍痛,卻不知從何而來(lái)?!芭橙??!币粋€(gè)略帶鄙夷的聲音傳入蘇錦的耳,攔截住了她空白的思緒。蘇錦轉(zhuǎn)過(guò)頭,瞥見(jiàn)后桌的段見(jiàn)城?;腥婚g有種錯(cuò)覺(jué),這個(gè)男生好似是被光線包裹著一般。段見(jiàn)城淡淡說(shuō)。若他是焦仲卿,定不會(huì)讓自己和深?lèi)?ài)的女子走到這步田地,若是真走到山窮水盡的地步,定是決然赴死。何來(lái)徘徊。那清淡口氣帶著些不屑,卻是這般篤定至極。他說(shuō),平生最鄙夷懦弱的男子。蘇錦靜默的注視著這個(gè)男生。終究是沒(méi)有說(shuō)出話來(lái)。蘇錦莫名其妙的做了段見(jiàn)城的女友是一年以后的事情。全班在KTV里唱歌,美名曰:升高三前最后的狂歡。包廂里都是擁擠的人,但蘇錦卻還是能夠感受到空調(diào)的溫度調(diào)得異常的低,她躲在冷風(fēng)吹不到的角落,捧著大杯的雪花啤酒像是喝水一樣沒(méi)有節(jié)制,她覺(jué)得心里有所郁結(jié)并且心思混亂,恍恍惚惚的注視著麥克風(fēng)被傳了一輪又一輪,聽(tīng)著音像里傳出或高或低的雜亂音符,而自己卻似是置身于別處,與此間的喧囂起伏無(wú)關(guān),只覺(jué)得空蕩蕩。蘇錦記得自己與同桌曾談及過(guò)自己這種從暑假開(kāi)始無(wú)法擺脫的混沌狀態(tài),同桌是一副了然于胸的模樣,義正言辭的對(duì)蘇錦說(shuō),這是高三前期綜合癥。她說(shuō),蘇錦你別太看重所謂的高三,高考和大學(xué)都只是一個(gè)過(guò)程而并非最終的意義,我們要以平常心去對(duì)待這些。蘇錦想,其實(shí)自己并非執(zhí)著什么,而是自幼便對(duì)于那些未知的一切充滿恐懼。因?yàn)闊o(wú)法掌控,所以感到束手無(wú)策,身不由己。仿佛有種被命運(yùn)捏在手里隨意擺弄的感覺(jué),特別難受正當(dāng)蘇錦失足于自己龐大的幻覺(jué)之時(shí),身邊的朋友開(kāi)始玩起了真心話大冒險(xiǎn)之類(lèi)的游戲。在一邊起哄的女生提議游戲從今晚沒(méi)有唱歌過(guò)的人開(kāi)始,于是因?yàn)槊χ谏嘲l(fā)上的打牌的段見(jiàn)城那撥人便是首先被開(kāi)刷的對(duì)象,而作為聚眾賭博的頭子,段見(jiàn)城自然是第一個(gè)被逮到。幾個(gè)暗自對(duì)段見(jiàn)城有好感的姑娘早就揣摩好了問(wèn)題,蘇錦被旁邊興奮過(guò)頭的女生推攘著,神志也漸漸清明起來(lái)。不知是誰(shuí)直白的問(wèn)出了那句:阿城,你有意中人么?KTV中的嘈雜如同頓時(shí)沉淀了一般,縱然空氣里似乎還遺留著些噪音過(guò)境的痕跡,更多的卻是一種屏氣凝神的靜。段見(jiàn)城沉默的捏著手中那張還沒(méi)打出去撲克牌,幾乎是在所有人的耐心倒塌的前一秒,清晰地說(shuō)出了蘇錦的名字。" print("1. 輸入長(zhǎng)度:",len(doc)) print("2. 分詞結(jié)果:",seg(doc))
1.輸入長(zhǎng)度:1413 2.分詞結(jié)果:['蘇錦','一直','記得','那個(gè)','午后',',','明晃晃','的','光線','穿過(guò)','教室','的','窗','玻璃','灑','到','自己','臉上',',','有種','特別','暖和','的','感覺(jué)','。','那','陽(yáng)光','仿佛','是','能夠','鉆進(jìn)','人','的','心里',',','繼而','延展','到','身體','全部','的','毛孔','中',',','然后','以','一種','溫柔','的','霸道','占據(jù)','體內(nèi)','各','個(gè)','淋巴細(xì)胞','。','蘇錦','覺(jué)得','連','自己','的','每一個(gè)','氣息','里','都','似乎','是','能','流竄','出',...........
2.1.2 快速模式分詞
示例如何通過(guò)快速模式分詞對(duì)數(shù)據(jù)集進(jìn)行詞頻統(tǒng)計(jì)、構(gòu)建詞表
importtime fromcollectionsimportdefaultdict frompaddlenlp.datasetsimportload_dataset frompaddlenlpimportTaskflow seg_fast=Taskflow("word_segmentation",mode="fast") #加載ChnSentiCorp數(shù)據(jù)集 train_ds,dev_ds=load_dataset("chnsenticorp",splits=["train","dev"]) texts=[] fordataintrain_ds: texts.append(data["text"]) fordataindev_ds: texts.append(data["text"]) inputs_length=len(texts) print("1. 句子數(shù)量:",inputs_length) tic_seg=time.time() #快速分詞 results=seg_fast(texts) time_diff=time.time()-tic_seg print("2. 平均速率:%.2f句/s"%(inputs_length/time_diff)) #詞頻統(tǒng)計(jì) word_counts=defaultdict(int) forresultinresults: forwordinresult: word_counts[word]+=1 #打印頻次最高的前20個(gè)單詞及其對(duì)應(yīng)詞頻 print("3. Top 20 Words:",sorted(word_counts.items(),key=lambdad:d[1],reverse=True)[:20])
100%|██████████|1909/1909[00:00<00:00,?7614.49it/s] 1.?句子數(shù)量:?10800 Building?prefix?dict?from?the?default?dictionary?... Dumping?model?to?file?cache?/tmp/jieba.cache Loading?model?cost?0.995?seconds. Prefix?dict?has?been?built?successfully. 2.?平均速率:1429.74句/s 3.?Top?20?Words:?[(',',?59389),?('的',?41468),?('。',?23207),?('了',?15048),?('?',?11426),?('是',?10479),?(',',?9204),?('我',?9167),?('很',?6881),?('!',?6169),?('也',?5793),?('在',?5180),?('酒店',?4829),?('不',?4784),?('都',?4604),?('有',?4589),?('就',?4169),?('.',?4099),?('沒(méi)有',?3594),?('還',?3455)]
2.1.3 精確模式分詞
使用Taskflow精確模式,實(shí)體粒度分詞精度最高,語(yǔ)義片段完整,在知識(shí)圖譜構(gòu)建等應(yīng)用中優(yōu)勢(shì)明顯。
實(shí)體詞容易被切開(kāi),例如『陜西省高校管理體制改革實(shí)施方案』、『諾戴商務(wù)咨詢(上海)有限公司』希望能夠被完整識(shí)別。
frompaddlenlpimportTaskflow #精確模式模型體積較大,可結(jié)合機(jī)器情況適當(dāng)調(diào)整batch_size,采用批量樣本輸入的方式。 seg_accurate=Taskflow("word_segmentation",mode="accurate",batch_size=32) #批量樣本輸入,輸入為多個(gè)句子組成的list,平均速率更快 texts=["李偉拿出具有科學(xué)性、可操作性的《陜西省高校管理體制改革實(shí)施方案》","諾戴商務(wù)咨詢(上海)有限公司于2016年08月22日成立"] print(seg_accurate(texts))
[['李偉','拿出','具有','科學(xué)性','、','可操作性','的','《','陜西省高校管理體制改革實(shí)施方案','》'],['諾戴商務(wù)咨詢(上海)有限公司','于','2016年08月22日','成立']]
2.1.4 用戶詞典
快速配置用戶詞典來(lái)對(duì)分詞結(jié)果進(jìn)行干預(yù)
frompaddlenlpimportTaskflow seg=Taskflow("word_segmentation") print(seg("平原上的火焰宣布延期上映"))`
[‘平原’, ‘上’, ‘的’, ‘火焰’, ‘宣布’, ‘延期’, ‘上映’]
例如我們想把『平原上的火焰』作為一個(gè)完整詞來(lái)識(shí)別,而『上映』希望能夠被切開(kāi),則可以按照如下格式配置自定義詞典文件user_dict.txt
平原上的火焰 上 映
配置后通過(guò)user_dict一鍵裝載在這里插入代碼片
seg=Taskflow("word_segmentation",user_dict="/home/aistudio/user_dict.txt") print(seg("平原上的火焰宣布延期上映"))
[‘平原上的火焰’, ‘宣布’, ‘延期’, ‘上’, ‘映’]
2.2 詞性標(biāo)注
基于百度詞法分析工具LAC,訓(xùn)練語(yǔ)料包含近2200萬(wàn)句子,覆蓋多種場(chǎng)景
frompaddlenlpimportTaskflow tag=Taskflow("pos_tagging") print(tag("第十四屆全運(yùn)會(huì)在西安舉辦"))
[(‘第十四屆’, ‘m’), (‘全運(yùn)會(huì)’, ‘nz’), (‘在’, ‘p’), (‘西安’, ‘LOC’), (‘舉辦’, ‘v’)]
2.3 命名實(shí)體識(shí)別
2.3.1 精確模式
基于百度解語(yǔ)的精確模式:最全中文實(shí)體標(biāo)簽的命名實(shí)體識(shí)別工具,不僅適用于通用領(lǐng)域,也適用于生物醫(yī)療、教育等垂類(lèi)領(lǐng)域。包含66種詞性及專(zhuān)名類(lèi)別標(biāo)簽(同類(lèi)產(chǎn)品的標(biāo)簽數(shù)是15個(gè)左右)
frompaddlenlpimportTaskflow ner=Taskflow("ner") print(ner(["李偉拿出具有科學(xué)性、可操作性的《陜西省高校管理體制改革實(shí)施方案》","諾戴商務(wù)咨詢(上海)有限公司于2016年08月22日成立"])) [[('李偉','人物類(lèi)_實(shí)體'),('拿出','場(chǎng)景事件'),('具有','肯定詞'),('科學(xué)性','修飾詞_性質(zhì)'),('、','w'),('可操作性','修飾詞_性質(zhì)'),('的','助詞'),('《','w'),('陜西省高校管理體制改革實(shí)施方案','作品類(lèi)_實(shí)體'),('》','w')],[('諾戴商務(wù)咨詢(上海)有限公司','組織機(jī)構(gòu)類(lèi)_企事業(yè)單位'),('于','介詞'),('2016年08月22日','時(shí)間類(lèi)_具體時(shí)間'),('成立','場(chǎng)景事件')]]`在這里插入代碼片`
精確模式標(biāo)簽集合
人物類(lèi)_實(shí)體 | 物體類(lèi) | 生物類(lèi)_動(dòng)物 | 醫(yī)學(xué)術(shù)語(yǔ)類(lèi) |
人物類(lèi)_概念 | 物體類(lèi)_兵器 | 品牌名 | 術(shù)語(yǔ)類(lèi)_生物體 |
作品類(lèi)_實(shí)體 | 物體類(lèi)_化學(xué)物質(zhì) | 場(chǎng)所類(lèi) | 疾病損傷類(lèi) |
作品類(lèi)_概念 | 其他角色類(lèi) | 場(chǎng)所類(lèi)_交通場(chǎng)所 | 疾病損傷類(lèi)_植物病蟲(chóng)害 |
組織機(jī)構(gòu)類(lèi) | 文化類(lèi) | 位置方位 | 宇宙類(lèi) |
組織機(jī)構(gòu)類(lèi)_企事業(yè)單位 | 文化類(lèi)_語(yǔ)言文字 | 世界地區(qū)類(lèi) | 事件類(lèi) |
組織機(jī)構(gòu)類(lèi)_醫(yī)療衛(wèi)生機(jī)構(gòu) | 文化類(lèi)_獎(jiǎng)項(xiàng)賽事活動(dòng) | 飲食類(lèi) | 時(shí)間類(lèi) |
組織機(jī)構(gòu)類(lèi)_國(guó)家機(jī)關(guān) | 文化類(lèi)_制度政策協(xié)議 | 飲食類(lèi)_菜品 | 時(shí)間類(lèi)_特殊日 |
組織機(jī)構(gòu)類(lèi)_體育組織機(jī)構(gòu) | 文化類(lèi)_姓氏與人名 | 飲食類(lèi)_飲品 | 術(shù)語(yǔ)類(lèi) |
組織機(jī)構(gòu)類(lèi)_教育組織機(jī)構(gòu) | 生物類(lèi) | 藥物類(lèi) | 術(shù)語(yǔ)類(lèi)_符號(hào)指標(biāo)類(lèi) |
組織機(jī)構(gòu)類(lèi)_軍事組織機(jī)構(gòu) | 生物類(lèi)_植物 | 藥物類(lèi)_中藥 | 信息資料 |
鏈接地址 | 肯定詞 | 個(gè)性特征 | 否定詞 |
感官特征 | 數(shù)量詞 | 場(chǎng)景事件 | 嘆詞 |
介詞 | 擬聲詞 | 介詞_方位介詞 | 修飾詞 |
助詞 | 外語(yǔ)單詞 | 代詞 | 英語(yǔ)單詞 |
連詞 | 漢語(yǔ)拼音 | 副詞 | 詞匯用語(yǔ) |
疑問(wèn)詞 | w(標(biāo)點(diǎn)) |
精準(zhǔn)模式對(duì)部分類(lèi)目(如組織機(jī)構(gòu)等),做了更細(xì)的劃分識(shí)別(如,醫(yī)療衛(wèi)生機(jī)構(gòu)、體育組織機(jī)構(gòu))。
2.3.2 快速模式
基于百度詞法分析工具LAC,訓(xùn)練語(yǔ)料包含近2200萬(wàn)句子,覆蓋多種場(chǎng)景
frompaddlenlpimportTaskflow ner_fast=Taskflow("ner",mode="fast") print(ner_fast("三亞是一個(gè)美麗的城市"))
[(‘三亞’, ‘LOC’), (‘是’, ‘v’), (‘一個(gè)’, ‘m’), (‘美麗’, ‘a(chǎn)’), (‘的’, ‘u’), (‘城市’, ‘n’)]
快速模式標(biāo)簽集合
快速模式標(biāo)簽集合
2.4 依存句法分析
2.4.1 多種使用方式
frompaddlenlpimportTaskflow #使用BiLSTM作為編碼器,速度最快 ddp=Taskflow("dependency_parsing") print(ddp("2月8日谷愛(ài)凌奪得北京冬奧會(huì)第三金"))
[{‘word’: [‘2月8日’, ‘谷愛(ài)凌’, ‘奪得’, ‘北京冬奧會(huì)’, ‘第三金’], ‘head’: [3, 3, 0, 5, 3], ‘deprel’: [‘ADV’, ‘SBV’, ‘HED’, ‘ATT’, ‘VOB’]}]
#編碼器部分將BiLSTM替換為ERNIE,模型準(zhǔn)確率更高! ddp=Taskflow("dependency_parsing",model="ddparser-ernie-1.0") print(ddp("2月8日谷愛(ài)凌奪得北京冬奧會(huì)第三金"))
#輸出概率值和詞性標(biāo)簽 ddp=Taskflow("dependency_parsing",prob=True,use_pos=True) print(ddp("2月8日谷愛(ài)凌奪得北京冬奧會(huì)第三金"))
依存句法分析標(biāo)注關(guān)系集合
依存句法分析標(biāo)注關(guān)系集合
2.4.2 應(yīng)用示例
通過(guò)句法分析抽取句子的主謂賓結(jié)構(gòu)信息
frompaddlenlpimportTaskflow ddp=Taskflow("dependency_parsing") print(ddp("9月9日上午納達(dá)爾在亞瑟·阿什球場(chǎng)擊敗俄羅斯球員梅德韋杰夫"))
下圖句子中包含了多種結(jié)構(gòu)化信息:
fromutilsimportSVOInfo texts=["9月9日上午納達(dá)爾在亞瑟·阿什球場(chǎng)擊敗俄羅斯球員梅德韋杰夫","2月8日谷愛(ài)凌奪得北京冬奧會(huì)第三金"] results=ddp(texts) #抽取句子中的SVO(主謂賓)結(jié)構(gòu)化信息 svo_info=[] forresultinresults: svo_info.append(SVOInfo(result).parse()) foriinrange(len(texts)): print("原文本:",texts[i]) print("包含的主謂賓結(jié)構(gòu):",svo_info[i])
3. 『產(chǎn)業(yè)』應(yīng)用
這一章節(jié)將會(huì)學(xué)到的Taskflow技能:
使用Taskflow來(lái)完成情感分析、文本糾錯(cuò)、文本相似度
3.1 情感分析
3.1.1 BiLSTM
默認(rèn)使用的是BiLSTM。
frompaddlenlpimportTaskflow senta=Taskflow("sentiment_analysis") print(senta("這個(gè)產(chǎn)品用起來(lái)真的很流暢,我非常喜歡")) [{'text':'這個(gè)產(chǎn)品用起來(lái)真的很流暢,我非常喜歡','label':'positive','score':0.993867814540863}]
3.1.2 SKEP
集成百度自研的情感知識(shí)增強(qiáng)預(yù)訓(xùn)練模型SKEP,利用情感知識(shí)構(gòu)建預(yù)訓(xùn)練目標(biāo),在海量中文數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,為各類(lèi)情感分析任務(wù)提供統(tǒng)一且強(qiáng)大的情感語(yǔ)義表示能力。
在多個(gè)公開(kāi)數(shù)據(jù)集上模型效果SOTA:
frompaddlenlpimportTaskflow senta=Taskflow("sentiment_analysis",model="skep_ernie_1.0_large_ch") print(senta("作為老的四星酒店,房間依然很整潔,相當(dāng)不錯(cuò)。機(jī)場(chǎng)接機(jī)服務(wù)很好,可以在車(chē)上辦理入住手續(xù),節(jié)省時(shí)間。"))
[{'text':'作為老的四星酒店,房間依然很整潔,相當(dāng)不錯(cuò)。機(jī)場(chǎng)接機(jī)服務(wù)很好,可以在車(chē)上辦理入住手續(xù),節(jié)省時(shí)間。','label':'positive','score':0.9843240976333618}]
3.2 文本糾錯(cuò)
ERNIE-CSC在ERNIE預(yù)訓(xùn)練模型的基礎(chǔ)上,融合了拼音特征的端到端中文拼寫(xiě)糾錯(cuò)模型,整體框架圖如下:
在中文糾錯(cuò)經(jīng)典數(shù)據(jù)集SIGHAN上效果領(lǐng)先:
frompaddlenlpimportTaskflow corrector=Taskflow("text_correction") print(corrector('遇到逆竟時(shí),我們必須勇于面對(duì),而且要愈挫愈勇。'))
[{'source':'遇到逆竟時(shí),我們必須勇于面對(duì),而且要愈挫愈勇。','target':'遇到逆境時(shí),我們必須勇于面對(duì),而且要愈挫愈勇。','errors':[{'position':3,'correction':{'竟':'境'}}]}]
3.3 文本相似度
基于百度知道2200萬(wàn)對(duì)相似句組訓(xùn)練SimBERT達(dá)到前沿文本相似效果
frompaddlenlpimportTaskflow similarity=Taskflow("text_similarity") print(similarity([["春天適合種什么花?","春天適合種什么菜?"],["小蝌蚪找媽媽怎么樣","小蝌蚪找媽媽是誰(shuí)畫(huà)的"]]))
[{'text1':'春天適合種什么花?','text2':'春天適合種什么菜?','similarity':0.83395267},{'text1':'小蝌蚪找媽媽怎么樣','text2':'小蝌蚪找媽媽是誰(shuí)畫(huà)的','similarity':0.81923723}]
3.4 『解語(yǔ)』-知識(shí)標(biāo)注
基于百度解語(yǔ),首個(gè)能夠覆蓋所有中文詞匯的詞類(lèi)知識(shí)標(biāo)注工具,旨在為中文文本解析提供全面、豐富的知識(shí)標(biāo)注結(jié)果
frompaddlenlpimportTaskflow wordtag=Taskflow("knowledge_mining") #結(jié)果會(huì)與TermTree進(jìn)行綁定,輸出termid print(wordtag("第24屆冬季奧林匹克運(yùn)動(dòng)會(huì)在北京舉辦"))
[{'text':'第24屆冬季奧林匹克運(yùn)動(dòng)會(huì)在北京舉辦','items':[{'item':'第24屆冬季奧林匹克運(yùn)動(dòng)會(huì)','offset':0,'wordtag_label':'事件類(lèi)','length':13},{'item':'在','offset':13, 'wordtag_label':'介詞','length':1,'termid':'介詞_cb_在'},{'item':'北京','offset':14, 'wordtag_label':'世界地區(qū)類(lèi)','length':2,'termid':'中國(guó)地區(qū)_cb_北京市'},{'item':'舉辦','offset':16,'wordtag_label':'場(chǎng)景事件','length':2,'termid':'場(chǎng)景事件_cb_舉辦'}]}]
fromtermtreeimportTermTree #加載百科知識(shí)樹(shù) termtree=TermTree.from_dir("termtree_type.csv","TermTree.V1.0") #通過(guò)termid獲取別名 print(termtree._nodes["獎(jiǎng)項(xiàng)賽事活動(dòng)_eb_冬季奧林匹克運(yùn)動(dòng)會(huì)"]._data['alias']) #通過(guò)termid獲取百度百科鏈接 print(termtree._nodes['獎(jiǎng)項(xiàng)賽事活動(dòng)_eb_冬季奧林匹克運(yùn)動(dòng)會(huì)']._data['links'][0]['bdbkUrl'])
[‘冬奧會(huì)’, ‘冬奧’, ‘冬季奧運(yùn)會(huì)’]
更多TermTree使用方法參考解語(yǔ):TermTree(百科知識(shí)樹(shù))[3]
4. 『趣味』應(yīng)用
這一章節(jié)將會(huì)學(xué)到的Taskflow技能:
感受海量數(shù)據(jù)訓(xùn)練出來(lái)的預(yù)訓(xùn)練模型的超強(qiáng)能力
利用Taskflow打造一個(gè)『能說(shuō)會(huì)道、擅長(zhǎng)聊天』的機(jī)器人
利用Taskflow構(gòu)建一個(gè)問(wèn)答/寫(xiě)詩(shī)系統(tǒng)
4.1 交互式閑聊對(duì)話
基于PLATO-MINI,模型在十億級(jí)別的中文對(duì)話數(shù)據(jù)上進(jìn)行了預(yù)訓(xùn)練,閑聊場(chǎng)景對(duì)話效果顯著。
frompaddlenlpimportTaskflow dialogue=Taskflow("dialogue") print(dialogue(["你好"]))
交互模式
(推薦使用終端terminal進(jìn)入python解釋器進(jìn)行體驗(yàn)):
4.2 生成式問(wèn)答
基于開(kāi)源社區(qū)優(yōu)秀中文預(yù)訓(xùn)練模型CPM,參數(shù)規(guī)模26億,預(yù)訓(xùn)練中文數(shù)據(jù)達(dá)100GB。
調(diào)用示例:
NOTE:由于項(xiàng)目空間有限,這里只列舉了調(diào)用方法,為了有更好的使用體驗(yàn),大家可以另外創(chuàng)建一個(gè)項(xiàng)目來(lái)體驗(yàn)這部分功能~
4.3 智能寫(xiě)詩(shī)
基于開(kāi)源社區(qū)優(yōu)秀中文預(yù)訓(xùn)練模型CPM,參數(shù)規(guī)模26億,預(yù)訓(xùn)練中文數(shù)據(jù)達(dá)100GB。
調(diào)用示例:
NOTE:由于項(xiàng)目空間有限,這里只列舉了調(diào)用方法,為了有更好的使用體驗(yàn),大家可以另外創(chuàng)建一個(gè)項(xiàng)目來(lái)體驗(yàn)這部分功能~
5.定制化訓(xùn)練
這一章節(jié)將會(huì)學(xué)到的Taskflow技能:
利用自己的數(shù)據(jù)訓(xùn)練/微調(diào)模型,通過(guò)Taskflow一鍵裝載并使用
5.1 數(shù)據(jù)準(zhǔn)備和訓(xùn)練
參考PaddleNLP SKEP情感分析訓(xùn)練示例[4],完成數(shù)據(jù)準(zhǔn)備和模型訓(xùn)練。
#訓(xùn)練步驟省略,提供了訓(xùn)練好的模型權(quán)重文件 #直接下載并保存到/home/aistudio/custom_model路徑 !wgethttps://bj.bcebos.com/paddlenlp/taskflow/demo/model_state.pdparams-P/home/aistudio/custom_model !wgethttps://bj.bcebos.com/paddlenlp/taskflow/demo/model_config.json-P/home/aistudio/custom_model
5.2 使用定制化模型
通過(guò)task_path指定自定義模型路徑一鍵加載即可。
frompaddlenlpimportTaskflow my_senta=Taskflow("sentiment_analysis",model="skep_ernie_1.0_large_ch",task_path="/home/aistudio/custom_model") print(my_senta("不錯(cuò)的酒店,服務(wù)還可以,下次還會(huì)入住的~"))
[{‘text’: ‘不錯(cuò)的酒店,服務(wù)還可以,下次還會(huì)入住的~’, ‘label’: ‘positive’, ‘score’: 0.9968485236167908}]
-
API
+關(guān)注
關(guān)注
2文章
1620瀏覽量
64048 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3689瀏覽量
43832 -
訓(xùn)練模型
+關(guān)注
關(guān)注
1文章
37瀏覽量
3964
原文標(biāo)題:5.定制化訓(xùn)練
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
芯達(dá)STM32入門(mén)系列教程之三《如何使用J-Flash調(diào)試》
STM32之三行按鍵宏定義
CAM350 技巧之三
高速PCB設(shè)計(jì)指南之三
MATLAB的基本知識(shí)之三維網(wǎng)圖的高級(jí)處理

從零開(kāi)始MQX開(kāi)發(fā)之三添加新的開(kāi)發(fā)板到CodeWarrior項(xiàng)目
Proteus之矩陣式鍵盤(pán)的識(shí)別之三
Labview之上機(jī)實(shí)驗(yàn)之三
Labview之動(dòng)態(tài)窗口樣式之三
電源反饋設(shè)計(jì)速成篇之三測(cè)量篇

三維立體視覺(jué)之三維恢復(fù)方法

評(píng)論