对crf++的template的理解 ©seven_clear
这是以前的一篇草稿,当初没写完,今天发出来,但总觉得水平有限,越学越觉得自己菜,写的博客水准低,发完这篇以后就谨慎发博了,毕竟自己菜,不能老吹B,下面是原稿。
好久没更了,本来年前想写篇关于爬虫的总结来,结果在家懒癌发作,开学了也没“挤”出时间来。今天主要是心情好,写下自己学到的一点知识,长了一点人生的经验。
前两周看了HMM和CRF的知识,因为最近做的东西要用到,这两天在用crf++,目前最新的好像是0.58版,再新的没找到资源,貌似0.54之后就只有发布的exe了,0.53版的还有源码,感兴趣的同学可以看看源码(我打算最近两天看)。用一个东西首先要看它的官方文档,对一些命令什么的看过之后,卡在了一个地方——template,文档上只说template里是训练时生成特征函数的,并解释了一下形如U00:%x[-2,0]的含义,但是,对于我们这种菜鸡,根本理解不了啊。问题主要有三个(首先假设我们有如下的template:)
# Unigram
U00:%x[-,]
U01:%x[-,]
U02:%x[,]
U03:%x[,]
U04:%x[,]
U05:%x[-,]/%x[-,]/%x[,]
U06:%x[-,]/%x[,]/%x[,]
U07:%x[,]/%x[,]/%x[,]
U08:%x[-,]/%x[,]
U09:%x[,]/%x[,] # Bigram
B
1)U00~U04组合起来是什么意思;2)形如U05~U09那样的是什么意思;3)模版怎么写
知道问题就可以有目的的搜索,搜索结果大致是怎么理解crf++中的模版、用crf++进行中文标注、crf++模版格式等等,看了一堆,主要收获就是形如U09 是联合概率,剩下的都是和官网文档差不多,大多数文章相似度很高(哈哈哈),也算小小的解决了第二个问题,别的我依然蒙蔽。
今晚找老大聊了聊,老大解决了我的疑惑,又学到了一点人生的经验。下面说一下我得理解。
首先假设我们知道CRF(s因为有的加了)的概念,知道计算P(y|X)的公式
然后我们在模型中使用某特征(暂且叫字符n-gram特征),其具体特征形式化描述为
下标表示距离当前考察字符的相对位置,上一句意思就是对位置i,还要考察其前面两个字符和后面两个字符来计算其 Φ,比如: 我是中国人,考察中的时候还要考察我 是 国 人,模版写出来就是我们的U00~U04。
上面理解了,U05-U09就好理解了,它们其实就是像U00-U04这样的特征的组合,还是上面那个例子,U08表示 是/中。U08、U09这样的叫bigram(和下面的Bigram不同,一般而言比Bigram灵活一点),U05-U07叫trigram。其实在crf++代码是现中根据模板生成的特征也不过是一些字符串和对应的编号,然后通过学习得到特征函数的权重。
关于模板怎么写,这取决于你,一般来说会有一个窗口(即考虑当前token前几个后几个),大小自定义,源码里好像限制窗口最大为17,如果你的特征有多列,可能要多写些像U00-U04这样的模板不同的地方在于[,]里的第二项还有像U05-U09这样的组合特征模板,下面的Bigram特征一般没用,用的话也是最简单的B。
其实现在看来当初的疑问很简单,大家都是事后诸葛亮,但还是希望亡羊补牢为时未晚。学东西还是要学透,不然笨鸟还是笨鸟,最后连飞都飞不动了。
对crf++的template的理解 ©seven_clear的更多相关文章
- 概率图模型学习笔记:HMM、MEMM、CRF
作者:Scofield链接:https://www.zhihu.com/question/35866596/answer/236886066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- 条件随机场(CRF) - 2 - 定义和形式(转载)
转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618218.html 参考书本: <2012.李航.统计学习方法.pdf> 书上 ...
- 条件随机场之CRF++源码详解-训练
上篇的CRF++源码阅读中, 我们看到CRF++如何处理样本以及如何构造特征.本篇文章将继续探讨CRF++的源码,并且本篇文章将是整个系列的重点,会介绍条件随机场中如何构造无向图.前向后向算法.如何计 ...
- 条件随机场(CRF) - 2 - 定义和形式
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968声明: 1,本篇为个人对& ...
- CodeSmith使用总结--调用自定义方法
上一篇读取了一个表的内容,但是到了真正应用的时候还是不够用的,我们很容易可以对比出来,SQL里边的数据类型的定义和C#中有所不同,比如Saler--String,大写的String在C#中不是一个类型 ...
- 开源项目kcws代码分析--基于深度学习的分词技术
http://blog.csdn.net/pirage/article/details/53424544 分词原理 本小节内容参考待字闺中的两篇博文: 97.5%准确率的深度学习中文分词(字嵌入+Bi ...
- [ipsec][strongswan] strongswan源码分析--(一)SA整体分析
strongswan SA分析(一) 1 概念 下面主要介绍两个本文将要阐述的核心概念.他们是SA和SP.注意,这不是一篇不需要背景知识的文章.作者认为你适合阅读接下来内容的的前提是,你已经具备了一下 ...
- 2018VUE面试题总结
Vue面试题 一:什么是MVVM MVVM是是Model-View-ViewModel的缩写,Model代表数据模型,定义数据操作的业务逻辑,View代表视图层,负责将数据模型渲染到页面上,Vie ...
- Django安装与简单配置(1)
目录 1. 环境准备 2. 开始安装 2.1 安装Django 2.2 安装 Mysql数据库 3. 开始配置 3.1 Django简单配置 3.1.1 创建一个工程(project)为devops: ...
随机推荐
- hibernate 一级缓存,二级缓存,查询缓存
1.一级缓存是session级的缓存,session结束即事务提交,session关闭,缓存清除.效果不大 get方式:一个session内,第二次查询不连数据库.适用于一级缓存 load方式:懒加载 ...
- Docker技术原理
Docker技术原理之Linux Namespace(容器隔离) https://blog.csdn.net/songcf_faith/article/details/82748987 Docker技 ...
- Android刮刮卡效果
不多说,直接上代码: package com.example.test; import android.app.Activity; import androi ...
- create a cocos2d-x-3.0 project in Xcode
STEP1: Open Terminal SETP2: Run setup.py SETP3: Run source /Users/your_user/.bash_profile( so that e ...
- 8 -- 深入使用Spring -- 1...3 容器后处理器
8.1.3 容器后处理器(BeanFactoryPostProcessor) 容器后处理器负责处理容器本身. 容器后处理器必须实现BeanFacotryPostProcessor接口.实现该接口必须实 ...
- 接口测试之JMeter初探
1.JMeter安装配置 )登录 http://jmeter.apache.org/download_jmeter.cgi ,下载与自己的平台相对应文件: )安装JDK(.6以上),配置环境变量JAV ...
- PowerDesigner导出word,PowerDesigner把表导出到word,PDM导出word文档
PowerDesigner导出word,PowerDesigner把表导出到word,PDM导出word文档 >>>>>>>>>>>& ...
- 【代码审计】XIAOCMS_存在任意文件删除漏洞分析
0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...
- 【安全开发】Perl安全编码规范
多年以来,Perl已经成为用于系统管理和WebCGI开发的功能最强的编程语言之一(几乎可以使用Perl做任何功能的程序).但其扩展应用,即作为Internet上CGI的开发工具,使得它经常成为Web服 ...
- U3D 使用VS编程组件
http://visualstudiogallery.msdn.microsoft.com/6e536faa-ce73-494a-a746-6a14753015f1 http://visualstud ...