0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于GLM-6B對(duì)話模型的實(shí)體屬性抽取項(xiàng)目實(shí)現(xiàn)解析

深度學(xué)習(xí)自然語言處理 ? 來源:老劉說NLP ? 2023-03-28 10:11 ? 次閱讀

Zero-shot、One-shot以及Few-shot讓人傻傻分不清,讀了很多文章,也沒搞清楚他們的差別,究竟什么叫zero-shot,其在應(yīng)用過程中的no gradient update是什么含義,zero-shot是否為一個(gè)偽命題,成為了一些有趣的問題。???????

目前,直接使用以chatgpt為代表的大模型進(jìn)行nlp任務(wù)處理成為了一個(gè)潮流,直接拼接prompt進(jìn)行問答,就可拿到相應(yīng)答案,例如最近的文章《ChatGPT+NLP下的Prompt模板工具:PromptSource、ChatIE代表性開源項(xiàng)目介紹》中所介紹的chatie,直接來解決zeroshot的任務(wù)。

但是,我們發(fā)現(xiàn),如果引入incontext-learning這一思想,作為一個(gè)fewshot任務(wù)來提升ChatIE這類模型的性能,可能是一個(gè)很好的思路,在此基礎(chǔ)上個(gè)配上一個(gè)開源項(xiàng)目進(jìn)行解釋能夠增強(qiáng)了解。?????????????????????????????????????????

因此,帶著這個(gè)問題,本文先談?wù)刏ero-shot、One-shot以及Few-shot、從ChatIE:面向REEENER三種任務(wù)的偽zero-shot prompt說起、從偽zeroshot看In-Context Learning類比學(xué)習(xí)、將In-Context Learning引入偽zero-shot完成信息抽取任務(wù)四個(gè)方面進(jìn)行介紹,供大家一起參考。

一、先談?wù)刏ero-shot、One-shot以及Few-shot

1、Zero-shot

Zero-shot就是希望模型能夠?qū)ζ鋸臎]見過的類別進(jìn)行分類,是指對(duì)于要分類的類別對(duì)象,一次也不學(xué)習(xí)。

f83474c2-cca3-11ed-bfe3-dac502259ad0.png

也就是說,只有推理階段,沒有訓(xùn)練階段。這個(gè)常見于chatgpt中qa形式,直接通過問題prompt,基于已訓(xùn)練好的大模型,進(jìn)行直接預(yù)測(cè)。

2、Few-shot與One-shot

如果訓(xùn)練集中,不同類別的樣本只有少量,則成為Few-shot,如果參與訓(xùn)練學(xué)習(xí),也只能使用較少的樣本數(shù)。?????????

f859cc86-cca3-11ed-bfe3-dac502259ad0.png

如果訓(xùn)練集中,不同類別的樣本只有一個(gè),則成為One-shot, 屬于Few-shot的一種特殊情況。

f8ce789c-cca3-11ed-bfe3-dac502259ad0.png

但其中的“no gradient update讓人費(fèi)解”,后面想了想,有2種理解:

1)單次微調(diào),參數(shù)更新,但微調(diào)后模型不保存。???????????

LLM由于參數(shù)量巨大,導(dǎo)致更新起來困難(費(fèi)錢--費(fèi)卡)。因此很少對(duì)訓(xùn)練好的LLM做微調(diào)。但是為了在特殊任務(wù)上有較好的表現(xiàn)(微調(diào)效果肯定要好于不微調(diào)的),但是又不固定微調(diào)后的模型,所以提出了one-shot、few-shot的方式,通過加入偏置,影響模型的最終輸出。

而one-shot、few-shot可以變相的理解成用一個(gè)/多個(gè)example進(jìn)行模型微調(diào),但是微調(diào)后的模型不保存。每次提供inference都要微調(diào)一遍(輸入一個(gè)example或者多個(gè)example來模擬微調(diào)過程),No gradient updates are performed.就是說提供inference的模型參數(shù)保持不變,但這其實(shí)是tuning的范疇。

2)直接不微調(diào),參數(shù)直接不更新??????

如果不更新參數(shù),那么這種學(xué)習(xí)就是瞬間的,不構(gòu)成learning。預(yù)訓(xùn)練模型自身訓(xùn)練完后本身有一套參數(shù),finetune就是在預(yù)訓(xùn)練基礎(chǔ)上繼續(xù)訓(xùn)練,肯定會(huì)有梯度更新,因?yàn)閒inetune后參數(shù)會(huì)變,參數(shù)變了梯度必然會(huì)更新。直接推理出答案,后臺(tái)梯度也不更新。

不過,需要注意的是,如果以這個(gè)模型到底有沒有見過標(biāo)注樣本,來劃分zero-shot與其他的差別,就是主要見過,無論是在推理階段(作為prompt)用【不更新梯度】,還是加入finetune階段參與訓(xùn)練【更新參數(shù)】,那就肯定不是zero-shot,否則就是數(shù)據(jù)泄漏。

這也就是說,如果在prompt中是否加入一個(gè)或者多個(gè)正確的例子,例如分類任務(wù)中,加入一些正確的任務(wù)描述例子,都不能算作是zero-shot,但是問題是你怎么能保證模型訓(xùn)練沒有用過這些數(shù)據(jù),他們當(dāng)時(shí)訓(xùn)練就可能搜集到了,模型說不定都見過,也就是說至少不存在嚴(yán)格意義的zero shot。

二、從ChatIE:面向REEENER三種任務(wù)的偽zero-shot prompt說起

最近有篇文章《Zero-Shot Information Extraction via Chatting with ChatGPT》很有趣,該工作將零樣本IE任務(wù)轉(zhuǎn)變?yōu)橐粋€(gè)兩階段框架的多輪問答問題(Chat IE),并在三個(gè)IE任務(wù)中廣泛評(píng)估了該框架:實(shí)體關(guān)系三元組抽取、命名實(shí)體識(shí)別和事件抽取。在兩個(gè)語言的6個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,Chat IE取得了非常好的效果,甚至在幾個(gè)數(shù)據(jù)集上(例如NYT11-HRL)上超過了全監(jiān)督模型的表現(xiàn)。

f8f5c0e6-cca3-11ed-bfe3-dac502259ad0.png

f934601c-cca3-11ed-bfe3-dac502259ad0.png

其實(shí)現(xiàn)基本原理為,通過制定任務(wù)實(shí)體關(guān)系三元組抽取、命名實(shí)體識(shí)別和事件抽取,并為每個(gè)任務(wù)設(shè)計(jì)了2個(gè)步驟的prompt-pattern,第一步用于識(shí)別類型,第二步用于識(shí)別指定類型的值。將抽取的任務(wù)定義(抽取要素)進(jìn)行prompt填充,然后調(diào)用chatgpt接口,在取得結(jié)果后進(jìn)行規(guī)則解析,結(jié)構(gòu)化相應(yīng)答案。

例如,關(guān)系抽取的具體執(zhí)行步驟包括:針對(duì)每類prompt,分別調(diào)用prompt-pattern,得到相應(yīng)結(jié)果,以事件抽取prompt為例,

1)任務(wù)要素定義:

df_eet={
'chinese':{'災(zāi)害/意外-墜機(jī)':['時(shí)間','地點(diǎn)','死亡人數(shù)','受傷人數(shù)'],'司法行為-舉報(bào)':['時(shí)間','舉報(bào)發(fā)起方','舉報(bào)對(duì)象'],'財(cái)經(jīng)/交易-漲價(jià)':['時(shí)間','漲價(jià)幅度','漲價(jià)物','漲價(jià)方'],'組織關(guān)系-解雇':['時(shí)間','解雇方','被解雇人員'],'組織關(guān)系-停職':['時(shí)間','所屬組織','停職人員'],'財(cái)經(jīng)/交易-加息':['時(shí)間','加息幅度','加息機(jī)構(gòu)'],'交往-探班':['時(shí)間','探班主體','探班對(duì)象'],'人生-懷孕':['時(shí)間','懷孕者'],'組織關(guān)系-辭/離職':['時(shí)間','離職者','原所屬組織'],'組織關(guān)系-裁員':['時(shí)間','裁員方','裁員人數(shù)'],'災(zāi)害/意外-車禍':['時(shí)間','地點(diǎn)','死亡人數(shù)','受傷人數(shù)'],
'人生-離婚':['時(shí)間','離婚雙方'],'司法行為-起訴':['時(shí)間','被告','原告'],'競(jìng)賽行為-禁賽':['時(shí)間','禁賽時(shí)長(zhǎng)','被禁賽人員','禁賽機(jī)構(gòu)'],'人生-婚禮':['時(shí)間','地點(diǎn)','參禮人員','結(jié)婚雙方'],'財(cái)經(jīng)/交易-漲停':['時(shí)間','漲停股票'],'財(cái)經(jīng)/交易-上市':['時(shí)間','地點(diǎn)','上市企業(yè)','融資金額'],'組織關(guān)系-解散':['時(shí)間','解散方'],'財(cái)經(jīng)/交易-跌停':['時(shí)間','跌停股票'],'財(cái)經(jīng)/交易-降價(jià)':['時(shí)間','降價(jià)方','降價(jià)物','降價(jià)幅度'],'組織行為-罷工':['時(shí)間','所屬組織','罷工人數(shù)','罷工人員'],'司法行為-開庭':['時(shí)間','開庭法院','開庭案件'],
'競(jìng)賽行為-退役':['時(shí)間','退役者'],'人生-求婚':['時(shí)間','求婚者','求婚對(duì)象'],'人生-慶生':['時(shí)間','生日方','生日方年齡','慶祝方'],'交往-會(huì)見':['時(shí)間','地點(diǎn)','會(huì)見主體','會(huì)見對(duì)象'],'競(jìng)賽行為-退賽':['時(shí)間','退賽賽事','退賽方'],'交往-道歉':['時(shí)間','道歉對(duì)象','道歉者'],'司法行為-入獄':['時(shí)間','入獄者','刑期'],'組織關(guān)系-加盟':['時(shí)間','加盟者','所加盟組織'],'人生-分手':['時(shí)間','分手雙方'],'災(zāi)害/意外-襲擊':['時(shí)間','地點(diǎn)','襲擊對(duì)象','死亡人數(shù)','襲擊者','受傷人數(shù)'],'災(zāi)害/意外-坍/垮塌':['時(shí)間','坍塌主體','死亡人數(shù)','受傷人數(shù)'],
'組織關(guān)系-解約':['時(shí)間','被解約方','解約方'],'產(chǎn)品行為-下架':['時(shí)間','下架產(chǎn)品','被下架方','下架方'],'災(zāi)害/意外-起火':['時(shí)間','地點(diǎn)','死亡人數(shù)','受傷人數(shù)'],'災(zāi)害/意外-爆炸':['時(shí)間','地點(diǎn)','死亡人數(shù)','受傷人數(shù)'],'產(chǎn)品行為-上映':['時(shí)間','上映方','上映影視'],'人生-訂婚':['時(shí)間','訂婚主體'],'組織關(guān)系-退出':['時(shí)間','退出方','原所屬組織'],'交往-點(diǎn)贊':['時(shí)間','點(diǎn)贊方','點(diǎn)贊對(duì)象'],'產(chǎn)品行為-發(fā)布':['時(shí)間','發(fā)布產(chǎn)品','發(fā)布方'],'人生-結(jié)婚':['時(shí)間','結(jié)婚雙方'],'組織行為-閉幕':['時(shí)間','地點(diǎn)','活動(dòng)名稱'],
'人生-死亡':['時(shí)間','地點(diǎn)','死者年齡','死者'],'競(jìng)賽行為-奪冠':['時(shí)間','冠軍','奪冠賽事'],'人生-失聯(lián)':['時(shí)間','地點(diǎn)','失聯(lián)者'],'財(cái)經(jīng)/交易-出售/收購(gòu)':['時(shí)間','出售方','交易物','出售價(jià)格','收購(gòu)方'],'競(jìng)賽行為-晉級(jí)':['時(shí)間','晉級(jí)方','晉級(jí)賽事'],'競(jìng)賽行為-勝負(fù)':['時(shí)間','敗者','勝者','賽事名稱'],'財(cái)經(jīng)/交易-降息':['時(shí)間','降息幅度','降息機(jī)構(gòu)'],'組織行為-開幕':['時(shí)間','地點(diǎn)','活動(dòng)名稱'],'司法行為-拘捕':['時(shí)間','拘捕者','被拘捕者'],'交往-感謝':['時(shí)間','致謝人','被感謝人'],'司法行為-約談':['時(shí)間','約談對(duì)象','約談發(fā)起方'],
'災(zāi)害/意外-地震':['時(shí)間','死亡人數(shù)','震級(jí)','震源深度','震中','受傷人數(shù)'],'人生-產(chǎn)子/女':['時(shí)間','產(chǎn)子者','出生者'],'財(cái)經(jīng)/交易-融資':['時(shí)間','跟投方','領(lǐng)投方','融資輪次','融資金額','融資方'],'司法行為-罰款':['時(shí)間','罰款對(duì)象','執(zhí)法機(jī)構(gòu)','罰款金額'],'人生-出軌':['時(shí)間','出軌方','出軌對(duì)象'],'災(zāi)害/意外-洪災(zāi)':['時(shí)間','地點(diǎn)','死亡人數(shù)','受傷人數(shù)'],'組織行為-游行':['時(shí)間','地點(diǎn)','游行組織','游行人數(shù)'],'司法行為-立案':['時(shí)間','立案機(jī)構(gòu)','立案對(duì)象'],'產(chǎn)品行為-獲獎(jiǎng)':['時(shí)間','獲獎(jiǎng)人','獎(jiǎng)項(xiàng)','頒獎(jiǎng)機(jī)構(gòu)'],'產(chǎn)品行為-召回':['時(shí)間','召回內(nèi)容','召回方']},
'english':{'Justice:Appeal':['Defendant','Adjudicator','Crime','Time','Place'],'Justice:Extradite':['Agent','Person','Destination','Origin','Crime','Time'],'Justice:Acquit':['Defendant','Adjudicator','Crime','Time','Place'],'Life:Be-Born':['Person','Time','Place'],'Life:Divorce':['Person','Time','Place'],'Personnel:Nominate':['Person','Agent','Position','Time','Place'],'Life:Marry':['Person','Time','Place'],'Personnel:End-Position':['Person','Entity','Position','Time','Place'],
'Justice:Pardon':['Defendant','Prosecutor','Adjudicator','Crime','Time','Place'],'Business:Merge-Org':['Org','Time','Place'],'Conflict:Attack':['Attacker','Target','Instrument','Time','Place'],'Justice:Charge-Indict':['Defendant','Prosecutor','Adjudicator','Crime','Time','Place'],'Personnel:Start-Position':['Person','Entity','Position','Time','Place'],'Business:Start-Org':['Agent','Org','Time','Place'],'Business:End-Org':['Org','Time','Place'],
'Life:Injure':['Agent','Victim','Instrument','Time','Place'],'Justice:Fine':['Entity','Adjudicator','Money','Crime','Time','Place'],'Justice:Sentence':['Defendant','Adjudicator','Crime','Sentence','Time','Place'],'Transaction:Transfer-Money':['Giver','Recipient','Beneficiary','Money','Time','Place'],'Justice:Execute':['Person','Agent','Crime','Time','Place'],'Justice:Sue':['Plaintiff','Defendant','Adjudicator','Crime','Time','Place'],
'Justice:Arrest-Jail':['Person','Agent','Crime','Time','Place'],'Justice:Trial-Hearing':['Defendant','Prosecutor','Adjudicator','Crime','Time','Place'],'Movement:Transport':['Agent','Artifact','Vehicle','Price','Origin'],'Contact:Meet':['Entity','Time','Place'],'Personnel:Elect':['Person','Entity','Position','Time','Place'],'Business:Declare-Bankruptcy':['Org','Time','Place'],'Transaction:Transfer-Ownership':['Buyer','Seller','Beneficiary','Artifact','Price','Time','Place'],
'Justice:Release-Parole':['Person','Entity','Crime','Time','Place'],'Conflict:Demonstrate':['Entity','Time','Place'],'Contact:Phone-Write':['Entity','Time'],'Justice:Convict':['Defendant','Adjudicator','Crime','Time','Place'],'Life:Die':['Agent','Victim','Instrument','Time','Place']},
}

2)構(gòu)造prompt的pattern:

ee_s1_p={
'chinese':'''給定的句子為:"{}"

給定事件類型列表:{}

在這個(gè)句子中,可能包含了哪些事件類型?
請(qǐng)給出事件類型列表中的事件類型。
如果不存在則回答:無
按照元組形式回復(fù),如(事件類型1, 事件類型2, ……):''',
'english':'''Thegivensentenceis"{}"

Givenalistofeventtypes:{}

Whateventtypesinthegivenlistmightbeincludedinthisgivensentence?
Ifnotpresent,answer:none.
Respondasatuple,e.g.(eventtype1,eventtype2,......):'''
}


ee_s2_p={
'chinese':'''事件類型"{}"對(duì)應(yīng)的論元角色列表為:{}。
在給定的句子中,根據(jù)論元角色提取出事件論元。
如果論元角色沒有相應(yīng)的論元內(nèi)容,則論元內(nèi)容回答:無
按照表格形式回復(fù),表格有兩列且表頭為(論元角色,論元內(nèi)容):''',
'english':'''Thelistofargumentrolescorrespondingtoeventtype"{}"is:{}.
Inthegivensentence,extracteventargumentsaccordingtotheirrole.
Iftheargumentroledoesnothaveacorrespondingargumentcontent,thentheargumentcontentanswer:None
Respondintheformofatablewithtwocolumnsandaheaderof(argumentrole,argumentcontent):'''
}

三、從偽zeroshot看In-Context Learning類比學(xué)習(xí)

In Context Learning(ICL)的關(guān)鍵思想是從類比中學(xué)習(xí)?!禔 Survey on In-context Learning》一文(https://arxiv.org/pdf/2301.00234.pdf)對(duì)In Context Learning(ICL)進(jìn)行了綜述。

該工作認(rèn)為,ICL的強(qiáng)大性能依賴于兩個(gè)階段:(1)培養(yǎng)LLMsICL能力的訓(xùn)練階段,以及LLMs根據(jù)特定任務(wù)演示進(jìn)行預(yù)測(cè)的推理階段。就訓(xùn)練階段而言,LLMs直接接受語言建模目標(biāo)的訓(xùn)練,如從左到右的生成,并將整個(gè)研究分成了訓(xùn)練和推理兩個(gè)部分,如下圖所示。

f9537786-cca3-11ed-bfe3-dac502259ad0.png

如下圖所示:給出了一個(gè)描述語言模型如何使用ICL進(jìn)行決策的例子。首先,ICL 需要一些示例來形成一個(gè)演示上下文。這些示例通常是用自然語言模板編寫的。然后 ICL 將查詢的問題(即你需要預(yù)測(cè)標(biāo)簽的 input)和一個(gè)上下文演示(一些相關(guān)的 cases)連接在一起,形成帶有提示的輸入,并將其輸入到語言模型中進(jìn)行預(yù)測(cè)。

f96b74a8-cca3-11ed-bfe3-dac502259ad0.png

值得注意的是,首與需要使用后向梯度來更新模型參數(shù)的訓(xùn)練階段的監(jiān)督學(xué)習(xí)不同,ICL不進(jìn)行參數(shù)更新,而是直接對(duì)語言模型進(jìn)行預(yù)測(cè)。

四、將In-Context Learning引入偽zero-shot完成信息抽取任務(wù)

開源項(xiàng)目中,借鑒In-Context Learning思想,給出了一個(gè)基于GLM-6B的zero-shot信息抽取方案,最終效果如下:

f983424a-cca3-11ed-bfe3-dac502259ad0.png

其本質(zhì)思想在于,針對(duì)zero-shot問題,使用同一個(gè)大模型,對(duì)不同任務(wù)設(shè)計(jì)其獨(dú)有的 prompt,以解決不同的任務(wù)問題針對(duì)信息抽取任務(wù),則采用2輪問答的方式進(jìn)行抽取,首先進(jìn)行實(shí)體類型分類,給定句子以及實(shí)體類別,要求識(shí)別出其中的實(shí)體類型,其次根據(jù)識(shí)別出的實(shí)體類型,再進(jìn)行實(shí)體屬性要素抽取。在構(gòu)造prompt的過程中,通過列舉一些正確的例子,作為In-Context Learning學(xué)習(xí)的上下文。(按照第一節(jié)的理解,這其實(shí)不能算作zero-shot,已經(jīng)是fewshot)

因此,如何設(shè)計(jì)指定任務(wù)的promt,以及如何合理的引入In-Context是整個(gè)工作的一個(gè)核心。

1、調(diào)用chatglm6b進(jìn)行推理抽取

加載chatglm-6b模型,對(duì)模型進(jìn)行預(yù)測(cè),下面是使用huggingface調(diào)用chatglm6b的代碼:

fromtransformersimportAutoTokenizer,AutoModel
tokenizer=AutoTokenizer.from_pretrained("THUDM/chatglm-6b",trust_remote_code=True)
model=AutoModel.from_pretrained("THUDM/chatglm-6b",trust_remote_code=True).half().cuda()
response,history=model.chat(tokenizer,"你好",history=[])
print(response)
response,history=model.chat(tokenizer,"晚上睡不著應(yīng)該怎么辦",history=history)
print(response)

其中,整個(gè)history會(huì)作為一個(gè)部分,拼接進(jìn)行prompt當(dāng)中,從中可以看到,多輪對(duì)話最多做到8輪。

defbuild_prompt(history):
prompt="歡迎使用ChatGLM-6B模型,輸入內(nèi)容即可進(jìn)行對(duì)話,clear清空對(duì)話歷史,stop終止程序"
forquery,responseinhistory:
prompt+=f"

用戶:{query}"
prompt+=f"

ChatGLM-6B:{response}"
returnprompt

defmain():
history=[]
print("歡迎使用ChatGLM-6B模型,輸入內(nèi)容即可進(jìn)行對(duì)話,clear清空對(duì)話歷史,stop終止程序")
whileTrue:
query=input("
用戶:")
ifquery=="stop":
break
ifquery=="clear":
history=[]
os.system(clear_command)
print("歡迎使用ChatGLM-6B模型,輸入內(nèi)容即可進(jìn)行對(duì)話,clear清空對(duì)話歷史,stop終止程序")
continue
count=0
forresponse,historyinmodel.stream_chat(tokenizer,query,history=history):
count+=1
ifcount%8==0:
os.system(clear_command)
print(build_prompt(history),flush=True)
os.system(clear_command)
print(build_prompt(history),flush=True)

最后,我們對(duì)模型進(jìn)行推理,將上述構(gòu)造的兩個(gè)任務(wù)作為history

definference(sentence,custom_settings):
withconsole.status("[boldbright_green]ModelInference..."):
sentence_with_cls_prompt=CLS_PATTERN.format(sentence)
cls_res,_=model.chat(tokenizer,sentence_with_cls_prompt,history=custom_settings['cls_pre_history'])
ifcls_resnotinschema:
print(f'Thetypemodelinferenced{cls_res}whichisnotinschemadict,exited.')
exit()
properties_str=','.join(schema[cls_res])
schema_str_list=f'“{cls_res}”({properties_str})'
sentence_with_ie_prompt=IE_PATTERN.format(sentence,schema_str_list)
ie_res,_=model.chat(tokenizer,sentence_with_ie_prompt,history=custom_settings['ie_pre_history'])
ie_res=clean_response(ie_res)
print(f'>>>[boldbright_red]sentence:{sentence}')
print(f'>>>[boldbright_green]inferenceanswer:')
print(ie_res)

deftest():
console=Console()
device='cuda:0'
tokenizer=AutoTokenizer.from_pretrained("THUDM/chatglm-6b",trust_remote_code=True)
model=AutoModel.from_pretrained("THUDM/chatglm-6b",trust_remote_code=True).half()
model.to(device)
sentence='張譯(原名張毅),1978年2月17日出生于黑龍江省哈爾濱市,中國(guó)內(nèi)地男演員。1997年至2006年服役于北京軍區(qū)政治部戰(zhàn)友話劇團(tuán)。2006年,主演軍事勵(lì)志題材電視劇《士兵突擊》。',
custom_settings=init_prompts()
inference(sentence,custom_settings
)

2、第一步:實(shí)體類型識(shí)別

先做實(shí)體類型識(shí)別(這個(gè)有點(diǎn)像事件抽取中的事件檢測(cè)),其中需要構(gòu)造

1)sentence_with_cls_prompt

sentence_with_cls_prompt = CLS_PATTERN.format(sentence),先對(duì)句子進(jìn)行實(shí)體類型識(shí)別,構(gòu)造prompt:

CLS_PATTERN=f"“{{}}”是{class_list}里的什么類別?"

例如,針對(duì)句子:“張譯(原名張毅),1978年2月17日出生于黑龍江省哈爾濱市,中國(guó)內(nèi)地男演員。1997年至2006年服役于北京軍區(qū)政治部戰(zhàn)友話劇團(tuán)。2006年,主演軍事勵(lì)志題材電視劇《士兵突擊》?!?/p>

構(gòu)造prompt后變?yōu)椋?/p>

“張譯(原名張毅),1978年2月17日出生于黑龍江省哈爾濱市,中國(guó)內(nèi)地男演員。1997年至2006年服役于北京軍區(qū)政治部戰(zhàn)友話劇團(tuán)。2006年,主演軍事勵(lì)志題材電視劇《士兵突擊》。”是
['人物','書籍','電視劇']里的什么類別?

2)cls_pre_history實(shí)體類型識(shí)別的例子

利用cls_pre_history作為incontext-learning學(xué)習(xí)的上下文,進(jìn)行拼接,例如,cls_pre_history形式為:

cls_pre_history:
[
("現(xiàn)在你是一個(gè)文本分類器,你需要按照要求將我給你的句子分類到:['人物', '書籍', '電視劇']類別中。",'好的。'),
(
"“岳云鵬,本名岳龍剛,1985年4月15日出生于河南省濮陽市南樂縣,中國(guó)內(nèi)地相聲、影視男演員。2005年,首次登臺(tái)演出。2012年,主演盧衛(wèi)國(guó)執(zhí)導(dǎo)的喜劇電影《就是鬧著玩的
》。2013年在北京舉辦相聲專場(chǎng)?!笔荹'人物', '書籍', '電視劇']里的什么類別?",
'人物'
),
(
"“《三體》是劉慈欣創(chuàng)作的長(zhǎng)篇科幻小說系列,由《三體》《三體2:黑暗森林》《三體3:死神永生》組成,第一部于2006年5月起在《科幻世界》雜志上連載,第二部于2008年5
月首次出版,第三部則于2010年11月出版?!笔荹'人物', '書籍', '電視劇']里的什么類別?",
'書籍'
),
(
"“《狂飆》是由中央電視臺(tái)、愛奇藝出品,留白影視、中國(guó)長(zhǎng)安出版?zhèn)髅铰?lián)合出品,中央政法委宣傳教育局、中央政法委政法綜治信息中心指導(dǎo)拍攝,徐紀(jì)周執(zhí)導(dǎo),張譯、
張頌文、李一桐、張志堅(jiān)、吳剛領(lǐng)銜主演,倪大紅、韓童生、李建義、石兆琪特邀主演,李健、高葉、王驍?shù)戎餮莸姆春谛虃蓜??!笔荹'人物', '書籍', '電視劇']里的什么類別?",
'電視劇'
)
]

3、第2步:實(shí)體屬性抽取

根據(jù)識(shí)別的實(shí)體類型結(jié)果做實(shí)體屬性抽?。ㄟ@個(gè)有點(diǎn)像事件抽取中的事件要素抽?。?/p>

根據(jù)上一步得到的實(shí)體類型,進(jìn)一步生成問句sentence_with_ie_prompt和in-context learning上下文,其中:

1)sentence_with_ie_prompt

sentence_with_ie_prompt指的是對(duì)任務(wù)的描述,其中需要用到不同實(shí)體對(duì)應(yīng)的屬性schema以及問題的promt模版。

schema如下:

schema={
'人物':['姓名','性別','出生日期','出生地點(diǎn)','職業(yè)','獲得獎(jiǎng)項(xiàng)'],
'書籍':['書名','作者','類型','發(fā)行時(shí)間','定價(jià)'],
'電視劇':['電視劇名稱','導(dǎo)演','演員','題材','出品方']
}

屬性抽取的prompt如下:

IE_PATTERN="{}

提取上述句子中{}類型的實(shí)體,并按照J(rèn)SON格式輸出,上述句子中不存在的信息用['原文中未提及']來表示,多個(gè)值之間用','分隔。"

變成:

張譯(原名張毅),1978年2月17日出生于黑龍江省哈爾濱市,中國(guó)內(nèi)地男演員。1997年至2006年服役于北京軍區(qū)政治部戰(zhàn)友話劇團(tuán)。2006年,主演軍事勵(lì)志題材電視劇《士兵突擊》。

提取上述句子中“人物”(姓名,性別,出生日期,出生地點(diǎn),職業(yè),獲得獎(jiǎng)項(xiàng))類型的實(shí)體,并按照J(rèn)SON格式輸出,上述句子中不存在的信息用['原文中未提及']來表示,多個(gè)值之間用','分隔。

2)ie_pre_history屬性抽取的例子

ie_pre_history屬性抽取的例子給定了一些正確抽取的實(shí)際例子,如下所示:

[
(
"現(xiàn)在你需要幫助我完成信息抽取任務(wù),當(dāng)我給你一個(gè)句子時(shí),你需要幫我抽取出句子中三元組,并按照J(rèn)SON的格式輸出,上述句子中沒有的信息用['原文中未提及']來表示,多
個(gè)值之間用','分隔。",
'好的,請(qǐng)輸入您的句子。'
),
(
"岳云鵬,本名岳龍剛,1985年4月15日出生于河南省濮陽市南樂縣,中國(guó)內(nèi)地相聲、影視男演員。

提取上述句子中“人物”(姓名, 性別, 出生日期, 出生地點(diǎn), 職業(yè), 
獲得獎(jiǎng)項(xiàng))類型的實(shí)體,并按照J(rèn)SON格式輸出,上述句子中不存在的信息用['原文中未提及']來表示,多個(gè)值之間用','分隔。",
'{"姓名":["岳云鵬"],"性別":["男"],"出生日期":["1985年4月15日"],"出生地點(diǎn)":["河南省濮陽市南樂縣"],"職業(yè)":["相聲演員","影視演員"],"獲得獎(jiǎng)項(xiàng)":
["原文中未提及"]}'
),
(
"《三體》是劉慈欣創(chuàng)作的長(zhǎng)篇科幻小說系列,由《三體》《三體2:黑暗森林》《三體3:死神永生》組成,第一部于2006年5月起在《科幻世界》雜志上連載,第二部于2008年5月首
,第三部則于2010年11月出版。

提取上述句子中“書籍”(書名, 作者, 類型, 發(fā)行時(shí)間, 
定價(jià))類型的實(shí)體,并按照J(rèn)SON格式輸出,上述句子中不存在的信息用['原文中未提及']來表示,多個(gè)值之間用','分隔。",
'{"書名":["《三體》"],"作者":["劉慈欣"],"類型":["長(zhǎng)篇科幻小說"],"發(fā)行時(shí)間":["2006年5月","2008年5月","2010年11月"],"定價(jià)":["原文中未提及"]}'
)
]

3、第三步:對(duì)模型輸出進(jìn)行后處理

defclean_response(response:str):
if'```json'inresponse:
res=re.findall(r'```json(.*?)```',response)
iflen(res)andres[0]:
response=res[0]
response.replace('、',',')
try:
returnjson.loads(response)
except:
returnresponse

總結(jié)

本文先談?wù)刏ero-shot、One-shot以及Few-shot、從ChatIE:面向REEENER三種任務(wù)的偽zero-shot prompt說起、從偽zeroshot看In-Context Learning類比學(xué)習(xí)、將In-Context Learning引入偽zero-shot完成信息抽取任務(wù)四個(gè)方面進(jìn)行介紹,供大家一起參考。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • icl
    icl
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    17203
  • CLS
    CLS
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9680
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    481

    瀏覽量

    21932
  • ChatGPT
    +關(guān)注

    關(guān)注

    28

    文章

    1517

    瀏覽量

    6909

原文標(biāo)題:基于GLM-6B對(duì)話模型的實(shí)體屬性抽取項(xiàng)目實(shí)現(xiàn)解析:對(duì)Zero-shot與In-Context Learning的若干思考

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    智能硬件接入主流大模型做語音交互(附文心一言、豆包、kimi、智譜glm、通義千問示例)

    接通文心一言、豆包、kimi、智譜glm、通義千問等國(guó)內(nèi)主流大模型,詳細(xì)操作步驟可以參考附件文檔。實(shí)操時(shí)也可以對(duì)照視頻進(jìn)行: https://b23.tv/vn6By9F
    發(fā)表于 08-21 19:13

    【附實(shí)操視頻】聆思CSK6模型開發(fā)板接入國(guó)內(nèi)主流大模型(星火大模型、文心一言、豆包、kimi、智譜glm、通義千問)

    接入文心一言、通義千問、豆包、智譜glm、kimi等國(guó)內(nèi)的大模型,但由于各家接口和數(shù)據(jù)格式不一樣,調(diào)試驗(yàn)證會(huì)浪費(fèi)很多時(shí)間。因此本篇以聆思CSK6模型開發(fā)板接入為例,分享具體的接入步驟
    發(fā)表于 08-22 10:12

    NLPIR在文本信息提取方面的優(yōu)勢(shì)介紹

    構(gòu)建知識(shí)圖譜需要滿足三項(xiàng)要素要求,分別是實(shí)體,關(guān)系和屬性。文本信息提取,則是在文本中提出三元信息,包括實(shí)體和關(guān)系的信息,實(shí)體屬性的信息,
    發(fā)表于 09-12 15:33

    中文專利屬性值對(duì)抽取技術(shù)及應(yīng)用

    習(xí)知識(shí),提出一種基于條件隨機(jī)場(chǎng)的抽取方法。該方法將屬性屬性值視為命名實(shí)體,利用語料訓(xùn)練得到條件隨機(jī)場(chǎng)模型,從而
    發(fā)表于 12-01 16:58 ?2次下載

    基于遠(yuǎn)距離監(jiān)督和模式匹配的屬性抽取方法

    和人工標(biāo)注知識(shí),挖掘具有高覆蓋度的模式庫,用于發(fā)現(xiàn)職銜履歷屬性抽取候選集;其次利用職銜機(jī)構(gòu)等屬性間的文字接續(xù)關(guān)系,以及特定人物與候選屬性的依存關(guān)系,設(shè)計(jì)候選集的過濾規(guī)則對(duì)候選項(xiàng)進(jìn)行篩
    發(fā)表于 12-23 11:08 ?0次下載
    基于遠(yuǎn)距離監(jiān)督和模式匹配的<b class='flag-5'>屬性</b><b class='flag-5'>抽取</b>方法

    基于WebHarvest的健康領(lǐng)域Web信息抽取方法

    針對(duì)Web信息抽取(WIE)技術(shù)在健康領(lǐng)域應(yīng)用的問題,提出了一種基于WebHarvest的健康領(lǐng)域Web信息抽取方法。通過對(duì)不同健康網(wǎng)站的結(jié)構(gòu)分析設(shè)計(jì)健康實(shí)體抽取規(guī)則,
    發(fā)表于 12-26 13:44 ?0次下載

    節(jié)點(diǎn)屬性的海量Web信息抽取方法

    樹節(jié)點(diǎn)的密度和視覺屬性,根據(jù)屬性值對(duì)Web頁面內(nèi)容進(jìn)行預(yù)處理;引入MapReduce計(jì)算框架,實(shí)現(xiàn)海量Web信息的并行化抽取。仿真實(shí)驗(yàn)結(jié)果表明,提出的海量Web信息
    發(fā)表于 02-06 14:36 ?0次下載

    模型NLP事件抽取方法總結(jié)

    : Event Extraction as Definition Comprehension, EMNLP 2020[1] 動(dòng)機(jī) 提出一種新穎的事件抽取方法,為模型提供帶有漂白語句(實(shí)體用通用的方式指代)的
    的頭像 發(fā)表于 12-31 10:19 ?9984次閱讀
    <b class='flag-5'>模型</b>NLP事件<b class='flag-5'>抽取</b>方法總結(jié)

    借助局部實(shí)體特征的事件觸發(fā)詞抽取方法

    于神經(jīng)網(wǎng)絡(luò)的觸發(fā)詞抽取模型利用實(shí)體信息判別觸發(fā)詞,但大量無關(guān)實(shí)體會(huì)影響觸發(fā)詞抽取效果。提出一種借助局部實(shí)
    發(fā)表于 05-26 15:24 ?2次下載

    基于機(jī)器學(xué)習(xí)的中文隱式實(shí)體關(guān)系抽取方法

    基于機(jī)器學(xué)習(xí)的中文隱式實(shí)體關(guān)系抽取方法
    發(fā)表于 06-02 14:42 ?4次下載

    實(shí)體關(guān)系抽取模型CasRel

    許多實(shí)驗(yàn)證明聯(lián)合學(xué)習(xí)方法由于考慮了兩個(gè)子任務(wù)之間的信息交互,大大提升了實(shí)體關(guān)系抽取的效果,所以目前針對(duì)實(shí)體關(guān)系抽取任務(wù)的研究大多采用聯(lián)合學(xué)習(xí)方法。
    的頭像 發(fā)表于 07-21 14:11 ?3630次閱讀

    如何用一種級(jí)聯(lián)的并解決嵌套的實(shí)體的三元組抽取模型

    關(guān)系抽取是自然語言處理中一個(gè)比較基礎(chǔ)的任務(wù),除了關(guān)系抽取之外還有類似的任務(wù)如:屬性抽取等。
    的頭像 發(fā)表于 02-08 09:28 ?1026次閱讀
    如何用一種級(jí)聯(lián)的并解決嵌套的<b class='flag-5'>實(shí)體</b>的三元組<b class='flag-5'>抽取</b><b class='flag-5'>模型</b>?

    ChatGLM-6B的局限和不足

    ;ChatGLM-6B 參考了 ChatGPT 的設(shè)計(jì)思路,在千 億基座模型 GLM-130B 中注入了代碼預(yù)訓(xùn)練,通過有監(jiān)督微調(diào)等技術(shù)實(shí)現(xiàn)與人類意圖對(duì)齊(即讓機(jī) 器的回答符合人類的期
    的頭像 發(fā)表于 06-25 11:50 ?5271次閱讀
    ChatGLM-<b class='flag-5'>6B</b>的局限和不足

    智譜AI推出新一代基座大模型GLM-4

    智譜AI近日宣布推出新一代基座大模型GLM-4。這一模型在整體性能上相較上一代實(shí)現(xiàn)了大幅提升,其表現(xiàn)已逼近GPT-4。
    的頭像 發(fā)表于 01-17 15:29 ?871次閱讀

    智譜AI發(fā)布全新多模態(tài)開源模型GLM-4-9B

    近日,智譜AI在人工智能領(lǐng)域取得重大突破,成功推出全新開源模型GLM-4-9B。這款模型以其卓越的多模態(tài)能力,再次刷新了業(yè)界對(duì)于大型語言模型的認(rèn)識(shí)。
    的頭像 發(fā)表于 06-07 09:17 ?547次閱讀