一、背景
最近在做一個(gè)簡(jiǎn)歷語料的訓(xùn)練洼畅,對(duì)簡(jiǎn)歷中的關(guān)鍵信息進(jìn)行標(biāo)注(標(biāo)注出應(yīng)聘者的技能吩案、專業(yè)等內(nèi)容),已經(jīng)有了大量的已經(jīng)標(biāo)注好的語料帝簇,之前是用crf++進(jìn)行訓(xùn)練徘郭,后來遷移到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è)空行隔開察滑。(備注:我這里的ZY表示‘專業(yè)’打厘、XL表示‘學(xué)歷’),詞與標(biāo)注之間用tab鍵隔開。
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ù)并開始訓(xùn)練,這里的model.train(crfsuite_model)里的crfsuite_model你應(yīng)當(dāng)之前定義好夕冲,它是一個(gè)模型文件氮兵,“crfsuite_model = (os.path.join(model_path, 'cv.crfsuite'))? ”,即你訓(xùn)練出來的模型會(huì)存放在文件cv.crfsuite中歹鱼。
五泣栈、測(cè)試
打開模型文件,對(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è)列表里,不要有列表的嵌套的形式嚼锄。