对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: ...
随机推荐
- Android开发学习笔记-自定义组合控件
为了能让代码能够更多的复用,故使用组合控件.下面是我正在写的项目中用到的方法. 1.先写要组合的一些需要的控件,将其封装到一个布局xml布局文件中. <?xml version="1. ...
- 用highcharts展现你的数据
摘要: 前面已经分享过图表插件,今天在来将下如何使用highcharts来绘制图表.highcharts支持在线定制,你可以选择你所需要的模块,然后点击build就会生成一个js文件链接,右键保存到本 ...
- git同时提交到两个仓库
有时候一个项目,希望既提交到oschina又提交到公司内网的gitlab,或者是github什么的. 使用git remote -v 查看当前git的远程仓库. 添加一个远程仓库 git remote ...
- %s %d %f 等等是什么意思
这个是C语言的格式化输出:%s是字符串.%d是整数.%f代表浮点数. 这些是格式声明,格式声明由“%”和格式字符组成.常用的格式字符有:1)d格式符,用来输出一个有符号的十进制整数:2)c格式符,用来 ...
- SpringBoot------连接mysql时出现警告:Establishing SSL connection without server's identity verification is not recommended
SpringBoot连接MySQL时出现警告: 英文: Mon Jun :: CST WARN: Establishing SSL connection without server's identi ...
- 彻底删除weblogic域方法
1.删除 D:\Oracle\Middleware\wlserver_10.3\common\nodemanager\nodemanager.domains 里的base_domain域内容 #Dom ...
- mysql类型对应Java的类型
整型 JDBCtinyint java.lang.Integersmallintmediumint java.lang.Longint bigint ...
- C语言实现字符串IP与整数型IP的相互转换
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h&g ...
- CentoOS6.6安装netcat
http://blog.csdn.net/u013673976/article/details/47084841 CentOS下安装netcat 使用zookeeper过程中,需要监控集群状态.在使用 ...
- Android studio修改字体(font)大小(size)
Android Studio 默认编辑器(Editor)的方案(Scheme)是无法修改字体的, 可以Save as, 保存为新的方案(Scheme), 然后更改字体大小; 位置: File-> ...