一、背景
最近在做一个简历语料的训练,对简历中的关键信息进行标注(标注出应聘者的技能、专业等内容),已经有了大量的已经标注好的语料,之前是用crf++进行训练,后来迁移到crfsuite上,但是我在网上找不到太多的关于crfsuite教程,有些安装配置还特别麻烦,在找了其他人的代码以及看教程的基础上,终于训练出了一版,因此这里提供详细的教程,供大家参考
二、安装
安装非常简单,假设你已经配好 python 环境,并配好相关的安装工具 pip,easy_instal..直接在python中导入pycrfsuite、sklearn-crfsuite包
1)pip install python-crfsuite
2)pip install sklearn-crfsuite
三、数据准备
1)训练集数据:我使用的是IOB格式标注体系(采用了四个符号:B、I、E、O),使用txt文件(excel也可以),文件格式不是特别重要。我的txt文件里面是这个格式,不同的句子之间用一个空行隔开。(备注:我这里的ZY表示‘专业’、XL表示‘学历’),词与标注之间用tab键隔开。
标注好的数据格式2)数据读入后,将数据放于一个列表(list),列表的样式为:
四、训练
1)特征定义
为每一个词(字)定义一些特征,可以理解为我们想要考察字的哪些特征,比如它是否为大小写、数字、以及它前后的字有哪些。
2)获取每个词、词的标签以及特征
3)训练
调用上面2)的函数,将训练集数据分成两个列表:X_train和Y_train,里面分别存放特征和标签(对训练集也作同样的处理)
设置训练模型参数并开始训练,这里的model.train(crfsuite_model)里的crfsuite_model你应当之前定义好,它是一个模型文件,“crfsuite_model = (os.path.join(model_path, 'cv.crfsuite')) ”,即你训练出来的模型会存放在文件cv.crfsuite中。
五、测试
打开模型文件,对测试集数据进行预测
六、评估
最后你可能需要去计算accuracy、precision、recall、f1-score。但这里要注意的是,这里还少了几行代码,前面的y_true和y_pred的形式是列表的列表,这样计算会报错,你需要把y_true里的元素都放一个列表里,不要有列表的嵌套的形式。
网友评论