gpt4 book ai didi

linux - CRF+0.58训练NE模型失败

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:18 25 4
gpt4 key购买 nike

当我使用CRF++0.58对NE建模时程序出现问题:

“读取训练数据:tagger.cpp(399) [feature_index_->buildFeatures(this)] 0.00s”

  1. 开发环境:
    • 红帽linux 6.5,gcc 5.0,CRF++0.58
  2. 书面特征模板:
    • 模板
  3. 数据集:
    • Boson_train.txt
    • 玻色子测试.txt
    • 第一列是words,第二列是pos,第三列是NER tagger
  4. 问题:
    • 当我想训练 NER 模型时,我输入这句话“crf_learn -f 3 -c 4.0 template Boson_train crf_model”,我得到了此通知,“读取训练数据:tagger.cpp(399) [feature_index_->buildFeatures(this)] 0.00s”。我不明白C++ 语言,所以我无法解决问题。
  5. 我试过的方法:
    • 1.更改数据集的编码类型。我使用 Notepad++ 将“没有BOM的utf-8”更改为“utf-8”。它没有用。
    • 2. 将分隔符从“\t”更改为“”(空格)。它没有用。
    • 3.而且我认为模板可能是错误的。所以我使用 crf++0.58/example/seg/template 进行测试。有效。但是这个模板 很简单,所以我使用/example/JapaneseNE/template ,它与我的功能模板更相似。它没有用。然后,我检查 JapaneseNE example 它运行良好。所以我很困惑。有没有人可以帮助我。
  6. 模板

    • 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]
  7. Boson_train
    • 浙江 ns B_product_name
    • 在线b I_product_name
    • 杭州 ns I_product_name
    • 4 米 B_time
    • 月 m I_time
    • 25 米 I_time
    • 日 m I_time
    • 消息输出
    • ( x 输出
    • 记者 n Out
    • x 输出
    • x B_person_name
    • 施宇翔 nr I_person_name
    • x 输出
    • 通讯员 n B_person_name
    • x 输出
    • 方英nr B_person_name
    • ) x 输出
    • 毒贩n Out
    • 非常zg Out
    • “x 输出
    • 时辰nr Out
    • ” x 输出
    • , x出
    • 用p输出
    • 微信vn B_product_name
    • 交易n Out
    • 毒品n出
    • 。 x出
    • 没有诉出
    • 料想出
    • 警方n B_person_name
    • 也出去了

最佳答案

您的调试方向正确。问题确实出在您的模板文件上。

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

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

希望这有帮助:)

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

1) https://youtu.be/GJHeTvDkIaE

2) https://youtu.be/Ur5umC4BwN4

关于linux - CRF+0.58训练NE模型失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com