惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - cy163

.deb/.whl/.tgz/.tar/gz软件包安装方式(Ubuntu) 一份较为详细的深度学习资料汇总 Bert 时代的创新(应用篇):Bert 在 NLP 各领域的 站在BERT肩膀上的NLP新秀们(PART I) Google BERT应用之《红楼梦》对话人物提取 彻底搞懂BERT 醋 肩周炎 老人痴呆 治疗 【】tensorflow学习笔记 利用Vmware 创建Linux虚拟机的方法 明天(20171017)继续学习阅读的文章 【管用】 使用VMtools实现主机Windows与虚拟机Linux文件共享 使用Samba实现Linux与Windows文件共享实践 基于AllegroGraph实现Protege设计知识库模型的存储步骤 Impala Apache Hadoop 安装方法 人物关系网络图可视化 三维立体柱状图 EI 收录的期刊有哪些 计算直角坐标 与 大地坐标之间转换的 网上工具 有用网站
什么是crf
cy163 · 2017-10-30 · via 博客园 - cy163

什么是crf

利用crf++进行实体识别的流程

  1. 确定标签体系;
  2. 确定特征模板文件;
  3. 处理训练数据文件;
  4. 模型训练。

确定标签体系

大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加。因此需要根据实际情况选择合适的标签体系。

确定模板文件

特征模版是一个文本文件,其内容如下所示,其中每行表示一个特征。如下模板使用了unigram特征,并且仅以字符本身作为特征而不考虑其他特征。除当前字符外,还使用了其前后3个字,以及上下文的组合作为特征。CRF++会根据特征模版生成相关的特征函数。关于特征模版的详细解释可以查看官网文档,并且对于特征的选择和设计可以灵活配置。

#Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U5:%x[-2,0]/%x[-1,0]
U6:%x[-1,0]/%x[0,0]
U7:%x[0,0]/%x[1,0]
U8:%x[1,0]/%x[2,0]

处理训练数据文件

CRF模型的训练数据是一行一个token,一句话由多行token组成,如下图所示。

训练数据及测试数据

a) 训练命令:crf_learn template_file train_file model

其中template_file是模板文件,train_file是训练语料,都需要事先准备好;model是CRF++根据模板和训练语料生成的文件,用于解码。

b) 测试命令:crf_test -m model_file test_file > result_file

其中 model_file是刚才生成的model文件,test_file是待测试语料,“>result_file”是重定向语句,指将屏幕输出直接输出到文件result_file中。

结合规则进行改进

  1. 同一实体内不同字间的类型不同,则以字类数较多者为
  2. 实体开头的字必定为B-???格式
  3. 实体的开始和结尾都有特定的特征可以遵循(如停用词、动词等作为分界等)
  4. 固定实体后跟实体应为B-???格式(如省名后)
  5. 5. 实体间间隔较小时可能合并为同一实体

结合分词及词性标注进行改进

看来单从字的角度着眼已然不够,于是试图利用分词和词性标注信息。利用工具对文本进行分词标注,每一行的token仍然是以单字为特征,中间加入词性的信息如下图所示。针对这样的信息构建新的模板,利用中间一列的信息,可以提高准确率。

大神实验结果对照表

crf++的使用方法

CRF++是著名的条件随机场开源工具,也是目前综合性能最佳的CRF工具。Windows版的无须安装,直接解压即可使用。

训练语料格式

训练语料至少应具有两列,列间由空格或制表位间隔,且所有行(空行除外)必须具有相同的列数。句子间使用空行间隔。

如:

i. 有两列特征的

太 Sd N

短 Sa N

而 Bu N

已 Eu N

。 Sw N

以 Sp N

家 Bn N

乡 En N

的 Su N

ii. 只有一列特征的

太 N

短 N

而 N

已 N

。 N

以 N

家 N

乡 N

的 N

特征的选取及模板的编写

a) 特征选取的行是相对的,列是绝对的,一般选取相对行前后m行,选取n-1列(假设语料总共有n列),特征表示方法为:%x[行,列],行列的初始位置都为0。例如:

i. 以前面语料为例

“ Sw N

北 Bns B-LOC

京 Mns I-LOC

市 Ens I-LOC

首 Bn N

假设当前行为“京”字这一行,那么特征可以这样选取:

结合深度学习的方法

随着深度学习的兴起,RNN、LSTM、BILSTM等模型已经被证明在NLP任务上有着良好的表现。相比传统模型,RNN能够考虑长远的上下文信息,并且能够解决CRF特征选择的问题,可以将主要的精力花在网络设计和参数调优上,但RNN一般需要较大的训练数据,在小规模数据集上,CRF表现较好。在学术界,目前比较流行的做法是将BILISTM和CRF进行结合,借鉴两个模型各自的优点,来达到更好的效果。

总结

本文只是大概介绍了crf++进行实体识别的一些思路,要真正理解还需要多去实践。

References

统计学习方法.李航

CRF++的简单使用 - Felomeng的技术博客 - CSDN博客

条件随机场(CRF)识别命名实体 - Felomeng的技术博客 - CSDN博客

达观数据如何打造一个中文NER系统 - 知乎专栏

CRF++模型格式说明-码农场