【问题标题】:How should properly formatted data for NER in BERT look like?BERT 中 NER 的正确格式化数据应该是什么样子?
【发布时间】:2020-05-29 22:18:22
【问题描述】:

我正在使用 Huggingface 的 transformers 库并希望使用 BERT 执行 NER。我试图找到一个明确的示例,说明如何使用 BERT 正确格式化 NER 的数据。从论文和我发现的 cmets 中我并不完全清楚。

假设我们有以下句子和标签:

sent = "John Johanson lives in Ramat Gan."
labels = ['B-PER', 'I-PER', 'O', 'O', 'B-LOC', 'I-LOC']

我们输入到模型中的数据会是这样的吗:

sent = ['[CLS]', 'john', 'johan',  '##son', 'lives',  'in', 'ramat', 'gan', '.', '[SEP]']
labels = ['O', 'B-PER', 'I-PER', 'I-PER', 'O', 'O', 'B-LOC', 'I-LOC', 'O', 'O']
attention_mask = [0, 1, 1, 1, 1, 1, 1, 1, 1, 0]
sentence_id = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

?

谢谢!

【问题讨论】:

  • 这看起来不错。

标签: python nlp format bert-language-model huggingface-transformers


【解决方案1】:

2021-08-27 更新:教程链接指向一个旧教程,我不再完全推荐它,因为它不使用 Huggingface 的便利库 datasets

实际上有 a great tutorial 用于拥抱脸文档页面上的 NER 示例。具体来说,它还详细介绍了provided script 如何进行预处理。具体来说,有一个指向外部贡献者的preprocess.py 脚本的链接,该脚本基本上将数据从 CoNLL 2003 格式转换为 huggingface 库所需的任何内容。我发现这是断言我具有正确格式的最简单方法,除非您有一些可能想要合并的特定更改,否则这可以让您超级快速地开始,而不必担心实施细节。

链接的示例脚本还提供了有关如何将各个输入输入模型本身的足够详细信息,但通常,您在上述输入模式中是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多