Wapiti CRF:了解模型文件并强制执行硬约束

Wapiti CRF : Understanding the model file and forcing hard-constraints

我目前正在使用 Wapiti 检测网页中的特定产品名称。 我已经训练了一个模型,我想列出这个模型的前 10 个更重要的规则(那些具有最大权重(正或负)的规则)。

这是从 Wapiti 文档中提取的训练模型示例:

[...]
12:*:Pre-3 X='s,
13:*:Pre-3 X=Wel,
13:*:Suf-3 X=rid,
[...]
10=-0x1.32892bf985df3p-1
11=0x1.73883325ee8edp-4
15=0x1.034d12a224d71p-2
16=-0x1.1fa154002a2f9p+0

那么,从上面的3条规则中,我怎么知道哪一条的权重最大呢?规则 *:Pre-3 X='s, 与数字“12”相关联。是这个号码吗 重量?或者它是对下面几行的引用?但是,数字“12”并未出现在这些行中。

另一个问题:是否可以强制"hard-constraint"?也就是说,编写一条规则,无论何时观察到,它都会生成 always 给定的标签。

关于你的第一个问题,看看 wapiti 的转储模式,它将模型文件转换为更具可读性的格式,这样可以很容易地提取具有最高或最低权重的特征。

wapiti dump model > model.txt

这将为您提供一个文本文件,每行描述一个特征,共 4 列。首先是扩展了替换的模式,接下来是之前位置的标签(或 # 对于 unigrams 模式),接下来是当前位置的标签,最后是特征权重。

关于你的第二个问题,Wapiti 有专门的强制解码模式。如果您的数据有 N 列观察值,只需给 wapiti 一个包含 N+1 列的文件并将约束放在最后一列中。使用标签模式的 --force 开关,如果最后一列中存在有效标签,wapiti 将强制解码器在此位置预测此标签,并在相邻位置考虑此标签。