带有自定义标签的 SparkNLP 的 NerCrfApproach
SparkNLP's NerCrfApproach with custom labels
我正在尝试使用 CoNLL 格式的数据集训练 SparkNLP NerCrfApproach
模型,该数据集具有产品实体(如 I-Prod、B-Prod 等)的自定义标签。但是,当使用经过训练的模型进行预测时,我只得到“O”作为所有标记的分配标签。当使用在来自 SparkNLP 研讨会示例的 CoNLL 数据上训练的相同模型时,分类工作正常。
(比照https://github.com/JohnSnowLabs/spark-nlp-workshop/tree/master/jupyter/training/english/crf-ner)
所以,问题是:NerCrfApproach
是否依赖于 CoNLL 数据使用的 NER 标签的标准标签集?或者我可以将它用于任何自定义标签吗?如果可以,我是否需要以某种方式指定这些标签?我的假设是标签是从训练数据中推断出来的。
干杯,
马丁
更新:毕竟问题可能与标签无关。我尝试用 CoNLL 标准标签替换我的自定义标签,但我仍然没有得到预期的分类结果。
事实证明,这个问题不是由标签引起的,而是由数据集的大小引起的。为了开发目的,我使用了一个相当小的数据集。这个数据集不仅非常小,而且严重不平衡,“O”标签比其他标签多得多。通过使用原始大小的 10 倍(就句子而言)的数据集来解决此问题,我能够获得有意义的结果,即使对于我的自定义标签也是如此。
我正在尝试使用 CoNLL 格式的数据集训练 SparkNLP NerCrfApproach
模型,该数据集具有产品实体(如 I-Prod、B-Prod 等)的自定义标签。但是,当使用经过训练的模型进行预测时,我只得到“O”作为所有标记的分配标签。当使用在来自 SparkNLP 研讨会示例的 CoNLL 数据上训练的相同模型时,分类工作正常。
(比照https://github.com/JohnSnowLabs/spark-nlp-workshop/tree/master/jupyter/training/english/crf-ner)
所以,问题是:NerCrfApproach
是否依赖于 CoNLL 数据使用的 NER 标签的标准标签集?或者我可以将它用于任何自定义标签吗?如果可以,我是否需要以某种方式指定这些标签?我的假设是标签是从训练数据中推断出来的。
干杯, 马丁
更新:毕竟问题可能与标签无关。我尝试用 CoNLL 标准标签替换我的自定义标签,但我仍然没有得到预期的分类结果。
事实证明,这个问题不是由标签引起的,而是由数据集的大小引起的。为了开发目的,我使用了一个相当小的数据集。这个数据集不仅非常小,而且严重不平衡,“O”标签比其他标签多得多。通过使用原始大小的 10 倍(就句子而言)的数据集来解决此问题,我能够获得有意义的结果,即使对于我的自定义标签也是如此。