CRF++:任何人都明白 CRF 模型文件中的浮点数是什么意思

CRF++: anybody understand what does the float number mean in CRF model file

当您通过 crf_learn 使用 -t 选项构建模型文件时: crf_learn模板train_data-t模型

然后会生成两个模型文件,其中一个是model.txt.

谁能告诉我浮点数是什么意思?

参见以下示例:

版本:100 成本因素:1 最大:40 xsize: 1

乙 我

U00:%x[0,0] B

36乙 20 U00: , 26 U00: 18 U00: 22 U00:这个 8 U00: 10 U00:气 2 U00: 4 U00:特 至 34 U00: 12 U00: 0 U00:哟 28 U00:等 24 U00: 32 U00:顶部 14 U00:世界 16 U00:世代 30 U00:地面 6 U00:我

-0.3022268562246992 0.3022268562246989 -0.3629407244093161 0.3629407244093156 -0.3327259487028221 0.3327259487028215 0.3462799099537973 -0.3462799099537980 0.3452020097664334 -0.3452020097664336 -0.3218750203631590 0.3218750203631575 0.0376944272290242 -0.0376944272290280 0.3329631783491211 -0.3329631783491230 -0.3092967308014029 0.3092967308014015 0.3413769126433928 -0.3413769126433950 0.3786782765859961 -0.3786782765859980 0.5208645073272351 -0.5208645073272384 -0.3261580548802839 0.3261580548802814 -0.3615756495615902 0.3615756495615884 -0.3248593224319323 0.3248593224319312 0.3281895709166696 -0.3281895709166719 -0.3040331359589971 0.3040331359589951 0.2836939567332580 -0.2836939567332600 -0.1530917919770705 -0.1613508585854637 0.4245699543724943 -0.1101273038099901

我的理解是: 每个浮点数应对应每个模板,例如: 第一个浮点数“-0.3022268562246992”应该对应于“36 B”。 但是为什么浮点数的数量是模板数量的两倍呢? 这些浮点数是什么意思?

非常感谢,

帅华

阅读部分CRF++058源代码后,我知道如何理解crf_learn输出。我将使用一些示例来解释输出。

==== 基础 ====

假设我们有以下训练数据:

毎  k   B
日  k   I
新  k   I  
聞  k   I
社  k   I
特  k   B
別  k   I 
顧  k   B
問  k   I

而且我们的模板很简单,只有一行:U00:%x[0,0]

  1. 所以本例的特征个数为9,有: 别, 日, 新, 闻, 社, 特, 别, 顾, 问.
  2. 现在让训练数据保持不变,在模板中添加另一个特征:

U00:%x[0,0]

U00:%x[-1,0]/%x[0,0]/%x[1,0]

现在模板中有两个 "features"。所以特征总数 改成18,有:

毎, 日, 新, 聞, 社, 特, 別, 顧, 問    
 ../毎/日
毎/日/新
日/新/聞
新/聞/社   
聞/社/特
社/特/別
特/別/顧    
別/顧/問    
顧/問/..

(这个有两条规则的特征模板将应用于每个单词)

  1. 现在让我们在训练数据中添加一个重复的词,如下:
毎  k   B
毎  k   B
日  k   I
新  k   I  
聞  k   I
社  k   I
特  k   B
別  k   I 
顧  k   B
問  k   I

“毎”这个词,出现了两次,只算一个特征。 所以特征数还是18.

====提前====

现在让我们看看如何理解"model.txt"中的内容。

1) SPACE LINE 用于分隔不同的块:

1.第一块:

    version: 100
    cost-factor: 1
    maxid: 670
    xsize: 1

maxid 取决于特征的数量和标签的数量。

以第一个训练数据为例:(9个不同的词,两个标签=> B和I)

id应该从0开始, 0+2=2, 2+2=4, ... 16. maxid为16.

这里,为什么步长是2?

因为我们有两种标签。实际上每个单词对应两个不同的标签,比如:

0 毎 ==> B
1 毎 ==> I

2 日 ==> B
3 日 ==> I 
...
14 問 ==> B
15 問 ==> I

2。第二块:

列出训练数据中的所有标签:

B

I

3。第三块:

列出所有使用的模板:

U00:%x[0,0]

B

4.第四块:

特征id、模板及对应词:

0 U00:毎
2 U00:日
...

5.第五块:

对于每个特征,每个标签的可能性:

每个词对应两种可能性

可能性 < 0 将被忽略。

-帅华