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

  一、要识别的对象

    人名、地名、机构名

  二、主要方法

    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. wap_supplicant介绍

    目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口. wpa_supplicant是一个较好 ...

  2. 【python】 开始第一个项目

    根据这篇文章开始上手 http://www.oschina.net/translate/the-flask-mega-tutorial-part-i-hello-world 再加点东西 如果你的环境是 ...

  3. cocos2dx中的触摸事件及触摸优先级

    1.只有CCLayer及其派生类才有触摸功能. 2.开启触摸 setTouchEnable(true); 3.设置触摸模式,单点,多点(仅IOS支持) setTouchMode(kCCTouchesO ...

  4. Laravel5 路由问题 /home页面无法访问

    参考网址:http://stackoverflow.com/questions/11791375/laravel-routes-not-working Laravel5 路由问题 /home页面无法访 ...

  5. 如何在64位的Windows中安裝PLSQLDEVELOPER 8

    先到 Oracle 官網下載Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64) ,接者依照以下步 ...

  6. Flex:在PANEL的title上加一个button[转]

    //转自:http://www.cnblogs.com/GFantasy/archive/2010/03/05/1678917.htmlpackage{ import mx.containers.Pa ...

  7. DIV+CSS 基础

    盒子模型:margin(边界),可被占位:border(边框):padding(填充):content(内容) 块元素: 默认占据一行,前后换行. 作为容器,装载块元素和行内元素,被装载元素的位置,会 ...

  8. plsql 使用技巧

    问题1: 每次打开plsql 布局都被恢复还原了. 你可以调整好一个布局,然后window ->Save Lay out 即可

  9. 【WCF--初入江湖】03 配置服务

    03 配置服务 数据库 生成数据库脚本: CREATE DATABASE [EmployeeDb]; CREATE TABLE [dbo].[T_Employee]( [Id] [,) NOT NUL ...

  10. Mac OS X中MacPorts的安装使用备忘

    Mac下面除了用dmg.pkg来安装软件外,比较方便的还有用MacPorts来帮助你安装其他应用程序,跟BSD中的ports道理一样.MacPorts就像apt-get.yum一样,可以快速安装些软件 ...