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 (条件)
| 词元 | 置信度 |
|---|---|
| This | 0.1 |
| has helped | 0.1 |
| helped my | 0.1 |
| my joint | 0.25 |
| joint pain | 0.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