跳到主要内容

项目:信息抽取

本节定位

信息抽取项目的目标不是让模型“读懂所有文本”,而是把文本中的关键实体、关系或字段稳定地转成结构化数据。它是传统 NLP、RAG 文档处理和 LLM 结构化输出之间的重要桥梁。

项目目标

做一个“小型课程公告信息抽取器”:输入一段课程公告或活动通知,输出时间、地点、主题、讲师、适合人群等结构化字段。

最小版本

基础版可以先不训练模型,使用规则和正则完成字段抽取。例如从文本中抽取日期、时间、地点等格式较明显的信息。

import re

text = "本周六 19:30 在腾讯会议举行 RAG 入门直播,主讲人是张老师。"

result = {
"time": re.findall(r"\d{1,2}:\d{2}", text),
"platform": "腾讯会议" if "腾讯会议" in text else None,
"topic": "RAG 入门" if "RAG 入门" in text else None,
}

print(result)

这个版本虽然简单,但能帮助你理解信息抽取的核心:从非结构化文本中提取可用字段。

标准版本

标准版可以引入 NER 或 LLM 结构化输出。你可以用现成 NER 模型识别人名、机构、地点,再用规则或 Prompt 把结果组织成 JSON。重点不是追求完美,而是建立“抽取结果可检查”的流程。

建议输出格式如下:

{
"event_name": "RAG 入门直播",
"time": "周六 19:30",
"location": "腾讯会议",
"speaker": "张老师",
"audience": "AI 应用初学者",
"confidence": "medium"
}

挑战版本

挑战版可以加入批量抽取和人工校验。比如输入 20 条课程公告,系统批量生成 JSON,然后人工标记哪些字段正确、哪些字段缺失、哪些字段抽错。最后统计字段级准确率。

字段正确率常见错误
time90%相对时间没有标准化
location85%线上平台和地点混淆
speaker80%职称和姓名边界不清
topic75%主题过长或遗漏关键词

和 RAG / Agent 的连接

信息抽取可以用于 RAG 的文档元数据构建。例如从课程文档中抽取阶段、章节、关键概念、适合人群,然后作为检索过滤条件。它也可以作为 Agent 的工具:当 Agent 需要整理会议、合同、工单或课程资料时,先抽取结构化字段,再做后续决策。

项目交付物

README 中建议包含:项目目标、输入样例、输出 JSON schema、抽取方法、字段解释、评估方式、失败样本和下一步计划。作品集展示时,最好放一组“原文 -> JSON -> 人工修正”的对照表。

常见误区

第一个误区是只展示成功样例,不做字段级评估。第二个误区是 JSON schema 不稳定,导致后续程序无法使用。第三个误区是忽略边界问题,例如“张老师将在北京大学分享”里,北京大学可能是地点,也可能是机构。第四个误区是把 LLM 输出直接入库,不做校验。

版本路线建议

版本目标交付重点
基础版跑通最小闭环能输入、能处理、能输出,并保留一组示例
标准版形成可展示项目增加配置、日志、错误处理、README 和截图
挑战版接近作品集质量增加评估、对比实验、失败样本分析和下一步路线

建议先完成基础版,不要一开始就追求大而全。每提升一个版本,都要把“新增了什么能力、怎么验证、还有什么问题”写进 README。

练习

  1. 设计一个课程公告抽取 JSON schema。
  2. 用 5 条样例公告测试规则抽取,记录每个字段是否正确。
  3. 找 3 个抽取失败案例,分析是实体边界错、字段缺失还是 schema 设计不清。
  4. 思考:这些结构化字段如何帮助后续 RAG 检索?

过关标准

完成项目后,你应该能说明信息抽取和文本分类、NER 的区别,能设计稳定的输出 schema,能用字段级指标评估抽取质量,并能解释它如何服务 RAG 或 Agent 系统。