最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

中醫(yī)名詞看不懂?用PaddleNLP做一個(gè)中醫(yī)“百科全書”!

2023-02-02 11:31 作者:飛槳PaddlePaddle  | 我要投稿


我是一個(gè)深度學(xué)習(xí)愛好者,目前對(duì)自然語言處理感興趣,熱衷于了解一些人工智能中的數(shù)學(xué)推導(dǎo)和經(jīng)典論文復(fù)現(xiàn),正在成長(zhǎng)的“小趴菜”一枚,在PPDE指導(dǎo)計(jì)劃中,創(chuàng)作了中醫(yī)文獻(xiàn)閱讀理解項(xiàng)目,下面將由我介紹在項(xiàng)目創(chuàng)作過程中的一些思考。

我是一個(gè)深度學(xué)習(xí)愛好者,目前對(duì)自然語言處理感興趣,熱衷于了解一些人工智能中的數(shù)學(xué)推導(dǎo)和經(jīng)典論文復(fù)現(xiàn),正在成長(zhǎng)的“小趴菜”一枚,在PPDE指導(dǎo)計(jì)劃中,創(chuàng)作了中醫(yī)文獻(xiàn)閱讀理解項(xiàng)目,下面將由我介紹在項(xiàng)目創(chuàng)作過程中的一些思考。


方案介紹

項(xiàng)目簡(jiǎn)介

中醫(yī)文獻(xiàn)閱讀理解是一個(gè)將自然語言處理技術(shù)應(yīng)用于中醫(yī)藥領(lǐng)域的任務(wù),其目標(biāo)是使用能夠讀取、理解和回答中醫(yī)藥知識(shí)的模型普及和傳播中醫(yī)藥知識(shí)。該任務(wù)需要建立一個(gè)大規(guī)模的中醫(yī)藥語料庫,并使用自然語言處理技術(shù)對(duì)語料庫進(jìn)行處理,提取關(guān)鍵信息并建立模型。
模型的輸入可以是一個(gè)中醫(yī)藥相關(guān)的問題,模型的輸出則是問題的答案。例如,如果輸入的問題是“什么是中醫(yī)證候?qū)W?”,則模型的輸出可能是“中醫(yī)證候?qū)W是中醫(yī)藥的一個(gè)重要理論,它旨在通過觀察患者的癥狀和體征,推斷患者所患疾病的特點(diǎn)和發(fā)展趨勢(shì),為臨床治療提供理論指導(dǎo)。” ??此外,基于該任務(wù)還可以開發(fā)更多關(guān)于中醫(yī)藥知識(shí)的小應(yīng)用,如中醫(yī)藥問診系統(tǒng)、中醫(yī)藥辨證論治輔助工具等,以幫助更多人了解和應(yīng)用中醫(yī)藥知識(shí)。

  • 項(xiàng)目鏈接

https://aistudio.baidu.com/aistudio/projectdetail/5166465

數(shù)據(jù)集介紹

本項(xiàng)目標(biāo)注數(shù)據(jù)源來自四個(gè)中醫(yī)藥領(lǐng)域文本,包括《黃帝內(nèi)經(jīng)翻譯版》《名醫(yī)百科中醫(yī)篇》《中成藥用藥卷》《慢性病養(yǎng)生保健科普知識(shí)》。共計(jì)5000篇文檔,每篇文檔人工標(biāo)注產(chǎn)生 1~4對(duì)(問題, 答案),共標(biāo)注13000對(duì)(文檔、問題、答案)。

技術(shù)點(diǎn)介紹

隨著中醫(yī)文獻(xiàn)資源的不斷增加, 如何高效地閱讀和理解中醫(yī)文獻(xiàn)已經(jīng)成為了一個(gè)重要課題。為了解決這個(gè)問題,我們需要利用一些自然語言處理、機(jī)器學(xué)習(xí)、可視化等相關(guān)技術(shù)。本項(xiàng)目的主要技術(shù)點(diǎn)包括:

  • 構(gòu)建中醫(yī)MRC數(shù)據(jù)集,使用PaddleNLP搭建、訓(xùn)練并調(diào)優(yōu)閱讀理解模型;

  • 采用多種內(nèi)置模型進(jìn)行實(shí)驗(yàn),最終確定使用Roberta閱讀理解模型

  • 動(dòng)轉(zhuǎn)靜,完成靜態(tài)圖的推理,并用Gradio實(shí)現(xiàn)可交互的部署。

01 PaddleNLP

PaddleNLP是飛槳自然語言處理模型庫,具備易用的文本領(lǐng)域API、豐富的預(yù)訓(xùn)練模型、多場(chǎng)景的應(yīng)用示例和高性能分布式訓(xùn)練與部署能力,旨在提升開發(fā)者在文本領(lǐng)域的開發(fā)效率。

02 RoBERTa閱讀理解模型

閱讀理解本質(zhì)是一個(gè)答案抽取任務(wù),PaddleNLP對(duì)于各種預(yù)訓(xùn)練模型已經(jīng)內(nèi)置了對(duì)于下游任務(wù)-答案抽取的Fine-tune網(wǎng)絡(luò)。以PaddleNLP中的RoBERTa模型為例,將模型Fine-tune完成答案抽取任務(wù)。
答案抽取任務(wù)的本質(zhì)就是根據(jù)輸入的問題和文章,預(yù)測(cè)答案在文章中的起始位置和結(jié)束位置。

  • 訓(xùn)練時(shí)間更長(zhǎng),batch size更大,訓(xùn)練數(shù)據(jù)更多;

  • 移除了next predict loss

  • 訓(xùn)練序列更長(zhǎng);

  • 動(dòng)態(tài)調(diào)整Masking機(jī)制。

在BERT中,mask是在數(shù)據(jù)預(yù)處理過程中完成,這意味著,在每個(gè)epoch中,訓(xùn)練的每個(gè)句子的mask是固定的、靜態(tài)的。RoBERTa提出一種動(dòng)態(tài)mask的方法,將訓(xùn)練數(shù)據(jù)每個(gè)句子復(fù)制10次,采用不同的mask方法,這樣在epoch為40的時(shí)候,平均每條mask的序列會(huì)出現(xiàn)4次。

對(duì)中文數(shù)據(jù)的處理中,預(yù)訓(xùn)練模型RoBERTa使用BPE (Byte-Pair Encoding,字節(jié)對(duì)編碼)處理文本順序。官方詞表包含5萬多的byte級(jí)別的token。其中,merges.txt文件存儲(chǔ)了所有的token,vocab.json文件是一個(gè)byte到索引的映射,通常頻率越高的byte索引越小。BPE編碼轉(zhuǎn)換的過程是,先將輸入的所有tokens轉(zhuǎn)化為merges.txt中對(duì)應(yīng)的byte,再通過vocab.json中的字典進(jìn)行byte到索引的映射。Tokenizer的作用是將原始輸入文本轉(zhuǎn)化成模型可以接受的輸入數(shù)據(jù)形式。

03 基于Gradio實(shí)現(xiàn)AI算法可視化部署

如何將你的AI算法迅速分享給別人讓對(duì)方體驗(yàn),一直是一件麻煩事兒。Gradio算法可視化部署可以自動(dòng)生成頁面,形成交互,改動(dòng)幾行代碼就能完成項(xiàng)目,支持自定義多種輸入輸出,支持生成可外部訪問的鏈接,從而實(shí)現(xiàn)分享。

04 最終效果呈現(xiàn)

設(shè)計(jì)流程展示

環(huán)境配置

本項(xiàng)目基于PaddlePaddle2.0.2與PaddleNLP2.0.7版本。關(guān)于如何下載此版本可以點(diǎn)擊飛槳官網(wǎng),查看下載方式。更加推薦在AI Studio上一鍵運(yùn)行哦。

  • 項(xiàng)目鏈接

https://aistudio.baidu.com/aistudio/projectdetail/5166465

方案設(shè)計(jì)

閱讀理解的方案如上圖,query表示問句,一般是用戶的提問,passage表示文章,query的答案要從passage里面抽取出來。query和passage經(jīng)過數(shù)據(jù)預(yù)處理,生成其id形式的輸入,然后經(jīng)過RoBERTa模型,得到答案的位置,從而得到相應(yīng)的answer。

數(shù)據(jù)處理

具體的任務(wù)定義為:給定問題q和一個(gè)篇章p,根據(jù)篇章內(nèi)容,給出該問題的答案a。數(shù)據(jù)集中的每個(gè)樣本,是一個(gè)三元組<q, p, a>,例如:

問題 q: 草菇有什么功效?

篇章 p: 草菇薺菜湯鮮嫩清香、色味搭配,具有清熱和脾、益氣平肝、降糖降壓等功效,是夏季解暑祛熱的良食佳品…….

參考答案 a: ?草菇薺菜湯鮮嫩清香、色味搭配,具有清熱和脾、益氣平肝、降糖降壓等功效。

本項(xiàng)目的數(shù)據(jù)集是json格式,包括:

  • lid: 段落id?

  • ltext: 段落文本

  • lannotations: 每個(gè)段落擁有一個(gè)annotations,其中包含1~4對(duì)(問題、答案)

  • lQ:問題 ?

  • lA:答案

將上述數(shù)據(jù)進(jìn)行簡(jiǎn)單地?cái)?shù)據(jù)清洗以及格式(sqaud格式)轉(zhuǎn)換操作。為了方便讀取,具體格式如下:

模型訓(xùn)練與策略選擇

01 設(shè)置Fine-tune優(yōu)化策略

02 設(shè)計(jì)損失函數(shù)

由于BertForQuestionAnswering模型將BERT模型的sequence_output拆成start_logits和end_logits,所以閱讀理解任務(wù)的loss也由start_loss和end_loss組成。答案起始位置和結(jié)束位置的預(yù)測(cè)可以分成兩個(gè)分類任務(wù),我們需要自己定義損失函數(shù)。設(shè)計(jì)的損失函數(shù)如下:

03 模型訓(xùn)練

模型訓(xùn)練的過程通常有以下步驟:

  • 從dataloader中取出一個(gè)batch data;

  • 將batch data喂給model,做前向計(jì)算;

  • 將前向計(jì)算結(jié)果傳給損失函數(shù),計(jì)算loss;

  • loss反向回傳,更新梯度。重復(fù)以上步驟。

每訓(xùn)練一個(gè)epoch時(shí),程序通過evaluate()調(diào)用paddlenlp.metric.squad中的squad_evaluate()返回評(píng)價(jià)指標(biāo),compute_predictions() 評(píng)估當(dāng)前模型訓(xùn)練的效果,用于生成可提交的答案。


預(yù)測(cè)部署

模型訓(xùn)練完成之后,我們實(shí)現(xiàn)模型的預(yù)測(cè)部署。雖然訓(xùn)練階段使用的動(dòng)態(tài)圖模式有諸多優(yōu)點(diǎn),包括Python風(fēng)格的編程體驗(yàn)(使用RNN等包含控制流的網(wǎng)絡(luò)時(shí)尤為明顯)、友好的debug交互機(jī)制等。但Python動(dòng)態(tài)圖模式無法更好地滿足預(yù)測(cè)部署階段的性能要求,同時(shí)也限制了部署環(huán)境。高性能預(yù)測(cè)部署需要靜態(tài)圖模型導(dǎo)出和預(yù)測(cè)引擎兩方面的支持。

動(dòng)轉(zhuǎn)靜導(dǎo)出模型

基于靜態(tài)圖的預(yù)測(cè)部署要求將動(dòng)態(tài)圖的模型轉(zhuǎn)換為靜態(tài)圖形式的模型(網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)權(quán)重)。飛槳靜態(tài)圖形式的模型(由變量和算子構(gòu)成的網(wǎng)絡(luò)結(jié)構(gòu))使用Program來存放,Program的構(gòu)造可以通過飛槳的靜態(tài)圖模式說明,靜態(tài)圖模式下網(wǎng)絡(luò)構(gòu)建執(zhí)行的各API會(huì)將輸入輸出變量和使用的算子添加到Program中。

使用推理庫預(yù)測(cè)

獲得靜態(tài)圖模型之后,我們使用Paddle Inference進(jìn)行預(yù)測(cè)部署。Paddle Inference是飛槳的原生推理庫,作用于服務(wù)器端和云端,提供高性能的推理能力。使用 Paddle Inference 開發(fā) Python 預(yù)測(cè)程序僅需以下步驟:

Gradio進(jìn)行交互項(xiàng)部署

Gradio部署有以下步驟:

  • 將模型拷貝到本地,并按照接口要求封裝好方法;

  • 加載用戶輸入的context和question,并利用模型返回answer;

  • 返回到Gradio部署的框內(nèi), 進(jìn)行頁面展示;

  • 生成公開鏈接。?


總結(jié)和展望

01 模型效果對(duì)比

本項(xiàng)目嘗試了12L768H的bert-base-chinese、bert-wwm-ext-chinese和24L1024H的roberta-wwm-ext-large模型,效果如下,可以看到roberta-wwm-ext-large模型能夠取得較好的效果,隨之付出的代價(jià)就是模型的體積變大,并且訓(xùn)練速度變遲緩。除此之外,如果epoch過大,極易發(fā)生過擬合,可以調(diào)整學(xué)習(xí)率等參數(shù)避免過擬合。

與roberta-wwm-ext-large相比,同規(guī)模的ERNIE 1.0-Large-cw、ERNIE 2.0-Large-zh在CLUE各項(xiàng)任務(wù)上平均精度更高,后續(xù)計(jì)劃嘗試ERNIE系列模型。

  • 模型Benchmark地址

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0

  • 使用方法參考

https://aistudio.baidu.com/aistudio/projectdetail/2017189

02 項(xiàng)目展望

  • 數(shù)據(jù)

尋找更多優(yōu)質(zhì)中醫(yī)語料數(shù)據(jù)集,進(jìn)行簡(jiǎn)單增強(qiáng),采用回譯等數(shù)據(jù)增強(qiáng)方法,從無到有的構(gòu)建文本相似數(shù)據(jù)集。

  • 項(xiàng)目部署

利用AI Studio部署趣味項(xiàng)目或?qū)⒛P痛虬笫褂胒lask框架,配合前端頁面制作體驗(yàn)更好的小應(yīng)用。

  • 模型優(yōu)化

將模型微調(diào)的幾步epoch結(jié)果保存,進(jìn)行模型平均操作。采用模型Bagging策略,將訓(xùn)練質(zhì)量好的模型融合處理,探尋更多優(yōu)質(zhì)模型。針對(duì)任務(wù),使用更多醫(yī)療數(shù)據(jù)集訓(xùn)練好的預(yù)訓(xùn)練模型。

  • 更多

學(xué)習(xí)RocketQA等端到端問答模型,加上檢索條件,在機(jī)器閱讀理解基礎(chǔ)上制作完整的基于檢索的問答系統(tǒng),并可為后續(xù)學(xué)習(xí)基于生成的問答模型打下基礎(chǔ)。(PS:勵(lì)志做個(gè)類似ChatGPT的通用問答模型)

開源項(xiàng)目地址

https://github.com/PaddlePaddle/PaddleNLP

參考文獻(xiàn)

[1]https://aistudio.baidu.com/aistudio/projectdetail/2017189
[2]https://aistudio.baidu.com/aistudio/projectdetail/4113678

更多相關(guān)資訊,請(qǐng)關(guān)注【飛槳PaddlePaddle】公眾號(hào)獲取~

中醫(yī)名詞看不懂?用PaddleNLP做一個(gè)中醫(yī)“百科全書”!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
平阳县| 大丰市| 观塘区| 彰武县| 天峨县| 平安县| 龙江县| 南澳县| 孝感市| 开封县| 宜丰县| 兴文县| 阿克陶县| 定西市| 延吉市| 福安市| 安宁市| 房山区| 镇安县| 彩票| 奎屯市| 灵寿县| 元阳县| 双柏县| 平乡县| 兰州市| 丽江市| 县级市| 昭觉县| 玉林市| 平利县| 当涂县| 民乐县| 弥勒县| 德保县| 大埔区| 礼泉县| 重庆市| 彭山县| 营口市| 环江|