信息抽取
问题
信息抽取的主要任务有哪些?LLM 时代信息抽取有哪些新变化?
答案
一、信息抽取任务
二、关系抽取
从文本中抽取实体之间的关系:
输入: "马云创办了阿里巴巴"
输出: (马云, 创办, 阿里巴巴)
主语 关系 宾语
| 方法 | 特点 |
|---|---|
| 管道方法 | 先 NER → 再分类关系 |
| 联合抽取 | 同时抽取实体和关系 |
| LLM 结构化输出 | Prompt + JSON Schema |
三、事件抽取
识别文本中的事件及其要素:
输入: "2024年1月苹果公司裁员600人"
输出: {
事件类型: "裁员",
时间: "2024年1月",
主体: "苹果公司",
数量: "600人"
}
四、LLM 做信息抽取
LLM 配合 Structured Output 是当前信息抽取的高效方案:
const schema = z.object({
entities: z.array(z.object({
name: z.string(),
type: z.enum(['PER', 'ORG', 'LOC', 'TIME']),
})),
relations: z.array(z.object({
subject: z.string(),
predicate: z.string(),
object: z.string(),
})),
});
LLM vs 传统信息抽取
| 对比 | 传统方法 | LLM |
|---|---|---|
| 训练数据 | 需要大量标注 | 零样本/少样本 |
| Schema 变更 | 需要重新训练 | 修改 Prompt 即可 |
| 精度 | 特定领域高 | 通用场景好 |
| 速度 | 快 | 慢 |
| 成本 | 训练一次后低 | API 调用付费 |
五、知识图谱构建
信息抽取是构建知识图谱的核心步骤:
常见面试问题
Q1: 信息抽取在 RAG 中有什么应用?
答案:
- 文档预处理:对入库文档进行实体和关系抽取,丰富元数据
- 结构化索引:用知识图谱补充向量检索
- 实体链接:将查询中的实体链接到知识库
- Graph RAG:结合知识图谱和向量检索的混合 RAG
Q2: 如何评估信息抽取的效果?
答案:
- 精确率:抽取结果中正确的比例
- 召回率:应该被抽取的实体/关系中被正确抽取的比例
- F1 值:精确率和召回率的调和平均
- 对于 LLM 抽取:还需评估 JSON 格式正确性和字段完整性