很久前做过一个命名实体识别的模块,现在有时间,记录一下。

  一、要识别的对象

    人名、地名、机构名

  二、主要方法

    1、使用CRF模型进行识别(识别对象都是最基础的序列,所以使用了好评率较高的序列识别算法CRF)

    2、使用规则对相关数据进行后过滤、

  三、具体实现

    1、训练数据的生成

      主要使用了人民日报免费部分,以及一些及它从网上找到的资源(时间长了,记不住了,好像还自己标注了些)

    2、模板的生成

        使用的是Unigram,由于考虑到要识别的实体一般情况下没有长距离依赖 以及训练时的效率问题,所以模板没有写得过长。经过几次测试,最终确定的模板如下。  

#Unigram
U00:%x[-,]
U01:%x[-,]
U02:%x[-,]
U03:%x[,]
U04:%x[,]
U05:%x[,]
U06:%x[,]
U07:%x[-,]/%x[-,]
U8:%x[-,]/%x[-,]
U9:%x[-,]/%x[,]
U10:%x[,]/%x[,]
U11:%x[,]/%x[,]
U12:%x[,]/%x[,] # Bigram
B

    3、参数寻优

      参数寻优,使用网上提供的python脚本,进行参数寻优。(脚本的具体使用方法不在这里赘述)

    4、迭代训练

        a)使用初始的训练数据及调优过的参数进行训练

        b)使用训练好的model对文本进行实体识别

        c)对识别错误的结果进行人工标注,添加到训练集,转至步骤a)

        这里的采用了人工干预的方法,来提高识别高性能,可能有些麻烦,但这是个比较有效的方法。

    5、总体性能

        经测试,总体准确度(Accuracy)在94%以上。

        注:没有经过严格的测试,只是取了300篇文章,对其中的实体标注了,然后用模型识别了一遍,统计了Acc,而recall几乎100%,我感觉测试文章比较少,所以这个测试结果可能不太严谨,由于最后领导感觉达到要求了,所以我也没有继续提高。

  四、小结

        1、首先来说,训练模型使用语料有点偏少,如果有大量的训练语料,第四步迭代训练的压力可能就会比较小。

        2、总体来说,这个模块还是很快的做完了,效果也还可以。在这里主要感谢一下人民日报那几个月的免费语料,做模型最怕的就是没有基础数据,特别是人民日报这样的高质量的数据,有了这种高质量的数据,对于机器学习来说是事伴功倍。

转载请注明出处:本文地址 http://www.cnblogs.com/nocml/p/3543236.html

基于条件随机场(CRF)的命名实体识别的更多相关文章

  1. 用CRF做命名实体识别(一)

    用CRF做命名实体识别(二) 用CRF做命名实体识别(三) 用BILSTM-CRF做命名实体识别 博客园的markdown格式可能不太方便看,也欢迎大家去我的简书里看 摘要 本文主要讲述了关于人民日报 ...

  2. 用CRF做命名实体识别(二)

    用CRF做命名实体识别(一) 用CRF做命名实体识别(三) 一. 摘要 本文是对上文用CRF做命名实体识别(一)做一次升级.多添加了5个特征(分别是词性,词语边界,人名,地名,组织名指示词),另外还修 ...

  3. 使用CRF做命名实体识别(三)

    摘要 本文主要是对近期做的命名实体识别做一个总结,会给出构造一个特征的大概思路,以及对比所有构造的特征对结构的影响.先给出我最近做出来的特征对比: 目录 整体操作流程 特征的构造思路 用CRF++训练 ...

  4. NLP入门(八)使用CRF++实现命名实体识别(NER)

    CRF与NER简介   CRF,英文全称为conditional random field, 中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机 ...

  5. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词的数据集预处理成作者提到的格式,即可很快的就迁移了这个代码到中文分词中,相关的代码后续将会分享. 具体的数据格式,这种方式并不适合处理 ...

  6. 基于tensorflow的bilstm_crf的命名实体识别(数据集是msra命名实体识别数据集)

    github地址:https://github.com/taishan1994/tensorflow-bilstm-crf 1.熟悉数据 msra数据集总共有三个文件: train.txt:部分数据 ...

  7. DL4NLP —— 序列标注:BiLSTM-CRF模型做基于字的中文命名实体识别

    三个月之前 NLP 课程结课,我们做的是命名实体识别的实验.在MSRA的简体中文NER语料(我是从这里下载的,非官方出品,可能不是SIGHAN 2006 Bakeoff-3评测所使用的原版语料)上训练 ...

  8. Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf

    文章目录基本介绍BertForTokenClassificationpytorch-crf实验项目参考基本介绍命名实体识别:命名实体识别任务是NLP中的一个基础任务.主要是从一句话中识别出命名实体.比 ...

  9. 8.HanLP实现--命名实体识别

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 8. 命名实体识别 8.1 概述 命名实体 文本中有一些描述实体的词汇.比如人名. ...

随机推荐

  1. Linux流量监控工具 - iftop (最全面的iftop教程)

    在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...

  2. 十二、BOOL冒泡

    int main(){        int a[5] = {5,2,3,4,1};      //需要一个可以告诉我们没有交换的东西      //YES:交换      //NO:未交换     ...

  3. 【BZOJ 1005】[HNOI2008]明明的烦恼

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...

  4. VS2013中设置大小写的快捷键

    1.我们在定义头文件时,通常需要定义: #ifndef  _MainMenu_H_#define  _MainMenu_H_ your code... #endif 我们需要将头文件名设置为大写的: ...

  5. Cocos2D 指定文件夹创建项目

    参考http://www.cnblogs.com/skynet/p/3428369.html 通过下面的一些改造,可以让新建的cocos2d-x项目独立于cocos2d-x引擎目录: 1)     将 ...

  6. 中国IT人,你们是否从没想过开发一款伟大的产品?

    我也是今年刚毕业的,一毕业就做了猎头,从开始实习到正式工作,迄今为止接触的IT技术人不下上千人了.这里面有腾讯.阿里巴巴.百度.360.金山.金蝶.用友.华为.惠普等从事自主研发的大牛,也有很多软通. ...

  7. 【转】android 内存泄漏相关收藏博客。

    关于android内存泄漏的研究   博客建了几个月,都没有去写,一是因为当时换工作,然后又是新入职(你懂的,好好表现),比较忙:二是也因为自己没有写博客的习惯了.现在还算是比较稳定了,加上这个迭代基 ...

  8. AFNetworking VS ASIHTTPRequest

    AFNetworking和ASIHTTPRequest,大致如下: 使用上:AFN是用上较ASI略简单,但扩展不如ASI;AFN能按普通的block写法直接用闭包的写法,但是ASI不行,这样ASI的代 ...

  9. hihocoder #1300 : 展胜地的鲤鱼旗 dp

    题目链接: http://hihocoder.com/problemset/problem/1300 题解: 先用栈预处理出每个‘)’匹配的‘(’的位子,放在pos数组中. dp[i]表示以i结尾的合 ...

  10. 2013 Asia Regional Changchun

    Hard Code http://acm.hdu.edu.cn/showproblem.php?pid=4813 #include<cstdio> ]; int main(){ int t ...