当我使用CRF++0.58对一个NE建模时,progarm有一个问题:
“正在读取训练数据:tagger.cpp(399)[功能索引->构建功能(this)]0.00s”
发展环境:
red hat linux 6.5、gcc 5.0、CRF++0.58
编写的功能模板:
模板
数据集:
玻色子火车.txt
玻色子测试.txt
第一列是单词,第二列是pos,第三列是NER tagger
问题是:
当我想训练内质网模型时,我输入以下句子“crf_learn-f 3-c 4.0 template Boson_train crf_model”,我得到了
此通知“正在读取培训数据:tagger.cpp(399)[功能索引->构建功能(this)]0.00s”。我不能理解
C++语言,所以我无法解决这个问题。
我尝试的方法是:
1.更改数据集的编码类型。我使用notepad++将“没有BOM的utf-8”改为“utf-8”。它不起作用。
2.将分隔符从“\t”更改为“”(空格)。它不起作用。
3.我认为模板可能是错误的,所以我使用crf++0.58/example/seg/template进行测试。成功了。但是这个模板
很简单,所以我使用/example/JapaneseNE/template,它更类似于我的特性模板。它不起作用。然后,我检查
日本的例子很好。所以我很困惑。有人能帮我吗。
模板
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-2,0]/%x[-1,0]/%x[0,0]
U06:%x[-1,0]/%x[0,0]/%x[1,0]
U07:%x[0,0]/%x[1,0]/%x[2,0]
U08:%x[-1,0]/%x[0,0]
U09:%x[0,0]/%x[1,0]
U10:%x[-2,1]/%x[0,1]
U11:%x[-2,1]/%x[1,1]
U11:%x[-1,1]/%x[0,1]
U12:%x[0,0]/%x[0,1]
U13:%x[0,1]/%x[1,1]
U14:%x[0,1]/%x[2,1]
U15:%x[-1,0]/%x[0,1]
U16:%x[-1,0]/%x[-1,1]
U17:%x[1,0]/%x[1,1]
U18:%x[1,0]/%x[1,1]
U19:%x[2,0]/%x[2,1]
U20:%x[-1,2]
U21:%x[-2,2]
U22:%x[0,1]/%x[-1,2]
U23:%x[0,1]/%x[-2,2]
U24:%x[0,0]/%x[-1,2]
U25:%x[0,0]/%x[-2,2]
U26:%x[-1,2]/%x[-2,2]/%x[0,1]
U27:%x[-2,2]/%x[0,1]/%x[1,1]
U28:%x[-1,1]/%x[-1,2]/%x[0,1]
U29:%x[-1,2]/%x[0,0]/%x[0,1]
玻色子列车
浙江ns B_产品_名称
产品名称
杭州ns I_产品名称
4 m Búu时间
月m I_时间
25分钟
白昼时间
讯ng出
(x输出
记者n输出
x输出
人名
姓名
x输出
通讯
x输出
联系人姓名
)x输出
毒贩出
很zg输出
“x输出
时髦nr输出
“x输出
,x输出
使用p输出
微信vn B U产品U名称
交易n出
毒
.x输出
没v输出
想
联系人姓名
也退出
最佳答案
你的调试方向是正确的。问题确实出在你的模板文件上。
您的培训数据有3列(第0列:word
、第1列:pos-tag
和第2列:tag
)。
您不能将tag
用作功能,但您的模板文件在许多功能定义(请参见,U20到U29)中都有对它的引用(即,第2列)。您的培训应该在删除/更正这些内容后开始。
希望这有帮助:)
您还可以查看这些视频教程,以便更好地理解模板文件和使用CRF++培训NER:
1)https://youtu.be/GJHeTvDkIaE
2)https://youtu.be/Ur5umC4BwN4
关于linux - 使用CRF + 0.58列车NE模型的失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43487195/