spaCy spancat训练在除"sc"之外的span组上无法正常工作,

axzmvihb  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(60)

如何复现行为
span_key[components.spancat_singlelabel][components.spancat] 部分中不是 "sc" 时,训练输出如下:

ℹ Pipeline: ['sentencizer', 'tok2vec', 'spancat_singlelabel']
ℹ Set annotations on update for: ['sentencizer']
ℹ Initial learn rate: 0.001

E    #       LOSS TOK2VEC  LOSS SPANC...  SENTS_F  SENTS_P  SENTS_R  SPANS_SC_F  SPANS_SC_P  SPANS_SC_R  SCORE
---  ------  ------------  -------------  -------  -------  -------  ----------  ----------  ----------  ------
  0       0          0.00          19.33   100.00   100.00   100.00        0.00        0.00        0.00    0.50
  0     200          5.46         409.10   100.00   100.00   100.00        0.00        0.00        0.00    0.50
  0     400         10.51          96.83   100.00   100.00   100.00        0.00        0.00        0.00    0.50
  0     600         10.37          77.10   100.00   100.00   100.00        0.00        0.00        0.00    0.50
  0     800          8.99          99.86   100.00   100.00   100.00        0.00        0.00        0.00    0.50
  0    1000          9.52         100.14   100.00   100.00   100.00        0.00        0.00        0.00    0.50
  0    1200          6.18          62.30   100.00   100.00   100.00        0.00        0.00        0.00    0.50

我以为我疯了 :)
这似乎是评估步骤中的一个bug,我没有进一步调查,抱歉。
其他部分似乎都能正常工作:

python -m spacy debug data config.cfg

对非"sc"值感到满意。
此外,标签从训练数据集中获取并在 meta.json 中正确显示。
在我将 span_key 改回默认的 "sc" 后,我得到了这个:

E    #       LOSS TOK2VEC  LOSS SPANC...  SENTS_F  SENTS_P  SENTS_R  SPANS_SC_F  SPANS_SC_P  SPANS_SC_R  SCORE
---  ------  ------------  -------------  -------  -------  -------  ----------  ----------  ----------  ------
  0       0          0.00          19.33   100.00   100.00   100.00       96.81       96.81       96.81    0.98
  0     200          6.64         421.19   100.00   100.00   100.00       99.32       99.32       99.32    1.00
  0     400          8.43          82.30   100.00   100.00   100.00       99.43       99.43       99.43    1.00
  0     600          9.34          71.43   100.00   100.00   100.00       99.45       99.45       99.45    1.00
  0     800          9.28         107.05   100.00   100.00   100.00       99.59       99.59       99.59    1.00
  0    1000          8.78          89.08   100.00   100.00   100.00       98.95       98.95       98.95    0.99

另外,不确定为什么句子指标会出现——我正在使用不可训练的简单分词器。这并不重要,显然。

您的环境

  • spaCy版本: 3.6.1
  • 平台: macOS-12.4-x86_64-i386-64bit
  • Python版本: 3.10.11
  • Pipelines: en_core_web_sm (3.6.0)
x6h2sr28

x6h2sr281#

你好,@nrodnova,感谢你报告这个问题!我们会进行调查。

zfciruhq

zfciruhq2#

这可能是由于您的分数权重没有正确配置,因为分数权重属性的名称是从 span_key 的值派生的。例如,如果 span_key == "sc" ,则分数权重配置可能如下所示:

[training.score_weights]
spans_sc_f = 1.0
spans_sc_p = 0.0
spans_sc_r = 0.0

我建议您将此配置添加到其中(如果已经存在,请更新它),以反映您实际的 span_key 。例如,如果 span_key == "myspankey" :

[training.score_weights]
spans_myspankey_f = 1.0
spans_myspankey_p = 0.0
spans_myspankey_r = 0.0
bqucvtff

bqucvtff3#

@rmitsch 多谢,这很有道理。我会测试一下并回复。如果这个方法可行,我会很高兴地将其添加到文档中。

相关问题