首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spacy培训两个连续的NER管道

在Spacy培训两个连续的NER管道
EN

Stack Overflow用户
提问于 2021-04-25 07:14:42
回答 1查看 274关注 0票数 1

我正在进行一个训练分类器以识别文本中引文的项目。我们所处理的引文往往是非常混乱的。以下是一些引用的例子:

  • 见A册第3章第7段
  • 见A书第3章第7段
  • 见A书第7段的“某些章节标题”一章

我们已经确定了少数实体往往出现在这些引文中。例如,“书名”、“章号”、“章名”、“段号”。

该项目分为两个阶段:

  1. 文本引文的二元分类
  2. 引文中引文实体的分类

Spacy (我们正在使用v3)是否有可能有两个连续的NER管道?我希望分类器首先标记引文,然后标记每个引文中的实体。

我能够用下面的代码用两个NER管道实例化一个模型:

代码语言:javascript
复制
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)

我的问题是如何分别训练每根管子。通常,Spacy需要以下形状的数据来训练NER:

代码语言:javascript
复制
{
    "text": <TEXT>,
    "spans": [<LIST OF NAMED ENTITY SPANS>]
}

如何区分培训数据中每个管道的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-26 04:36:24

这其中有几个部分。

  1. 您可以在一个spaCy管道中拥有两个NER组件,但是由于问题2和问题3,这将无法按照您希望的方式工作。
  2. 管道不能在下游组件的培训期间设置注释。这是一个正在努力解决的限制,应该很快得到解决。
  3. NER注释不能重叠。这是一个设计决策,不会很快改变。它可以与自定义组件一起工作,但它是额外的工作。

我希望分类器首先标记引文,然后标记每个引文中的实体。

您是否确实需要单独使用整个引文标签,还是将其设计为一个两阶段的过程,以提高性能?如果是后者,我会先试着进行第二阶段详细注释的培训,看看您是否真的有问题;我怀疑两个阶段的过程实际上会使事情变得更简单。

如果您实际上需要整个“引文”,那么您只需将详细实体的链提取到单个跨度中,就不需要有单独的模型了。

我建议您仔细看看文档中关于模型与规则相结合的部分。它有一些例子,比如将个人姓名扩展到包括or .或or .这样的标题,或者使用依赖解析信息,这些都似乎适用于您的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67250719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档