基于論文摘要的文本分類與關(guān)鍵詞抽?。ǘ?/h1>
基于 Datawhale × 科大訊飛 暑期夏令營(yíng)項(xiàng)目制作
環(huán)境:Windows 11 ×64,Anaconda,python=3.10→百度AI Studio
Class 2 Baseline實(shí)踐與Bert結(jié)構(gòu)提高
注:1.在程序運(yùn)行過程中可能會(huì)遇到大量警告,可使用以下代碼進(jìn)行忽略
????import warnings
????warnings.filterwarnings("ignore")
???????2.Bert程序可能需求配置較高,推薦采用云服務(wù)器
一、對(duì)Bert的初步認(rèn)識(shí)
???????一種由Google提出的新的自編碼語(yǔ)言模型,一般用于學(xué)習(xí)輸入文本的表示向量,進(jìn)而利用該向量進(jìn)行微調(diào)用于各項(xiàng)下游任務(wù),包括:文本分類、詞性標(biāo)注等。訓(xùn)練方法多采用:預(yù)測(cè)下一個(gè)句子的關(guān)系。

二、 任務(wù)一:文獻(xiàn)領(lǐng)域分類
???????初版Baseline選擇使用BOW將文本轉(zhuǎn)換為向量表示,選擇邏輯回歸模型來完成訓(xùn)練和評(píng)估。因?yàn)樵谥苯邮褂肨F-IDF(詞頻-逆文檔頻率)或BOW(詞袋模型)方法的效果已經(jīng)足夠好。
如果使用預(yù)訓(xùn)練的BERT模型解決文本分類問題,需要完成以下步驟:
1. 導(dǎo)入前置依賴:包括pandas,torch,transformers等
2. 設(shè)置全局配置:包括文本最大長(zhǎng)度、訓(xùn)練次數(shù)、學(xué)習(xí)率、步長(zhǎng)、文件路徑等
3. 進(jìn)行數(shù)據(jù)讀取與數(shù)據(jù)預(yù)處理
4.?構(gòu)建訓(xùn)練所需的dataloader與dataset
5. 構(gòu)造dataloader
6. 定義預(yù)測(cè)模型
7. 定義出損失函數(shù)和優(yōu)化器
8. 定義驗(yàn)證方法
9. 模型訓(xùn)練
10. 輸出結(jié)果
三、 任務(wù)二:關(guān)鍵詞提取
???????初版Baseline選擇使用nltk的分詞器,然后對(duì)測(cè)試集提取關(guān)鍵詞。選擇使用BERT創(chuàng)建自己的關(guān)鍵詞提取模型,我們需要完成以下步驟:
1. 導(dǎo)入前置依賴:包括pandas,sklearn,BOW詞袋模型和Bert模型等
2. 讀取數(shù)據(jù)集并處理:其中停用詞stop.txt社區(qū)已給出
????? ?Bert預(yù)訓(xùn)練模型方面,使用了distiluse-base-multilingual-cased,因?yàn)樗谙嗨菩匀蝿?wù)中表現(xiàn)出了很好的性能。但由于transformer模型有token長(zhǎng)度限制,所以在輸入大型文檔時(shí),我們可以考慮將文檔分割成幾個(gè)小的段落,并對(duì)其產(chǎn)生的向量進(jìn)行平均池化(mean pooling ,要取平均值)。
3. 提取關(guān)鍵詞:采用TF-IDF算法獲取候選關(guān)鍵詞
4. 輸出結(jié)果
推薦所有程序都分段在jupyter notebook中運(yùn)行,整合成一個(gè)大程序可能需要大面積改錯(cuò)。