可能没关系,但我使用的是 CRF++ 0.58 的 Windows 分发版。
所以我已经成功地使用 mallet 用 CRF 训练了一个模型,然后对其进行了测试。当我尝试在 CRF++ 中使用相同的训练和测试文件时(并在创建模板文件之后),我得到一个
The line search routine mcsrch failed: error code:0
当我使用任何一个时出错
-a CRF-L1
或默认
-a CRF-L2
当我使用
-a MIRA
但是,训练没有错误,并且与测试相同。
mallet 和 crf++ 的测试和训练数据的格式可以相同,所以这不是问题。我的模板文件很简单
#Mixed
M00:%x[0,0]
M01:%x[0,1]
M02:%x[0,2]
......
M12:%x[0,12]
我的训练数据中的最后一列是 0 或 1,这是分类的值。我的任何功能中都没有空格,我在必要时使用下划线。我是否在这里遗漏了一些简单的东西,什么会导致 L1 和 L2 正则化这样失败?