一、背景
最近在做一個(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)。

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è)列表里,不要有列表的嵌套的形式。
