在crfsuite中将标签用作属性
我刚接触CRF(条件随机场),想用CRFsuite来给单词打标签。我看了CRFsuite的手册,了解了训练数据的格式。但是如果我想添加一些特征,比如“附近单词”的标签,训练数据文件应该是什么样子的呢?
我在网上搜索了一下,但没有找到关于这个问题的任何信息。
1 个回答
2
简单来说,你需要提供一些关于“咖啡”这个词的属性,比如说 w[-1]=drank
,这表示前一个词是“喝”。同时,你还要给它一个标签,比如 NOUN
(名词)。然后,CRFsuite 就会生成实际的指示函数,这些函数组成了 CRF 模型,其中包括一个特征,表示前一个词的标签是 VERB
(动词)。它之所以能做到这一点,是因为它使用了一种叫“1阶马尔可夫 CRF 和双元特征”的方法,具体内容可以在你提到的手册页面上找到。
这里有一个重要的区别需要说明(文档中可以更清晰一些),就是“特征”和“属性”的不同。特征是模型中的链接,表示(属性,标签)或(标签,标签)这两种组合。
在你的例子中, w[-1]=drank
是你提供的一个属性。将 w[-1]=drank
和 NOUN
结合起来就是一个状态特征,而标签之间的转换 VERB --> NOUN
则是一个转换特征,这两者都是由 CRFsuite 生成的。
我推荐你看看这个教程,里面会详细讨论这些内容。