信息抽取管道构建实用技巧
信息抽取管道构建实用技巧
什么是信息抽取
📝 将文本转化为数据。从财报中创建数据库,或从招聘信息中提取技能,或从社交媒体中获取产品反馈——还有更多应用。
🗂️ 包含多个子任务。文本分类、命名实体识别、实体链接、关系抽取都可以成为信息抽取管道的一部分。
:bullseye: 主要是静态模式。大多数人一次只解决一个问题,因此本文将重点讨论这种情况。
信息抽取流程示例
数据库:"Hooli筹集500万美元革新搜索,由ACME Ventures领投"
- 命名实体识别:识别公司实体(COMPANY)
- 货币标准化:识别金额实体(MONEY)
- 实体消歧:通过自定义数据库查找进行实体解析
- 关系抽取:识别投资者关系(INVESTOR)
检索增强生成 vs 信息抽取检索
RIE(通过信息抽取检索):
- 问题 → 文本到SQL查询 → 数据
- NLP管道 → 文本 +
RAG(检索增强生成):
- 问题 → 向量化查询 → 答案
- 向量数据库 → 文本片段 + 向量化器
演讲大纲
- 训练技巧
- 建模技巧
- 数据标注技巧
监督学习仍然非常强大
- 示例数据具有超强能力
- 示例数据可以完成指令无法完成的任务
- 上下文学习无法规模化使用示例
监督学习的挑战
- 产品愿景与鸡生蛋问题
- 准确性评估困难
- 训练和评估的不确定性
- 标注数据获取
- 标注方案设计
训练结果难以解释
- :grimacing_face: 模型完全无法训练:数据是否有问题?
- :face_with_raised_eyebrow: 模型学习效果仅略优于随机:可能是数据、超参数或建模问题
- :face_holding_back_tears: 结果尚可:但能否更好?如何知道是否还有提升空间?
- :thinking_face: 结果好得不真实:可能数据处理有问题
形成和验证假设
科学思维模式:
- 假设:这个部分有问题
- 问题:如果这个部分有问题,我应该看到什么现象?
- 测试:实际情况是否如此?
训练调试示例
- :chart_decreasing: 使用极少量数据训练会发生什么?模型是否收敛?
- :shuffle_tracks_button: 随机化训练标签会发生什么?模型还能学习吗?
- 🪄 模型权重在训练过程中是否有变化?
- 🧮 梯度的均值和方差是多少?
优先考虑鲁棒性而非准确性
- :chart_increasing: 更好的改进需要真正更好
- 📦 更大的模型通常不太实用
- 🤏 需要在小样本上工作
- 🌪️ 大模型在小批量情况下不太稳定
迭代数据和缩小规模
原型阶段:
- 使用GPT-4 API进行提示工程
- 通过spacy-llm将非结构化响应转换为结构化数据
生产阶段:
- 使用蒸馏的特定任务组件
- 模块化、小巧快速、数据私有
配置示例
[components.llm.model]
@llm_models = "spacy.GPT-4.v2"
支持的任务类型:
- 命名实体识别
- 文本分类
- 关系抽取
数据标注策略
需要多少数据?
训练曲线诊断:
- 使用25%、50%、75%、100%的数据分别训练4次
- 观察性能变化趋势
评估注意事项:
- ⚠️ 需要足够数据以避免报告无意义的精度
- 📊 每个有效数字需要10个样本的经验法则
- 1,000个样本相当不错——足以区分94%和95%的精度
保持任务小型化
良好的实践:
for annotation_type in annotation_types:
for example in examples:
annotate(example, annotation_type)
不佳的实践:
for example in examples:
for annotation_type in annotation_types:
annotate(example, annotation_type)
人类也有缓存机制,保持任务小型化可以提高标注效率。
使用模型辅助
- 🔥 建议提高效率:常见情况很常见,预设建议可大幅加快标注速度
- :chart_increasing: 建议提高准确性:需要一致标注常见情况,人类在这方面表现不佳
人机协同蒸馏流程
- 持续评估基线
- 提示工程
- 迁移学习
- 模型蒸馏
Prodigy LLM标注示例
$ prodigy ner.llm.correct todo_eval ./config.cfg ./examples.jsonl
启动Web服务器后,开发者可以通过GPT-4 API进行标注。
标注从自家开始
- 制定标注指南
- 召开标注会议
- 确保标注一致性
关键要点总结
📒 形成和验证假设
⚗️ 优先考虑鲁棒性
🔮 缩小规模并迭代
🤖 想象自己是模型
🚀 完成到生产的管道
:high_voltage: 敏捷并自行标注
:bullseye: 保持任务小型化
🤝 使用模型辅助
通过遵循这些实用技巧,可以更有效地构建和部署信息抽取管道,实现从文本到结构化数据的转化。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
公众号二维码


浙公网安备 33010602011771号