首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作CRF++模板文件?

如何制作CRF++模板文件?
EN

Stack Overflow用户
提问于 2014-08-25 01:23:09
回答 2查看 7.3K关注 0票数 9

我是CRF++的新手。我正在自学看它的手册:http://crfpp.googlecode.com/svn/trunk/doc/index.html?source=navbar#templ

我不明白这意味着什么

这是一个描述单字特征的模板。当你给一个 模板“u 01:%x0,1”,CRF++自动生成一组特性 函数(func1 .( funcN)类似: func1 = if (输出=B和feature="U01:DT")返回1其他返回0 func2 = if (输出=I和feature="U01:DT")返回1其他返回0 func3 = if (输出=O和feature="U01:DT")返回1其他返回0 ……funcXX = if (输出=B和feature="U01:NN")返回1其他返回0 funcXY = if (output =O和feature="U01:NN")返回1 O返回0。由模板生成的特征函数的数量。 等于(L * N),其中L是输出数。

为什么有很多行用于Unigram特性,它们意味着什么?

EN

回答 2

Stack Overflow用户

发布于 2015-05-13 11:48:24

在看了文献资料足够长的时间后,我想我明白了。

以文档中的示例为例,其中输入数据为:

代码语言:javascript
复制
He        PRP  B-NP
reckons   VBZ  B-VP
the       DT   B-NP 
current   JJ   I-NP 
account   NN   I-NP

所讨论的特性模板(格式为%x[row, col],其中row相对于当前位置)是%x[0,1]

当展开%x[0,1]时,取决于当前令牌,它可以扫描集合[PRP, VBZ, DT, JJ, NN]中的一个字符串(即第1列中的唯一字符串之一,其中最左边的列是列0)。对于每个字符串,它创建一组表单的功能函数(查看第3行输入数据):

代码语言:javascript
复制
func1 = if (output = B-NP and feature="U01:DT") return 1 else return 0
func2 = if (output = I-NP and feature="U01:DT") return 1 else return 0
func3 = if (output = O    and feature="U01:DT") return 1 else return 0
...

将该特定字符串(上面代码中的DT)与每个输出类进行比较。

因此,如果输出类是[B-NP, I-NP, O],则扩展为功能函数的功能模板如下所示:

代码语言:javascript
复制
# row 1 (He, PRP, B-NP)
func1 = if (output = B-NP and feature="U01:PRP") return 1 else return 0
func2 = if (output = I-NP and feature="U01:PRP") return 1 else return 0
func3 = if (output = O    and feature="U01:PRP") return 1 else return 0

# row 2 (Reckons, VBZ, B-VP)
func4 = if (output = B-NP and feature="U01:VBZ") return 1 else return 0
func5 = if (output = I-NP and feature="U01:VBZ") return 1 else return 0
func6 = if (output = O    and feature="U01:VBZ") return 1 else return 0

# Row 3 (the, DT, B-NP)
func7 = if (output = B-NP and feature="U01:DT") return 1 else return 0
func8 = if (output = I-NP and feature="U01:DT") return 1 else return 0
func9 = if (output = O    and feature="U01:DT") return 1 else return 0

# Row 4 (current, JJ, I-NP)
func10 = if (output = B-NP and feature="U01:JJ") return 1 else return 0
func11 = if (output = I-NP and feature="U01:JJ") return 1 else return 0
func12 = if (output = O    and feature="U01:JJ") return 1 else return 0

# Row 5 (account, NN, I-NP)
func13 = if (output = B-NP and feature="U01:NN") return 1 else return 0
func14 = if (output = I-NP and feature="U01:NN") return 1 else return 0
func15 = if (output = O    and feature="U01:NN") return 1 else return 0

关于文件中提到的地方:

模板生成的特征函数的数量等于(L * N),其中L是输出类的数量,N是从给定模板扩展的唯一字符串的数目。

在这种情况下,L是3,N是5。

票数 9
EN

Stack Overflow用户

发布于 2014-12-04 07:04:08

对于特定的模板%xi,j,i表示当前位置的偏移量(行),j表示要使用的功能(列)。给定的数据:

代码语言:javascript
复制
He        PRP  B-NP

reckons   VBZ  B-VP

the       DT   B-NP

current   JJ   I-NP  << CURRENT TOKEN

account   NN   I-NP

%x0,1指单词,偏移到当前单词为0,其pos标记为JJ,输出标记为I。

向前移动,%x0,1 -> pos标记=NN,输出标记=I

每个特征函数都是指当前单词及其pos标记的一对可能值。

最新情况:

我认为在你很好理解CRF模型的情况下,上面的解释是非常直接的。

CRF模型参考

CRF++是沙及佩雷拉(2003)的复制

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25477896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档