2

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

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

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]

?

谢谢!

4

1 回答 1

2

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

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

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

于 2020-02-14T09:59:27.230 回答