AOCG-LLM论文解读
一句话概括
这篇论文想做一件事:让大语言模型自动把一堆领域文章,整理成一张机器能读的“知识地图”,也就是本体。
这张地图里包括:有哪些概念、概念之间怎么分类、概念之间有什么关系、有哪些逻辑规则。
先搞懂:什么是“本体”?为什么难做?
你可以把“本体”理解成某个领域的知识骨架。
比如互联网信息服务领域:
- 概念:Web Service、RESTful Web Service、Information Service
- 层次:RESTful Web Service 是 Web Service 的子类,Web Service 是 Information Service 的子类
- 关系:服务提供者“提供”信息服务
- 逻辑规则:子类关系具有传递性
传统做本体,主要靠:
- 专家手工建:质量高,但非常贵、非常慢。
- 规则模板:人工写规则,换领域就不灵。
- 浅层统计学习:能自动一点,但不懂深层语义。
论文指出三个瓶颈: 太依赖专家、难以动态更新、语义利用不足。
大语言模型出现后,大家希望它自动做本体。但直接让普通 LLM 做,也有三个问题:
- 专业领域容易抽错,缺少纠错机制。
- 只会抽“主语-谓语-宾语”这种扁平三元组,不会建层次。
- 多数方法只做一部分,不能端到端全自动。
所以论文提出 AOCG-LLM+。
论文核心思想:语义分布驱动
论文的核心假设是:
如果把实体变成高维语义向量,语义相近的实体会自然聚在一起。 这些“簇”可以对应本体中的“类”;簇与簇之间的远近和嵌套,可以对应本体中的层次和关联。
传统方法是“人写规则/模板”,这篇论文转向“从数据里发现语义结构”。
它主要靠三件事:
- RLHF 驱动的实体关系抽取:让 LLM 抽三元组,人类反馈纠错。
- 动态半径自适应聚类 DRAC:把语义相近的实体聚成概念类,并形成层次树。
- 端到端自动本体生成:把聚类结果写成 OWL/RDF 本体文件,并自动加逻辑公理。
方法总览:六阶段流水线
样例
目标领域 T:互联网信息服务
相似度阈值 Θ:0.7
收集到的文档:
- d1:RESTful Web Service is a subclass of Web Service. Web Service is a subclass of Information Service. A Service Provider provides Information Service.
- d2:Web Hosting Service is a kind of Web Service. A Service Provider provides Web Hosting Service.
- d3:IoT Information Service is equivalent to Internet of Things Information Service.
阶段 1:领域数据收集
目标:自动找到和目标领域相关的文档,形成领域数据库。
论文做法:
- 定义目标领域 T。
- AI agent 通过爬虫或 API 自动收集文档 D = {d1, d2, …, dm}。
- 用 LLM 给每篇文档生成摘要 sum(dk)。
- 计算文档和目标领域的相似度 S(dk, T)。
- 如果 S(dk, T) ≥ Θ,就保留;否则丢弃。
- 用预过滤、分布式并行、增量爬取降低开销。
贯穿样例:
假设 AI agent 收集到 d1、d2、d3,并计算相似度:
| 文档 | LLM 摘要 | 相似度 | 是否保留 |
|---|---|---|---|
| d1 | 讨论 Web Service 与 Information Service 的层次关系 | 0.91 | 是 |
| d2 | 讨论 Web Hosting Service 和 Service Provider | 0.85 | 是 |
| d3 | 讨论 IoT Information Service 的等价概念 | 0.78 | 是 |
最终领域数据库:
D_T =
输出:领域语料库 D_T。
阶段 2:实体-关系抽取
目标:从文档中抽出“主语-谓语-宾语”三元组。
论文做法:
- 用 few-shot 提示 LLM 抽取三元组。
- 人工随机抽样检查。
- 对错误或遗漏,用 RLHF 迭代修正提示词。
- 修正函数可以写成:
T_i' = Revise(T_i, Err(T_i))
其中 T_i 是初始三元组,Err(T_i) 是错误子集,T_i' 是修正后的三元组。
贯穿样例:
LLM 初始抽取结果:
| 来源 | 初始三元组 |
|---|---|
| d1 | (RESTful Web Service, is a subclass of, Web Service) |
| d1 | (Web Service, is a subclass of, Information Service) |
| d1 | (Service Provider, provides, Information Service) |
| d2 | (Web Hosting Service, is a kind of, Web Service) |
| d2 | (Service Provider, provides, Web Hosting Service) |
| d3 | (IoT Information Service, is a subclass of, Internet of Things Information Service) |
人工抽样发现一个错误:
d3 说的是 “is equivalent to”,但 LLM 抽成了 “is a subclass of”。
这会导致逻辑错误:等价关系被误判为子类关系。
RLHF 反馈后修正:
| 修正后三元组 |
|---|
| (IoT Information Service, is equivalent to, Internet of Things Information Service) |
同时把 “is a kind of” 统一规范为 “is a subclass of”:
| 修正后三元组 |
|---|
| (Web Hosting Service, is a subclass of, Web Service) |
最终得到较干净的三元组集合:
- (RESTful Web Service, is a subclass of, Web Service)
- (Web Service, is a subclass of, Information Service)
- (Service Provider, provides, Information Service)
- (Web Hosting Service, is a subclass of, Web Service)
- (Service Provider, provides, Web Hosting Service)
- (IoT Information Service, is equivalent to, Internet of Things Information Service)
输出:实体-关系三元组集合。
阶段 3:深度语义表示
目标:把实体变成向量,让语义相近的实体在向量空间里靠近。
论文做法:
- 收集所有实体 E = {e1, e2, …, en}。
- 用预训练嵌入模型 Emb() 把实体映射成向量:
v_k = Emb(e_k) ∈ R^d
论文用的是 Zhipu AI 的 GLM-Embedding,输出 1024 维向量。
- 归一化:
v̂_k = v_k / ||v_k||_2
- 用 PCA 降维,方便后续聚类。
贯穿样例:
实体集合:
E =
假设嵌入并降到二维后,坐标如下(仅为示意):
| 实体 | 二维示意坐标 |
|---|---|
| Information Service | (0.80, 0.90) |
| Web Service | (0.76, 0.84) |
| RESTful Web Service | (0.73, 0.80) |
| Web Hosting Service | (0.72, 0.79) |
| IoT Information Service | (0.68, 0.88) |
| Internet of Things Information Service | (0.69, 0.89) |
| Service Provider | (0.20, 0.15) |
可以看到:
- RESTful Web Service、Web Hosting Service、Web Service 距离很近;
- IoT Information Service 和 Internet of Things Information Service 几乎重合;
- Service Provider 离它们较远。
输出:实体语义向量集合。
阶段 4:层次聚类
目标:把语义相近的实体聚成概念簇,并形成层次树。
论文创新:DRAC,动态半径自适应聚类。
为什么需要动态半径?
固定阈值的问题:
- 语义密集区:容易把不同概念混在一起;
- 语义稀疏区:容易把同类概念拆得太碎。
DRAC 用有效距离:
d̂_ij = d_ij / max(r_i + r_j, ε)
其中:
- d_ij 是两个簇中心的欧氏距离;
- r_i、r_j 是簇半径;
- ε 是很小的常数,防止除以零。
直观理解:
- 簇半径大,说明这个区域比较“松散”,可以更容易合并;
- 簇半径小,说明这个区域很“密集”,合并要更谨慎。
合并后更新:
c_new = (s_i c_i + s_j c_j) / (s_i + s_j)
s_new = s_i + s_j
r_new = 簇内所有点到新中心的平均距离
重复合并,直到所有实体归为一个簇,形成树状图 η。
贯穿样例:
初始:每个实体自己一簇,半径 r=0,大小 s=1。
迭代合并过程:
| 步骤 | 合并对象 | 原因 | 新簇 |
|---|---|---|---|
| 1 | IoT Information Service + Internet of Things Information Service | 语义几乎相同,等价概念 | C1 |
| 2 | RESTful Web Service + Web Hosting Service | 都是 Web Service 的子类,语义很近 | C2 |
| 3 | C2 + Web Service | Web Service 是它们的父类 | C3 |
| 4 | C1 + Information Service | IoT Information Service 是 Information Service 的子类 | C4 |
| 5 | C3 + C4 | Web Service 是 Information Service 的子类 | C5 |
| 6 | C5 + Service Provider | 不同大类,最后合并成根 | Root |
最终层次树可以简化成:
Root
├─ Service Provider
└─ Information Service
├─ Web Service
│ ├─ RESTful Web Service
│ └─ Web Hosting Service
└─ IoT Information Service
└─ Internet of Things Information Service
注意:树中父子关系表示“语义从属/包含”,后面映射成本体时会转成 rdfs:subClassOf 或 owl:equivalentClass。
输出:层次聚类树 η。
阶段 5:本体模式生成
目标:把聚类树和三元组写成机器可读的本体文件,通常是 OWL/RDF。
论文做法:
- 每个簇 → 一个本体类。
- 簇内实体 → 类的实例。
- 簇的层次 →
rdfs:subClassOf。 - 三元组关系 → 属性约束。
- 自动加入逻辑公理:传递性、对称性、功能性等。
- LLM 自动生成并验证公理。
贯穿样例:
聚类树映射后:
- Information Service 是一个类;
- Web Service 是 Information Service 的子类;
- RESTful Web Service 和 Web Hosting Service 是 Web Service 的子类;
- IoT Information Service 是 Information Service 的子类;
- IoT Information Service 和 Internet of Things Information Service 是等价类;
- Service Provider 是一个类;
- provides 是一个对象属性,定义域是 Service Provider,值域是 Information Service。
生成的 OWL/RDF 片段可以写成 Turtle:
@prefix : <http://example.org/onto#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:InformationService a owl:Class .
:WebService a owl:Class ;
rdfs:subClassOf :InformationService .
:RESTfulWebService a owl:Class ;
rdfs:subClassOf :WebService .
:WebHostingService a owl:Class ;
rdfs:subClassOf :WebService .
:IoTInformationService a owl:Class ;
rdfs:subClassOf :InformationService ;
owl:equivalentClass :InternetOfThingsInformationService .
:InternetOfThingsInformationService a owl:Class ;
rdfs:subClassOf :InformationService .
:ServiceProvider a owl:Class .
:provides a owl:ObjectProperty ;
rdfs:domain :ServiceProvider ;
rdfs:range :InformationService .
:hasUniqueServiceID a owl:DatatypeProperty , owl:FunctionalProperty .
自动生成的逻辑公理示例:
-
子类传递性
如果 RESTful Web Service 是 Web Service 的子类,Web Service 是 Information Service 的子类,
那么 RESTful Web Service 是 Information Service 的子类。 -
等价对称性
IoT Information Service 等价于 Internet of Things Information Service,
那么反过来也等价。 -
函数性属性
hasUniqueServiceID是函数性属性:每个服务实例只有一个唯一 ID。
LLM 会用领域语料验证这些公理是否合理,合理就保留,不合理就修正。
输出:本体 O,即 OWL/RDF 文件。
阶段 6:本体动态更新
目标:当领域出现新知识时,不用全量重跑,而是增量更新本体。
论文做法:
- 用户或专家给出更新建议 δT。
- AI agent 自动补充新文档 δD。
- 更新领域数据库:
D_T' = D_T ∪ δD
- 对新实体做增量抽取、嵌入、聚类。
- 更新层次树:
η' = η ⊕ {v_{n+1}, …, v_{n+t}}
- 更新本体:
O' = O ∪ {O_{k+1}, …, O_{k+s}}
贯穿样例:
用户反馈:
新增“Edge Computing Service”,它属于 Information Service,由 Cloud Provider 提供。
AI agent 自动收集新文档 d4:
Edge Computing Service is a subclass of Information Service. Cloud Provider provides Edge Computing Service.
增量抽取新三元组:
- (Edge Computing Service, is a subclass of, Information Service)
- (Cloud Provider, provides, Edge Computing Service)
新实体嵌入后,Edge Computing Service 落在 Information Service 附近。
增量聚类后,树中新增:
Information Service
├─ Web Service
│ ├─ RESTful Web Service
│ └─ Web Hosting Service
├─ IoT Information Service
│ └─ Internet of Things Information Service
└─ Edge Computing Service ← 新增
本体新增:
:EdgeComputingService a owl:Class ;
rdfs:subClassOf :InformationService .
:CloudProvider a owl:Class .
:provides rdfs:domain :CloudProvider ;
rdfs:range :EdgeComputingService .
最终更新后的本体:
O' = O ∪
整个过程不需要重新处理所有旧文档。
输出:更新后的本体 O'。
| 阶段 | 输入 | 核心操作 | 样例输出 |
|---|---|---|---|
| 1. 领域数据收集 | 目标领域 T、阈值 Θ | 爬取、摘要、相似度过滤 | D_T = |
| 2. 实体-关系抽取 | D_T | few-shot + RLHF 纠错 | 6 条干净三元组 |
| 3. 深度语义表示 | 实体集合 | GLM-Embedding + 归一化 + PCA | 实体向量 |
| 4. 层次聚类 | 实体向量 | DRAC 动态半径聚类 | 层次树 η |
| 5. 本体模式生成 | 树 + 三元组 | 映射 OWL/RDF + 公理 | 本体 O |
| 6. 动态更新 | 用户反馈 + 新文档 | 增量抽取、聚类、本体更新 | 本体 O' |
从三篇小文档出发,AOCG-LLM+ 先收集并过滤文档,再让 LLM 抽三元组并用 RLHF 纠错,然后把实体变成向量,用 DRAC 聚成层次树,接着映射成 OWL/RDF 本体,最后根据用户反馈增量加入新概念,得到可更新的知识地图。
三个关键技术,初学者重点记
RLHF:像老师批改作业
这里的 RLHF 不是从头训练大模型,而是:
- LLM 先抽三元组;
- 人抽样检查,指出错误;
- 用反馈迭代优化提示词;
- 一般 5~10 轮就能适应一个领域。
好处是:不用全参数微调,跨领域迁移成本低。
这里并不是真正的RLHF,人工抽样检查 → 修改提示词 → 重新跑 → 再抽样检查 → 再修改提示词……,这不是强化学习,而是基于人类反馈的提示词迭代优化。
DRAC:动态半径聚类
固定阈值的毛病是:
- 语义密集区:容易把不同概念混在一起;
- 语义稀疏区:容易把同类概念拆太碎。
DRAC 的做法是: 两个簇合并时,不只看中心距离,还除以它们的半径:
有效距离 = 中心距离 / max(两个簇半径之和, 小常数)
直观理解:
- 簇半径大,说明它比较“松散/稀疏”,可以更容易合并;
- 簇半径小,说明它很“密集”,合并要更谨慎,避免过度聚类。
它最终输出一棵树状图,树的高度表示合并时的距离。
自动公理生成与验证
本体不只是分类,还要有逻辑。 比如:
- 子类关系传递:A 是 B 的子类,B 是 C 的子类,则 A 是 C 的子类。
- 等价关系对称:A 等价于 B,则 B 等价于 A。
- 函数性属性:每个服务实例只有一个唯一 ID。
LLM 自动生成这些规则,再用领域语料验证,保证逻辑一致。
实验怎么证明有效?
论文做了三块实验:抽取、聚类、主观质量。
数据
- 主实验:互联网信息服务领域,800 篇文档,抽了 12,847 个三元组,生成 247 个概念、189 个语义关系。
- 标准数据集:SemEval-2010 Task,用于消融研究。
实体关系抽取结果
对比方法包括:CRF-NER+SVM、BERT+GCN、CNN-RNN、普通 LLM。
AOCG-LLM+ 结果:
- 实体抽取精度:92.5%
- 关系抽取 F1:88.3%
- 比普通 LLM 实体精度高 10.1 个百分点
- 比最好的深度学习基线 BERT+GCN 关系 F1 高 13 个百分点
说明 RLHF 纠错确实有用。
聚类结果
对比传统层次聚类、K-Means、DBSCAN、谱聚类。
AOCG-LLM+:
- Silhouette Coefficient:0.81,越高越好
- Davies-Bouldin Index:0.47,越低越好
- Tree Mutual Information:0.92,越高越好,专门看层次结构是否合理
三项都是最优。
主观质量评价
用 DeepSeek、Doubao、ERNIE Bot 三个大模型盲评三个本体,看六个指标:
- 可扩展性和灵活性
- 领域适应性
- 最小承诺和简单性
- 清晰性
- 逻辑一致性
- 可复用性和互操作性
结果一致性不错:加权 Fleiss’ kappa 0.78,ICC 0.83。 说明不同 LLM 评出来的结果比较稳定。
跨域实验
论文还把完整流程用到:
- 法律合同纠纷领域:198 个概念,4 层,156 个关系
- 临床医学领域:172 个概念,4 层,134 个关系
没有先验领域知识,也能自动生成较合理的本体,说明框架有跨域泛化能力。
论文贡献
可以记成三点:
- 提出“语义分布驱动”的本体构建新范式:从文本语义向量中自动发现概念层次。
- 提出 DRAC 动态半径自适应聚类算法:解决固定阈值在不同语义密度下不好用的问题。
- 构建 RLHF + DRAC + 自动验证的端到端流水线:减少人工,支持跨域和动态更新。
局限与未来
论文自己也承认:
- 依赖主干 LLM 的能力,模型弱,结果就差。
- 对提示词设计比较敏感。
- 目前主要验证英文文本,多语言、低资源语言、跨模态还没充分验证。
- 长期动态演化还没经过真实工业场景长期测试。
未来方向:
- 提升跨域泛化。
- 轻量化部署,比如模型量化。
- 增强可解释性和逻辑一致性控制。
总结
如果只记一句话:
AOCG-LLM+ 用大模型从文章里抽概念和关系,再用动态半径层次聚类把概念组织成树,最后自动写成机器可读的本体文件。
如果只记三个词:
RLHF 抽取、DRAC 聚类、OWL 输出。
如果只记一个创新点:
动态半径聚类:密集区谨慎合并,稀疏区大胆合并,从而生成更合理的概念层次。

浙公网安备 33010602011771号