半结构化知识抽取
Views: --
对应 PPT:第4讲 主要内容:百科类抽取(DBpedia)、Web 包装器、Web Table 抽取
1. 什么是半结构化数据
半结构化数据:用**标签(tag)**对数据进行结构划分或分离语义元素的数据。和结构化数据相比,没有严格的数据结构和关系定义。
- 包括:HTML、JSON、XML、NoSQL 数据库
- 标签划分了页面元素的层次(
<table>,<div>,<h1>) - 优点:扩展性强、灵活性好
- 缺点:结构可变,模板可能随时改
半结构化 vs 结构化 vs 非结构化
| 类型 | 结构 | 例子 | 抽取方法 |
|---|---|---|---|
| 结构化 | 严格 schema | 关系数据库 | D2R(DM/R2RML) |
| 半结构化 | 标签+自由 | HTML/JSON/XML | 包装器 / 模板 / 实体链接 |
| 非结构化 | 无结构 | 文本 | NER/RE/EE |
2. 百科类知识抽取(重点:DBpedia 框架)
2.1 背景
- Wikipedia 是最大的半结构化知识源之一
- DBpedia = Wikipedia 知识图谱化,从 Wikipedia 抽取结构化数据,发布为 RDF
2.2 DBpedia 总体框架
页面集合(Page Collections) 目标数据(RDF 三元组)
├─ 本地 Wiki 文章 ↑
└─ 远程 Wiki 文章 │
│
提取器(Extractors)→ 解析器(Parsers)→ 三元组
(特定类型 Wiki 标记) (类型判断/转换)
- 页面集合:本地 + 远程 Wikipedia 文章
- 提取器(Extractors):把特定类型的 Wiki 标记转成三元组
- 解析器(Parsers):判断数据类型、不同单元间转换值
- 目标数据:存储或序列化为 RDF 三元组
2.3 DBpedia 抽取的 12 类信息(期末必背清单)
| # | 信息 | 含义 | 例子 |
|---|---|---|---|
| 1 | 标签(Labels) | 词条标题 → 实体名 | ”蒂姆·伯纳斯-李” → rdfs:label |
| 2 | 摘要(Abstract) | 词条第一段 | 长文本描述 |
| 3 | 跨语言链接 | 不同语言版词条互链 | en: ↔ zh: |
| 4 | 图片(Image) | 词条中的图片链接 | File:Sir_Tim_Berners-Lee.jpg |
| 5 | 重定向(Redirects) | 同义词条关联 | ”TimBL” → “蒂姆·伯纳斯-李” |
| 6 | 消歧(Disambiguation) | 同名歧义实体的内部链接 | ”苹果”:公司/水果/报纸/电影/艺人 |
| 7 | 外部链接 | 词条 → 外网 | 论文/官网 |
| 8 | 页面链接(Pagelinks) | 词条 → 其他 Wiki 词条 | 蕴含实体间关系 |
| 9 | 主页(Homepage) | 公司/机构的官网 | 北航词条中计算机学院主页 |
| 10 | 分类(Categories) | 词条所属类别 | 可用于构建本体 |
| 11 | 地理坐标 | 经纬度 | 城市/地标 |
| 12 | 信息框(Infobox) | 词条的结构化属性 | 最重要:作为实体的属性 |
重要考点:
- Infobox 是 Wikipedia 右侧的属性表,最重要的结构化知识源
- Pagelinks 蕴含实体间关系(链入 = 有关联)
- Categories 可用于构建本体(分类层级 = 本体的 subclass)
- Disambiguation 是消歧任务的关键数据源
- Redirects 是共指消解的关键数据源
3. 包装器(Wrapper)——Web 网页数据抽取的核心
3.1 什么是包装器
包装器(Wrapper)是一种将数据从 HTML 网页中抽取出来,并将其结构化的软件。
- 同一网站页面通常用少量模板编码
- 包装器 = 一组”抽取规则”(XPath / CSS 选择器 / 正则),定位并抽取目标数据
3.2 包装器生成的 3 大方法(期末必背)
| 方法 | 类型 | 核心思路 | 优点 | 缺点 |
|---|---|---|---|---|
| 手工方法 | 人工 | 人工查看 HTML,写 XPath/CSS 选择器 | 准确率高 | 慢、难维护、不能扩展 |
| 包装器归纳 | 监督学习 | 标注样本 → 学习 XPath 规则 → 泛化 | 比手工快 | 需标注、跨模板泛化差 |
| 自动抽取 | 无监督学习 | 聚类相似页面 → 自动学模板 | 无需标注 | 准确率低 |
速记:手工→监督→无监督,人工成本递减,自动化程度递增。
3.3 手工方法
- 步骤:
- 打开 Chrome → F12(开发者工具)
- Elements 标签看 HTML
- 找到目标元素 → 右键 → Copy XPath
- 把 XPath 喂给爬虫,循环跑
- 例子:“万维网”标题的 XPath:
//*[@id="mw-content-text"]/div[1]/p[1]/a[1]
3.4 包装器归纳(4 步)
① 网页清洗(Tidy 工具)→ 规范 HTML
② 网页标注 → 给目标数据加 Label
③ 包装器空间生成 → 生成 XPath 集合 + 归纳规则
④ 包装器评估 → 准确率 + 召回率
归纳示例:
- 标注两个相同类型元素的 XPath:
- A:
//*[@id="mw-content-text"]/div[1]/table[4]/tbody/tr[2]/td[2] - B:
//*[@id="mw-content-text"]/div[1]/table[4]/tbody/tr[3]/td[2]
- A:
- 归纳后:
//*[@id="mw-content-text"]/div[1]/table[4]/tbody/*/td[2] - 把
tr[2]、tr[3]泛化为*(任意行)——这是监督学习的归纳偏置。
评估规则:
- 选准确率更高的(包装器 A 优于 B)
- 召回率相同时选准确率高的
3.5 自动抽取(无监督)
- 思路:同一网站页面用少量模板,通过学习网页的重复模式找模板
- 步骤:
- 包装器训练:聚类相似网页 → 一组相似网页 → 一个包装器;不需要先验知识和人工标注
- 包装器应用:把目标网页与训练样本比较 → 分类 → 选对应包装器
速记:手工靠人、监督靠标注、无监督靠聚类。
4. 网络表(Web Table)抽取
4.1 什么是 Web Table
- Web Table = 网络中内嵌的表格(HTML
<table>) - 特点:使用便利灵活
- 应用:电商、百科、微博、腾讯文档、Wikipedia 等
4.2 数量和价值
- 全球电子表格活跃用户 >40 亿
- Wikipedia 52 万篇文章中可抽 323 万+ 表(Cafarella 2008)
- 有价值信息占比小:141 亿 HTML 表中只有 1.54 亿(1.1%) 是高质量
4.3 网络表分类(必背 4+2 维度)
| 维度 | 类型 | 描述 |
|---|---|---|
| 内容 | 关系(relational) | 描述一系列实体和其属性 |
| 实体(entity) | 描述一个特定实体(学生表、老师表) | |
| 矩阵(matrix) | 三维数据集(标题+行+列) | |
| 其它 | 日历、清单等 | |
| 布局 | 导航(navigational) | 用作网页内容导航 |
| 格式化(formatting) | 用作展示信息 |
实体表 vs 关系表(数据库类比):
- 实体表:存一个对象的属性(Student 表:stuId、stuName、age)
- 关系表:存对象间多对多关系(StudentCourse 表:stuId、courseId)
4.4 网络表的元素(7 个)
| 元素 | 含义 |
|---|---|
| Tp | 表网页题目 |
| Tc | 表题注 |
| TH | 表标题(列头) |
| TE | 表实体(行/单元) |
| T[:j] | 表列 |
| T[i:] | 表行 |
| T[i,j] | 表单元 |
4.5 网络表相关任务(6 大类)
| 任务 | 层级 | 说明 |
|---|---|---|
| 网络表抽取 | 底层 | 从网页中识别、分类、存储表(表语料库构建) |
| 网络表阐释 | 底层 | 表内容 → RDF 三元组 |
| 网络表搜索 | 上层 | 找特定的表 |
| 网络表增广 | 上层 | 用表增强 NLP |
| 知识库增广 | 上层 | 用表补充 KG |
| 问答 | 上层 | 表上做 QA |
速记:2 个底层任务(抽取+阐释)+ 4 个上层应用。
4.6 网络表抽取的 3 个子任务
| 子任务 | 目标 | 特征 | 方法 |
|---|---|---|---|
| 关系表分类 | 预测表是否含关系数据 | 表大小、标签 | 规则 / 分类器(Cafarella 2008) |
| 标题检测 | 识别列头行 | 类似表元数据 | 复用关系表特征 |
| 表类别分类 | 按预定义分类法分类 | 语法+语义 | 规则 / 深度神经网络 |
5. 网络表阐释
5.1 目标
把表的隐含语义显式表达成 RDF 三元组。
5.2 过程(3 步)
① 候选实体生成:单元格字符串 → 知识库候选实体集合
② 实体链接:字符串 → 知识库中具体实体
③ 实体消歧:候选集合多于一 → 选唯一
5.3 实体链接的影响因子(2 个)
| 因子 | 含义 |
|---|---|
| 提及重要性(mention importance) | 每个字符串本身的重要性 |
| 语义相关度(semantic relatedness) | 不同节点之间的语义相关度 |
5.4 实体消歧
- 用 PageRank 算法整合两个影响因子 → 选得分最高的实体作为链接
- PageRank 完成后,删除其他候选实体和相关边,更新图中的边权值
6. PageRank 算法(重要基础)
6.1 思想
重要性(importance)评价网页(实体)。这是一个递归过程:一个网页的重要性既和指向它的网页重要性相关,也影响指向它的网页的重要性。
6.2 物理意义
- 想象用户在网上随机浏览
- 一个网页的 rank = 随机浏览过程在该网页停止的可能性
- 越多的网页指向一个网页,停下来看它的可能性越大
6.3 算法步骤
① 初始化:rank = 1/N(N 个实体,每个 rank = 1/N)
② 权重更新:每个实体的 rank = Σ 来自指向它的实体的 rank 贡献
例:E 被 C 和 D 指向
- C 有 3 个外链 → C 把 1/3 rank 贡献给 E
- D 有 2 个外链 → D 把 1/2 rank 贡献给 E
③ 处理"死胡同":无外链的实体把 rank 平均分给图中所有其他实体
④ 迭代到收敛(实践中加衰减系数加速)
6.4 关键规则
- 无外链(dangling node)的处理:该实体的 rank 平均分给图中所有其他实体
- 物理直觉:用户”找不到目标”时会”随机跳到别处”
- 实践中:用阻尼系数
d(通常 0.85)控制跳转概率:PR(p) = (1-d)/N + d * Σ PR(q)/L(q)
6.5 PageRank 在 KG 中的应用
- 实体消歧:用 PageRank 整合 mention importance + semantic relatedness → 选唯一实体
- 图节点重要性:评估哪个实体/概念”更重要”
7. 实战思考(作业原题,期末可能考)
- 包装器归纳法中可以使用哪些有监督模型? 答:决策树、SVM、CRF、BiLSTM-CRF、序列标注模型等。
- 大模型能否实现包装器? 答:可以,LLM(如 GPT-4)能根据 HTML + 抽取需求直接生成结构化数据,但稳定性、成本、可控性不如传统包装器。
8. 本章脑图
半结构化知识抽取
├── 什么是半结构化数据
│ └── 标签划分+无严格 schema
│
├── 百科类抽取(DBpedia 框架)
│ ├── 页面集合 → 提取器 → 解析器 → RDF
│ └── 12 类抽取信息
│ ├── Labels(实体名)
│ ├── Abstract(摘要)
│ ├── 跨语言链接
│ ├── Image / Redirects
│ ├── Disambiguation(消歧关键)
│ ├── External / Pagelinks(蕴含关系)
│ ├── Homepage / Categories(可构本体)
│ ├── Geo / Infobox(属性表,最重要)
│
├── Web 网页数据抽取
│ ├── 包装器 = 抽取规则(XPath/CSS)
│ └── 3 大方法
│ ├── 手工(人工 XPath)
│ ├── 包装器归纳(监督)
│ └── 自动抽取(无监督聚类)
│
└── Web Table
├── 4 类内容(关系/实体/矩阵/其他)
├── 2 类布局(导航/格式化)
├── 6 大任务
│ ├── 2 底层:抽取、阐释
│ └── 4 上层:搜索、增广、KG 增广、问答
├── 抽取 3 子任务(关系表分类/标题检测/表类别)
└── 阐释 = 实体链接 + 消歧(PageRank)