为 BERT-NER 标记 100k 数据集

问题描述 投票:0回答:1

我如何有效地标记数据集直到 100k++?我将把它用于 BERT-NER?如果有方法,你能给我类似的代码/教程/源代码来实现吗?谢谢!顺便说一句,我将用于我的 BERT-NER 的数据集是 N2C2 NLP 数据集

nlp bert-language-model named-entity-recognition
1个回答
0
投票

如果主要焦点是使用命名实体标记许多文档(100k+),您可以运行行业标准 NER 工具,例如 spacy:https://spacy.io/usage/linguistic-features#named-entities。您还可以使用您提到的 BERT NER 模型来标记所有这些数据,但它可能更具挑战性,例如,在输入数据格式或需要多长时间方面。如果您在支持模型的强大环境(例如具有 GPU 的机器)中运行所选模型,则可以在时间消耗方面实现“高效”标记。质量方面的“高效”在很大程度上取决于您选择的模型,例如 Huggingface 上的 BERT NER 报告准确率约为 90%。

人工注释当然更可靠,但既然你提到了 100k+ 文档,由于成本高昂,这可能不是一个可行的选择。另一方面,如果目标是使用 n2c2 数据集微调 BERT NER 模型,那么您可能需要少于 100k+ 的数据来进行微调。手动注释一些数据实例可能是有意义的,检查微调模型的性能是否足以满足您的应用程序的需要,否则尝试根据黄金注释自动标记更多数据。在这种情况下,Snorkel 评论中提到的一些程序化标签可能会有所帮助:https://snorkel.ai/named-entity-recognition/

为了微调 NER 模型,数据(在您的例子中为 n2c2)需要采用适合标记器和您将使用的分类模型的格式。例如,您提到的 BERT NER 可以在 Huggingface 中找到,数据格式使用 BIO 标签,如下所示:https://huggingface.co/dslim/bert-base-NER。有关使用 Huggingface/Pytorch 在 Python 中进行 NER / Token 分类的更多信息和代码可以在这里找到:https://github.com/huggingface/transformers/tree/main/examples/legacy/token-classification。由于这篇文章提到了 BERT NER,我认为外包任务以避免编码(需要额外成本)不是一种选择,例如,使用一些 OPENAI 调用进行标记或使用云提供商的开箱即用 NER 解决方案。

如果您在 Google 上输入“bert ner”,有许多关于如何使用 Huggingface 或 Pytorch 和自定义数据集进行命名实体识别的分步教程,例如,如何应用模型,以及如何训练/微调它们。 Stackoverflow 还提供了使用 BERT NER 进行训练/推理的代码:Bert NER 模型开始和结束位置微调后无。 n2c2 数据集似乎是医学数据集,因此您可能会受益于使用使用医学领域数据训练的 NER 模型。

© www.soinside.com 2019 - 2024. All rights reserved.