CRF技能词识别过程

最近在用CRF做未登录技能词识别,虽然艰难,但是感觉很爽,效率非常高。
(1)数据准备:
选取30000行精语料作为训练数据。每一个br作为一条数据。使用已有的技能词典对数据进行无标注分词。
(2)训练数据标注:
对分词后的语料进行标注。如果某分词结果在技能词典中,则该词作为技能词进行标注;如果某分词结果不在词典中,则该词作为与技能无关词进行标注。标注规则如下:
标注采用3列,4-tag方式标注:B:技能词开头字;M:技能词中间字;E:技能词结尾字;A:与技能词无关字。
(3)修改模板:
技能词查找仍属分词系列,故未修改模板。
(4)数据训练:
使用CRF++工具进行模板+训练文本的训练。
(5)测试数据准备:
采用与训练文本同样的方式进行标注。使用模板+测试文本进行测试。
(6)测试数据生成结果:
测试生成标注列与通过词典进行标注的结果进行比较,第一次测试5000条数据共有141471个特征,标注错误数为3750个,错误率为0.0265。
(7)技能词识别成果:
将测试数据中生成的B、M、E进行合成,组成技能词。新技能词采用人工过滤计算比例。

训练:
crf_learn -f 3 -c 4.0 template 4train_text.data yuanbin_crf_model
测试:
crf_test -m yuanbin_crf_model 4test_text.data >>yuanbin_crf_final

实验结果:

第一次训练(train:10w;test:all):

100000条数据共迭代826次,耗时885.93s。
标注错误率:0.0166197028394
技能词识别数:11395
字典技能词识别率:0.32576

新词数:7683

新词中技能词比例:0.522
技能词整体识别率:((11395 * 0.32576) +(7683 *  0.522))/ 11395 = (3712 + 4011)/11395 =7722/11395 = 0.68

第二次训练:(train:10w;test:all;英文单独过滤,不经过CRF;丢弃‘能力‘,‘及‘,‘思维‘,‘我‘;丢弃‘管理‘,‘能力‘,‘处理‘,‘制作‘;丢掉标点符号,丢掉的部分可以抑制技能词的不断扩展)
100000条数据共迭代852次,耗时1085.97s。
标注错误率:0.0258394960395

技能词识别:7683

字典技能词识别率:0.848887153456

新词中技能词比例(汉语):306 技能词比例:0.27
技能词整体识别率:(7683 * 0.85 + 1152 *  0.31)/ 7683 = (6530.55 + 357.12)/7683 =7722/7683 = 0.90

提高的原因:第一遍扩展了相当大一部分词典,所以第二次遍历词典词汇识别率很高,识别的新词数量减少。新技能词识别率低可能跟语料有一定关系。

第三次训练:(train:all;test:all)
580000条数据共迭代999次,耗时2932s。
标注错误率:0.0137764605234

技能词识别:7192

字典技能词识别率:0.790183537264

新词数(汉语):1114

新词中技能词比例:0.93
技能词整体识别率:7192* 0.79 + 1114 *  0.93)/ 7192 = (5681.68 + 1037)/7192 =6178.68/7192 = 0.86

下降的原因:训练语料增加,字典包含的技能词的比例会减少,新词识别增多,且新技能词识别率较高。

第四次实验:(test:all;key_word_line加入了‘熟悉‘,‘精通‘,‘熟练‘,‘了解‘,‘能够‘,‘掌握‘,‘建立‘  ,‘使用‘,‘分析‘,‘项目‘,‘页面‘,‘非常‘,‘通过‘,‘进行‘,‘运用‘, ‘负责‘,‘设计‘,‘组织‘,‘知识‘,‘深入‘,‘根据‘,‘擅长‘,‘指导‘ ,‘拥有‘,‘懂得‘)

没有训练(为了保证训练的精度)

标注错误率:0.0232847543088

技能词识别:14873

字典技能词识别率:0.46836549452

新词数(汉语):7040

新词中技能词比例:0.914
技能词整体识别率:14873* 0.47 + 7040*  0.914)/ = (6990.31 + 6432)/14873=13422.31/14873=0.9024615

提升的原因:相比之下,key_word_line的数量增加了三倍,所以新词量增加很多,相应字典技能词的比例就减少。新词中的真实技能词的比例依然能达到90%以上,说明标注的效果非常好。

总结:

CRF能够有效识别新的技能词,在经过两次测试以后,新词的识别率都在90%以上,说明词典的扩充提高了数据标注的准确度,从而提高了新词识别的效率。

最终结果还是存在很多意义相同但说法不同的词汇。通过词条过滤有以下两个问题:(1)词条量不够,会把很多很好的词过滤掉;(2)冗余太多,占用系统资源;(3)会存在很大比例的非词条的技能词,词频依然可观。

时间: 2024-11-07 17:04:21

CRF技能词识别过程的相关文章

CRF++地名实体识别(特征为词性和词)

http://x-algo.cn/index.php/2016/02/29/crf-name-entity-recognition/ 类似使用CRF实现分词和词性标注,地域识别也是需要生成相应的tag进行标注.这里使用的语料库是1998年1月人民日报语料集.最终学习出来的模型,对复杂的地名识别准确率(F值)非常低,推测是预料中对地名的标注多处是前后矛盾.例如  [华南/ns 地区/n]ns  标为地名实体,但是 东北/f 地区/n 确分开标注,类似错误还有很多.将来有时间可以考虑使用微软的词库 

基于HTK语音工具包进行孤立词识别的使用教程

选自:http://my.oschina.net/jamesju/blog/116151 1前言 最近一直在研究HTK语音识别工具包,前几天完成了工具包的安装编译和测试,这几天又按耐不住好奇,决定自己动手搞一搞,尝试一下用这个工具包,进行简单的孤立词识别,看了几天的文档,做了各种尝试,总算跌跌撞撞的实现了,把步骤记录下来,以后作为参考. 2孤立词识别系统 在本系统中我们将要实现三个词的识别系统,词汇集为:{brightness, channel,color}. 2.1搭建步骤 A:创建语料库,b

[转]Kaldi命令词识别

转自: http://www.jianshu.com/p/5b19605792ab?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&utm_source=recommendation http://www.jianshu.com/p/6338fab6bd0a 刚刚拿到一个简单语料库练手,发现只有语音和对应文字, 这篇文章记录了从数据预处理到kaldi对数据进行训练和测试的全过程,这里首先训练单音节模型,其

Yes Or No孤立词识别

本实验中,我们将基于HTK工具集建立一个2-单词识别系统,词汇集是{Yes,No}.这是可以设计出来的最基本的自动语音识别(Automatic speech recognition,ASR)系统. 目标:建立一个孤立词识别系统,只包含yes和no两个词. 步骤: A: 创建一个语料库,确定识别基本元(如单词yes,no等),yes和no各录5次 B: 声学分析,把waveform的声音文件转换为mfcc()格式 ,即对语音材料库中的声音文件提取MFCC声纹特征 (梅尔频率倒谱系数,这个部分的详解

解析Vin码识别/车架号识别的识别过程

相信大家对Vin码识别/车架号识别的识别过程都很感兴趣吧,今天来简单的给大家介绍一下! 第一步.汽车Vin码识别/车架号识别图像的输入以及预处理.通过图像的裁切校正.二值化对图片进行初步的处理,把前景作为黑色,背景作为白色有利于计算机更好的识别处理. 第二步.汽车Vin码识别/车架号识别,进行字符切割,减少拍照过程中由于角度等问题造成的字迹粘连等问题.字符识别从图片中提取想要的信息,以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度,尤其是Vin码

讯飞语音——离线命令词识别

离线命令词识别 效果图 示例源码 地址:http://download.csdn.net/detail/q4878802/9023825 步骤: 1. 下载SDK 前面文章有,就不在复述了.这里要选择离线命令词的服务以后,重新加载,因为需要下载离线命令词识别的资源文件 地址:http://blog.csdn.net/q4878802/article/details/47762169 2. 集成方法 前面文章有,就不在复述了. 地址:http://blog.csdn.net/q4878802/ar

HTK孤立词识别简单流程

1.数据准备 [command] HSLab one.wav [Rec    ] 开始录音 [Stop   ] 录音结束 [Mark   ] 选择需要标注的区域 [Labelas] 输入标注 回车确定 [Save   ] 保存 孤立词标注3个部分:起始静音(sil) 词语音(one) 结束静音(sil) 按照上述步骤,录制训练集和测试集 编写EBNF文法,并生成最终的解码网络 [command] HParse -T 1 gram.txt net.sf [gram.txt] # WORD = on

基于Android、iOS平台的移动端车牌识别技术及实现车牌识别过程

近年来,随着移动行业的爆发式发展,手机配置不断提高,基于手机平台的信息采集.图像处理.数据传输等方面的研究也成为了热点,这使得基于手机平台上的车牌识别成为可能.传统的车牌识别系统一般都基于固定的桌面平台.图像采集不灵活,特别是对于交通管理部门来说,对违章车辆车牌的自动登记非常不便,因此基于Android.iOS平台的移动端车牌识别技术出现了. 那么如何实现车牌识别的呢,下面简单说说: 首先对现存的车牌识别算法进行了研究,在诸多算法中寻找到一种适合在Android.iOS平台上运行的算法.先通过智

使用TensorFlow 来实现一个简单的验证码识别过程

本文我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别. 1.验证码准备 这里我们使用 python 的 captcha 库来生成即可,这个库默认是没有安装的,所以这里我们需要先安装这个库,另外我们还需要安装 pillow 库 安装好之后,我们就可以用如下代码来生成一个简单的图形验证码 可以看到图中的文字正是我们所定义的内容,这样我们就可以得到一张图片和其对应的