使用CRF + 0.58列车NE模型

时间:2017-04-19 05:34:51

标签: linux nlp crf++

当我使用CRF ++ 0.58来建模NE并且progarm有问题时:

"阅读训练数据:tagger.cpp(399)[feature_index _-> buildFeatures(this)] 0.00s"

  1. 开发环境:
    • red hat linux 6.5,gcc 5.0,CRF ++ 0.58
  2. 书面要素模板:
    • 模板
  3. 数据集:
    • Boson_train.txt
    • Boson_test.txt
    • 第一列是单词,第二列是pos,第三列是NER tagger
  4. 问题:
    • 当我想训练NER模型时,我输入这句话" crf_learn -f 3 -c 4.0模板Boson_train crf_model",我得到了 此通知,"阅读培训数据:tagger.cpp(399)[feature_index _-> buildFeatures(this)] 0.00s"。我无法理解 C ++语言,所以我无法解决问题。
  5. 我试过的方法:
    • 1.更改数据集的编码类型。我使用notepad ++来更改" utf-8,没有BOM"到" utf-8"。它没有用。
    • 2.从' \ t'更改分隔符到' '(空间)。它没有用。
    • 3.我想也许模板错了。所以我使用crf ++ 0.58 / example / seg / template进行测试。有效。但是这个模板   很简单,所以我使用/ example / JapaneseNE / template,它与我的功能模板更相似。它没有用。然后,我检查   日本的例子它运作良好。所以我感到困惑。是否有人可以帮助我。
  6. 模板

    • U00:%×[-2,0]
    • U01:%×[-1,0]
    • U02:%×[0,0]
    • U03:%×[1,0]
    • U04:%×[2,0]
    • U05:%×[-2,0] /%×[-1,0] /%×[0,0]
    • U06:%×[-1,0] /%×[0,0] /%×[1,0]
    • U07:%×[0,0] /%×[1,0] /%×[2,0]
    • U08:%×[-1,0] /%×[0,0]
    • U09:%×[0,0] /%×[1,0]

    • U10:%×[-2,1] /%×[0,1]

    • U11:%×[-2,1] /%×[1,1]
    • U11:%×[-1,1] /%×[0,1]
    • U12:%×[0,0] /%×[0,1]
    • U13:%×[0,1] /%×[1,1]
    • U14:%×[0,1] /%×[2,1]
    • U15:%×[-1,0] /%×[0,1]
    • U16:%×[-1,0] /%×[-1,1]
    • U17:%×[1,0] /%×[1,1]
    • U18:%×[1,0] /%×[1,1]
    • U19:%×[2,0] /%×[2,1]

    • U20:%×[-1,2]

    • U21:%×[-2,2]
    • U22:%×[0,1] /%×[-1,2]
    • U23:%×[0,1] /%×[-2,2]
    • U24:%×[0,0] /%×[-1,2]
    • U25:%×[0,0] /%×[-2,2]
    • U26:%×[-1,2] /%×[-2,2] /%×[0,1]
    • U27:%×[-2,2] /%×[0,1] /%×[1,1]
    • U28:%×[-1,1] /%×[-1,2] /%×[0,1]
    • U29:%×[-1,2] /%×[0,0] /%×[0,1]
  7. Boson_train
    • 浙江ns B_product_name
    • 在线b I_product_name
    • 杭州ns I_product_name
    • 4 m B_time
    • 月m I_time
    • 25 m I_time
    • 日m I_time
    • 解决
    • (x Out
    • 记者n出
    • x Out
    • x B_person_name
    • 施宇翔nr I_person_name
    • x Out
    • 通讯员n B_person_name
    • x Out
    • 方英nr B_person_name
    • )x Out
    • 毒贩n Out
    • 很zg Out
    • “x Out
    • 时髦nr Out
    • “x Out
    • ,x Out
    • 用p out
    • 微信vn B_product_name
    • 交易n Out
    • 毒品n Out
    • .x Out
    • 没有出去
    • 料想v Out
    • 警方n B_person_name
    • 也d out

1 个答案:

答案 0 :(得分:0)

你正朝着正确的方向调试。问题确实在于你的模板文件。

您的培训数据有3列(第0列:word,第1列:pos-tag和第2列:tag)。

您不能使用tag作为功能,但您的模板文件在许多功能定义中都引用了它(即第2列)(参见U20至U29)。删除/更正这些后,您的培训应该有效。

希望这会有所帮助:)

您还可以查看这些视频教程,以便更好地了解模板文件和使用CRF ++训练NER:

1)1030 Got error 28 from storage engine

2)https://youtu.be/GJHeTvDkIaE