当前位置:   article > 正文

基于条件随机场的命名实体抽取_基于条件随机场的实体抽取

基于条件随机场的实体抽取

本文地址:http://blog.csdn.net/nocml/article/details/8496534

转载请注明出处

先声明,本人是菜鸟,这篇文章中的做法也是我的菜鸟做法,如果有大牛看到还请指点一二。勿喷。

首先下载CRF++,这个开源工具还是很好用的,当然内存释放可能存在一些问题。

下载地址:http://crfpp.googlecode.com/svn/trunk/doc/index.html#download

                    http://download.csdn.net/detail/nocml/4988379(这个我编译通过了,上传到CSDN了)

 

然后我们要下载语料,我用的是人民日报免费的那一个月的语料,

语料下载地址:

语料下之后要加工语料。下面是我加工后的格式:

每句话后一个空行 , 标记符号上图也显示了。本来想把处理后的语料上传到网上的,发现在太大了,上传不了,所以不想自己处理语料的请留邮箱哈。我可以发给你们。

 

语料处理完了,然后就是用CRF++训练了,这个很好办,我用的命令是crflearn -f 2 模版名 语料名 训练后的文件名  (crf_learn -f 2 template train_seg.part1.txt model_f2_all_ANSI_newTempalte)

我用的模版是:

#Unigram
U00:%x[-3,0]
U01:%x[-2,0]
U02:%x[-1,0]
U03:%x[0,0]
U04:%x[1,0]
U05:%x[2,0]
U06:%x[3,0]
U07:%x[-3,0]/%x[-2,0]
U8:%x[-2,0]/%x[-1,0]
U9:%x[-1,0]/%x[0,0]
U10:%x[0,0]/%x[1,0]
U11:%x[1,0]/%x[2,0]
U12:%x[2,0]/%x[3,0]


# Bigram
B

至此,我们得到了训练后的文件,然后才开始入正题,我们既然是做应用,总不能也用CRF++给我们的test.exe吧,这里我们要使用libcrfpp.dll, 由于我所做的项目是C#的,所以我又写了dll,在我写的dll中调用libcrfpp.dll对输入信息进行实体提取,直接返回抽取的结果。其实CRF++是开源的,我们也可以直接改其中的代码来实现我们想要的功能。

这里要说明的是由于语料较少,所以训练出来的准确度较低,没办法,谁让我们穷呢,只能用得起免费的语料,不过穷人有穷人的做法。我们可以在训练时把拟合度调小些,让训练出来的数据不要拟合的太厉害,抽取出来的结果可能会就误判,误判不怕,我们再对抽取结果进行规则提取,这个是个狠活儿,一定要多下功夫,做好了准确率会大幅提升。

最后我做的实体抽取准确率在94%以上。当然其实可以再提高的,特征这块做的太过薄弱,可是毕竟是做项目,不能耗费太长时间。

好了,就写这些,如果有什么问题可以留言,勿喷。 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/958328
推荐阅读
相关标签
  

闽ICP备14008679号