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]
- 所以本例的特征个数为9,有:
别, 日, 新, 闻, 社, 特, 别, 顾, 问.
- 现在让训练数据保持不变,在模板中添加另一个特征:
U00:%x[0,0]
U00:%x[-1,0]/%x[0,0]/%x[1,0]
现在模板中有两个 "features"。所以特征总数
改成18,有:
毎, 日, 新, 聞, 社, 特, 別, 顧, 問
../毎/日
毎/日/新
日/新/聞
新/聞/社
聞/社/特
社/特/別
特/別/顧
別/顧/問
顧/問/..
(这个有两条规则的特征模板将应用于每个单词)
- 现在让我们在训练数据中添加一个重复的词,如下:
毎 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 将被忽略。
-帅华
当您通过 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]
- 所以本例的特征个数为9,有: 别, 日, 新, 闻, 社, 特, 别, 顾, 问.
- 现在让训练数据保持不变,在模板中添加另一个特征:
U00:%x[0,0]
U00:%x[-1,0]/%x[0,0]/%x[1,0]
现在模板中有两个 "features"。所以特征总数 改成18,有:
毎, 日, 新, 聞, 社, 特, 別, 顧, 問 ../毎/日 毎/日/新 日/新/聞 新/聞/社 聞/社/特 社/特/別 特/別/顧 別/顧/問 顧/問/..
(这个有两条规则的特征模板将应用于每个单词)
- 现在让我们在训练数据中添加一个重复的词,如下:
毎 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 将被忽略。
-帅华