named-entity-recognition - 带有自定义标签的 SparkNLP 的 NerCrfApproach
问题描述
我正在尝试NerCrfApproach
使用 CoNLL 格式的数据集训练 SparkNLP 模型,该数据集具有产品实体的自定义标签(如 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 倍于原始大小的数据集(就句子而言)来解决这个问题,我能够获得有意义的结果,即使对于我的自定义标签也是如此。
推荐阅读
- python - Tkinter 对齐多个帧
- symfony - 教义不在连接表中
- javascript - mirth javascript 翻译返回错误
- r - 如何根据 R 中两列中的值组合过滤我的数据集
- apache-spark - 如何在 PySpark Pipeline 中使用 XGboost
- c - C 中的有序列表仅返回一个节点(头部被覆盖)
- elasticsearch - 在 Elasticsearch 中使用通配符进行不区分大小写的搜索
- android - 应用程序启动时出现错误“调用 AppRegistery.runApplication 时出错”
- python - 'numpy.float64' 对象不能解释为整数,但我无法确定它在哪里要求整数
- javascript - 用 html 内容中的 iframe 替换 youtube 链接?