我正在做一个项目来训练分类器来识别文本中的引用。我们正在处理的引文往往非常杂乱无章。以下是一些示例引用:
- 见 A 册第 3 章第 7 段
- 见 A 册第 3 章第 7 段
- 见 A 卷第 7 段“某章标题”一章
我们已经确定了少数倾向于出现在这些引用中的实体。例如“书名”、“章号”、“章名”、“段号”。
该项目分为两个阶段:
- 文本中引文的二进制分类
- 引文内引文实体的分类
Spacy(我们正在使用 v3)是否有可能拥有两个连续的 NER 管道?我希望分类器首先标记引文,然后再标记每个引文中的实体。
我能够使用以下代码实例化具有两个 NER 管道的模型:
from spacy.lang.en import English
nlp = English()
nlp.add_pipe("ner", name="ner1", last=True)
ner1 = nlp.get_pipe("ner1")
ner1.add_label("Citation")
nlp.add_pipe("ner", name="ner2", last=True)
ner2 = nlp.get_pipe("ner2")
for label in ["Book Title", "Chapter Number", "Chapter Name", "Paragraph Number"]:
ner2.add_label(label)
我的问题是如何分别训练每个 NER 管道。通常,Spacy 需要以下形状的数据来训练 NER:
{
"text": <TEXT>,
"spans": [<LIST OF NAMED ENTITY SPANS>]
}
如何区分训练数据中每个管道的数据?