標(biāo)注訓(xùn)練——crfsuite(附代碼)

一、背景

最近在做一個(gè)簡(jiǎn)歷語(yǔ)料的訓(xùn)練,對(duì)簡(jiǎn)歷中的關(guān)鍵信息進(jìn)行標(biāo)注(標(biāo)注出應(yīng)聘者的技能、專業(yè)等內(nèi)容),已經(jīng)有了大量的已經(jīng)標(biāo)注好的語(yǔ)料,之前是用crf++進(jìn)行訓(xùn)練,后來(lái)遷移到crfsuite上,但是我在網(wǎng)上找不到太多的關(guān)于crfsuite教程,有些安裝配置還特別麻煩,在找了其他人的代碼以及看教程的基礎(chǔ)上,終于訓(xùn)練出了一版,因此這里提供詳細(xì)的教程,供大家參考

二、安裝

安裝非常簡(jiǎn)單,假設(shè)你已經(jīng)配好 python 環(huán)境,并配好相關(guān)的安裝工具 pip,easy_instal..直接在python中導(dǎo)入pycrfsuite、sklearn-crfsuite包

1)pip install python-crfsuite

2)pip install sklearn-crfsuite

三、數(shù)據(jù)準(zhǔn)備

1)訓(xùn)練集數(shù)據(jù):我使用的是IOB格式標(biāo)注體系(采用了四個(gè)符號(hào):B、I、E、O),使用txt文件(excel也可以),文件格式不是特別重要。我的txt文件里面是這個(gè)格式,不同的句子之間用一個(gè)空行隔開(kāi)。(備注:我這里的ZY表示‘專業(yè)’、XL表示‘學(xué)歷’),詞與標(biāo)注之間用tab鍵隔開(kāi)。

標(biāo)注好的數(shù)據(jù)格式

2)數(shù)據(jù)讀入后,將數(shù)據(jù)放于一個(gè)列表(list),列表的樣式為:

四、訓(xùn)練

1)特征定義

為每一個(gè)詞(字)定義一些特征,可以理解為我們想要考察字的哪些特征,比如它是否為大小寫、數(shù)字、以及它前后的字有哪些。

2)獲取每個(gè)詞、詞的標(biāo)簽以及特征

3)訓(xùn)練

調(diào)用上面2)的函數(shù),將訓(xùn)練集數(shù)據(jù)分成兩個(gè)列表:X_train和Y_train,里面分別存放特征和標(biāo)簽(對(duì)訓(xùn)練集也作同樣的處理)

設(shè)置訓(xùn)練模型參數(shù)并開(kāi)始訓(xùn)練,這里的model.train(crfsuite_model)里的crfsuite_model你應(yīng)當(dāng)之前定義好,它是一個(gè)模型文件,“crfsuite_model = (os.path.join(model_path, 'cv.crfsuite'))? ”,即你訓(xùn)練出來(lái)的模型會(huì)存放在文件cv.crfsuite中。

五、測(cè)試

打開(kāi)模型文件,對(duì)測(cè)試集數(shù)據(jù)進(jìn)行預(yù)測(cè)

六、評(píng)估

最后你可能需要去計(jì)算accuracy、precision、recall、f1-score。但這里要注意的是,這里還少了幾行代碼,前面的y_true和y_pred的形式是列表的列表,這樣計(jì)算會(huì)報(bào)錯(cuò),你需要把y_true里的元素都放一個(gè)列表里,不要有列表的嵌套的形式。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容