【问题标题】:faliure in reading training data: tagger.cpp (393) CRF++读取训练数据失败:logger.cpp (393) CRF++
【发布时间】:2017-05-09 01:50:10
【问题描述】:

当我在训练数据 (train.txt) 上运行 CRF++ 时,出现以下错误

C:\Users\2012\Desktop\CRF_Software_Package\CRF++-0.58>crf_learn template train.d
ata model
CRF++: Yet Another CRF Tool Kit
Copyright (C) 2005-2013 Taku Kudo, All rights reserved.

reading training data: tagger.cpp(393) [feature_index_->buildFeatures(this)]
0.00 s

我的训练数据包含 Unicode 字符,数据是使用记事本保存的(编码 = Unicode big indian)

我不确定是模板问题还是训练数据格式问题。如何检查训练数据的格式?

【问题讨论】:

  • 您找出问题所在了吗?我得到了同样的结果,我的 template_file 只包含U01:%x[0,1],请您指出解决方案吗?
  • 您只需更改包含训练集的文件的编码。尝试使用 UTF-8。
  • @Wahedsaw 我将编码更改为 UTF-8,仍然是同样的错误。您还知道其他解决方案吗?
  • @cerr 您的问题可能有所不同。 [0,1] 可能是指存储标签的列,您不能这样做!

标签: c++ crf++


【解决方案1】:

我认为这是因为您的模板文件。 请检查您是否已将最后一列作为黄金标准作为培训特征。列索引从 0 开始。 例如,如果您的 BIO 文件中有 6 列。 模板不应包含类似 %x[0,5]

的内容

【讨论】:

  • 我想我有类似的问题here你知道如何解决吗?
【解决方案2】:

问题出在模板文件上 检查您的功能是否有错误的“语法” IE U10:%x[-1,0]/%[0,0]

您意识到在第二个 % 之后缺少“x” 更正后的行应如下所示 U10:%x[-1,0]/%x[0,0]

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,文件是 UTF-8,模板文件和训练文件的格式肯定是正确的。原因是 CRFPP 预计输入文件中最多有 1024 列。如果它在这种情况下输出适当的错误消息,那就太好了。

    【讨论】:

      【解决方案4】:

      问题不在于 Unicode 编码,而在于模板文件。

      看看这个类似的Q:The failure in using CRF+0.58 train NE Model

      【讨论】:

        猜你喜欢
        • 2017-08-11
        • 2022-01-02
        • 2017-12-02
        • 2014-05-18
        • 1970-01-01
        • 2020-06-19
        • 2016-06-20
        • 1970-01-01
        • 2017-08-09
        相关资源
        最近更新 更多