Spancat:解决重叠实体的NLP技术

3 阅读2分钟

PyData Global 2022: Spancat

核心技术内容

命名实体识别模型可能无法处理多种多样的文本跨度,但Spancat绝对可以!在开源的NLP库spaCy中,创建了一个NER模型来处理重叠和任意的文本跨度。通过这场聚焦解决方案的演讲和实际应用,深入了解命名实体识别、其局限性以及如何解决这些问题。

什么是NER?Spancat是什么?

  • NER(命名实体识别)的局限性
  • Spancat与NER的不同之处

文本分类示例:

这很棒,但它也引起了头痛。这也很棒,但它引起了头痛。这针对关节疼痛很棒。
更多信息:explosion.ai/blog/health…
标签:文本分类, 文本分类

这种药帮助缓解了关节疼痛并提高了活动能力。然而,现在开始感到头晕和头痛。
标签:COND, COND, COND, BENEFIT, ADE, ADE, BENEFIT

可定制性而不牺牲开发者体验

  • 可以针对特定用例进行定制
  • 容易上手项目
  • 配置和实现可互换
  • 合理的默认设置
  • 透明

配置文件中的建议器

[components.spancat.suggester]
@misc = "spacy.ngram_suggester.v1"
sizes = [1,2,3]

[components.spancat.suggester]
@misc = "custom_suggester.v1"
max_output = 10
配置 (config.cfg)
  • 单一事实来源
  • 预设配置帮助你快速开始
  • 通过替换组件进行定制
  • 记录所有默认设置

工作流程示例

文本:"This has helped my joint pain."

分类器标签:condition (条件)

词元置信度
This0.1
has helped0.1
helped my0.1
my joint0.25
joint pain0.99

建议器:n-gram (n=2)
建议组合:"This has", "has helped", "helped my", "my joint", "joint pain"

可互换的建议器函数

  • 子树建议器:基于句法依赖
  • 块建议器:名词块迭代器
  • 句子建议器:完整句子
  • n-gram建议器:特定数量的词元
  • SpanFinder:机器学习方法,学习起始和结束词元

了解更多:github.com/explosion/spacy-experimental#span-finder

Spancat的优势

  • 通过建议器函数显式控制候选跨度
  • 使模型偏向精确率或召回率
  • 访问置信度分数
  • 覆盖整个跨度的标签概率
  • 包含跨度的完整上下文
  • 对边缘不敏感
  • 不预测基于单个词元的标签
  • 对其他类型的短语或重叠跨度更有用

感谢聆听!FINISHED