ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI-For-Beginners 第 2 课实践:使用 Protégé 构建你自己的领域本体(Ontology)

AI-For-Beginners 第 2 课实践:使用 Protégé 构建你自己的领域本体(Ontology) 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本指南围绕 AI-For-Beginners 课程第 2 课《Knowledge Representation and Expert Systems》知识表示与专家系统的课后作业展开选择一个主题人、地点或事物运用本课讲授的建模策略用 Protégé 亲手构建一个领域本体。你将掌握知识表示的核心手段对象-属性-值三元组、框架层次、产生式规则、描述逻辑理解本体在语义网RDF/OWL中的表达方式并能在仓库现成的家族本体与动物专家系统示例之上独立完成一个可推理、可查询的本体工程。图片出处lessons/2-Symbolic/images/protege.png即第 2 课 README 中展示的 Protégé 编辑器截图。一、任务概览从“知识库”到“本体”lessons/2-Symbolic/assignment.md 给出的作业核心是一句话构建一个本体Ontology。所谓构建知识库本质是对描述某个主题事实的模型进行分类。具体要求可以拆解为四步选题选择一个主题——可以是人、地点或事物建模为该主题建立一个模型覆盖它的关键事实与分类套用技法使用本课讲解的知识表示技术三元组、框架、层次结构、产生式规则等与建模策略工具落地使用 Protégé斯坦福大学开源本体编辑器把模型落地成可编辑、可推理的本体文件。作业给出的示例是构建一个客厅的本体包含家具、灯具等个体individuals。但真正的难点在作业中连续抛出的三个问题——客厅与厨房有何区别与浴室有何区别你怎么知道它是客厅而不是餐厅这三个问题本质上是在追问本体中类Class的界定依据是什么你用什么属性property与约束restriction来区分不同类。这正对应本课 README 中反复出现的核心概念知识表示不是把数据堆进电脑而是找到某种有效方式把知识以数据形式表示在计算机中使其可被自动使用见 lessons/2-Symbolic/README.md。二、动手前的知识储备本课的四种建模策略在打开 Protégé 之前先明确你要用哪些表示法来建模。第 2 课 README 把计算机知识表示归纳为四大类它们都是你本体里的原材料1. 网络表示对象-属性-值三元组OAV Triplets语义网络可以用三元组对象, 属性, 值的列表来表示这也是语义网一切表示的基础。README 以编程语言为例对象Object属性Attribute值ValuePythonisUntyped-LanguagePythoninvented-byGuido van RossumPythonblock-syntaxindentationUntyped-Languagedoesnt havetype definitions在你的本体里客厅中的沙发就是一个对象hasColor是属性米色是值hasFunction属性可以把客厅与厨房区分开。2. 层次表示框架Frame与场景Scenario层次表示强调人脑中对象层级这一事实。框架表示把每个对象或对象类表示为一个带槽slot的框架槽可以有默认值、取值限制甚至存储可调用的过程所有框架形成类似面向对象继承的层次。README 用Python这一框架举例槽Slot值Value默认值Default区间IntervalNamePythonIs-AUntyped-LanguageVariable CaseCamelCaseProgram Length5-5000 linesBlock SyntaxIndent场景Scenario则是特殊的框架表示随时间展开的复杂情境。在你的本体里客厅框架的槽可以有hasFloorCovering默认值carpet、hasLighting默认值overhead_light并规定hasNumberOfSeats的最小基数约束。3. 过程表示产生式规则Production Rules产生式规则是IF 条件 THEN 结论形式的 if-then 语句。README 给出的动物判定例子IF 动物吃肉类 OR (动物有锋利牙齿 AND 动物有爪子 AND 动物眼睛朝前看 ) THEN 该动物是食肉动物规则左端的每个条件与右端的结论本质上都是 OAV 三元组。在你的本体里可以用规则表达IF 房间有沙发 AND 房间有茶几 AND 房间有电视 THEN 房间是客厅——这正是作业第三个问题的自动化答案。4. 逻辑表示谓词逻辑与描述逻辑亚里士多德最早把逻辑视为表示普遍人类知识的方式。由于完整谓词逻辑不可计算实际使用其子集如 Prolog 中的 Horn 子句而描述逻辑Description Logic, DL是专门用于表示和推理对象层次的逻辑体系正是语义网本体的理论基石。Protégé 中你添加的每一个类、属性和约束最终都会映射为描述逻辑公理。三、如何选题并界定建模边界选题本身就在训练分类思维。作业给的客厅示例其实是一套完整的建模方法论可以迁移到任何领域建模动作客厅示例可迁移到定义核心类Room房间你的主题根类定义子类LivingRoom,Kitchen,Bathroom,DiningRoom主题下的分类定义个体客厅里的sofa_1,floor_lamp_1具体实例定义对象属性containsFurniture,hasLighting个体间关系定义数据属性hasArea平方米、hasSeatCount数值/文本特征定义约束LivingRoom ⊑ hasSeatCount ≥ 3区分不同子类的判别依据回答作业的三个问题客厅与厨房的差异不在有没有餐桌而在属性约束——客厅hasPrimaryFunction socializing且hasSeatCount ≥ 3厨房hasPrimaryFunction cooking且必须有hasSink true客厅 vs 餐厅的区分则取决于hasDiningTable是否为强制属性。这些约束写进本体后推理机reasoner就能自动判定某个房间属于哪个类。四、工具准备Protégé 的获取与使用方式作业明确要求使用 Protégé 构建本体。README 的说明是下载它或者在线使用即两种方式均可桌面版Protégé Desktop从官网下载安装包支持全功能编辑、推理器HermiT、Pellet 等集成适合离线工作与大型本体工程Web 版Web Protégé在线编辑器无需安装支持多人协作适合快速实验。README 中那张编辑器截图lessons/2-Symbolic/images/protege.png正是 Web Protégé 打开 Romanov 家族本体的样子。在 Protégé 中构建本体的标准工作流Active Ontology 面板设置本体 IRI国际资源标识符与前缀Classes 标签页创建类层次如Thing → Room → LivingRoomObject Properties 标签页定义对象属性个体之间关系可声明inverseOf逆属性、TransitiveProperty传递属性、SymmetricProperty对称属性Data Properties 标签页定义数据属性个体与字面量的关系Individuals 标签页创建具体个体并填写属性值DL Query 标签页 / Reasoner 菜单启用推理器如 HermiT验证一致性并执行自动分类。五、完整实操构建一个客厅本体示例以下步骤可直接在 Protégé 中复现同时与仓库中 data/onto.ttl 的写法Turtle 语法一一对应。Step 1 — 建立类层次owl:Thing ├── Room │ ├── LivingRoom │ ├── Kitchen │ ├── Bathroom │ └── DiningRoom ├── Furniture │ ├── SeatingFurniture │ └── Table └── Lighting ├── OverheadLight └── FloorLampStep 2 — 定义对象属性与数据属性对象属性contains域Room值域Furniture ∪ Lighting、isLightedBy域Room值域Lighting数据属性hasArea值域xsd:decimal、hasSeatCount值域xsd:nonNegativeInteger、hasPrimaryFunction值域xsd:string。Step 3 — 用约束Restriction界定子类在 OWL 中子类的判别依据是描述逻辑约束。仓库中的 onto.ttl 提供了绝佳模板——例如Man被定义为Person 且 hasSex 取值为 Male的交集owl:intersectionOffhkb:Man a owl:Class ; owl:equivalentClass [ a owl:Class ; owl:intersectionOf ( fhkb:Person [ a owl:Restriction ; owl:onProperty fhkb:hasSex ; owl:someValuesFrom fhkb:Male ] ) ] .照此模式你的客厅约束可写成: LivingRoom a owl:Class ; rdfs:subClassOf :Room ; rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasSeatCount ; owl:minQualifiedCardinality 3^^xsd:nonNegativeInteger ], [ a owl:Restriction ; owl:onProperty :hasPrimaryFunction ; owl:hasValue :socializing ] .启用推理器后任何一个hasSeatCount ≥ 3且hasPrimaryFunction socializing的房间个体都会被自动归类为LivingRoom——你怎么知道它是客厅而不是餐厅就由推理机来回答了。Step 4 — 创建个体并验证创建个体my_living_room、sofa_1、floor_lamp_1填写属性断言后运行推理器。如果某个个体同时满足多个类的约束推理结果Inferred Hierarchy会揭示它的所有归属——这正是本体区别于普通分类表的价值所在。六、从三元组到推理本体的语义网表达本体不是孤立文件它隶属于语义网Semantic Web技术栈。README 指出语义网建立在三个概念之上基于描述逻辑的知识表示、用全局 URI 标识所有概念与关系的分布式表示以及RDF / RDFS / OWL这一族 XML 系知识描述语言。在语义网中一切表示皆三元组对象和关系都由 URI 唯一标识。README 给出的例子是http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date Jan 1, 2022 http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com其中http://www.example.com/terms/creation-date与http://purl.org/dc/elements/1.1/creator是表达创建日期和创建者的公认 URI。用 Protégé 保存本体时你实际上就是在生成这样一组三元组Turtle / RDF/XML / OWL 格式。仓库里的完整范例FamilyOntology.ipynb 演示了一条龙流程——用python-gedcom解析罗曼诺夫皇室的 GEDCOM 家谱把 onto.ttl 中定义的家庭关系本体与个体事实合并再用rdflib读取、用OWL-RL做演绎闭包推理最后用 SPARQL 查询亲属关系。几个关键数据点本体文件初始含669个三元组经DeductiveClosure(OWLRL_Extension).expand(g)推理后膨胀到4246个三元组属性链公理owl:propertyChainAxiom是本体的规则来源例如阿姨的定义——isAuntOf是isSisterOf与isParentOf的复合阿姨 父母的姐妹fhkb:isAuntOf a owl:ObjectProperty ; rdfs:domain fhkb:Woman ; rdfs:range fhkb:Person ; owl:propertyChainAxiom ( fhkb:isSisterOf fhkb:isParentOf ) .推理后即可用 SPARQL 查询如找出所有舅舅SELECT DISTINCT ?aname ?bname WHERE { ?a fhkb:isUncleOf ?b . ?a rdfs:label ?aname . ?b rdfs:label ?bname . }这给你的启示作业中的客厅本体同样可以这样升级——定义isInSameRoomAs的传递/对称属性、用属性链定义相邻房间等复合关系再借助推理机自动发现隐含关系。七、仓库中的配套参考实现完成作业前建议先运行仓库里的两个配套 notebook它们分别是产生式规则和语义网本体的最小可运行示范文件内容对你作业的帮助Animals.ipynb用 Python 自写专家系统外壳实现反向推理KnowledgeBase.get/eval遍历 AND-OR 树再用 Experta 库CLIPS 风格实现正向推理Rule注解 declare事实理解知识库 推理引擎如何分离规则如何书写与触发FamilyOntology.ipynb从 GEDCOM 家谱生成 OWL 个体结合 onto.ttl 做 OWL-RL 推理 SPARQL 查询理解类、属性、约束、个体如何组织成可推理本体MSConceptGraph.ipynb用微软概念图谱Microsoft Concept Graph把新闻聚类了解本体也可从非结构化文本中挖掘不必全手工其中 Animals.ipynb 的规则库定义展示了产生式规则在代码中的真实形态——工作记忆working memory存 OAV 事实规则按条件匹配并不断插入新事实例如carnivor: If(OR([AND([sharp teeth,claws,forward-looking eyes]),eats meat]))。README 还特别提醒规则量达到200 条以上后系统才会显现智能行为而知识型系统的最大优点是——任何决策都可以精确解释这正是本体与专家系统在现代 AI 中仍不可替代的原因。八、验收清单与扩展方向完成本体后用下面的清单自检你的作业是否达标主题明确人/地点/事物任选根类与至少 3 个有区分度的子类定义了对象属性含逆属性、传递/对称属性与数据属性至少用一个描述逻辑约束基数限制 / hasValue / someValuesFrom区分两个易混淆子类如客厅 vs 餐厅创建了若干个体并填写属性断言在 Protégé 中启用推理器后个体被自动归类到你预期的类且本体一致性检查通过能用 SPARQL或 Protégé 的 DL Query回答至少一个关于你本体的查询。扩展方向来自 README 的 Challenge 与 Review Self Study在家族本体 notebook 中试验更多亲属关系如isAncestorOf思考 Bloom 分类学、林奈生物分类法、门捷列夫元素周期表这类人类量化知识的经典尝试如何映射为本体设计。若能把自己的本体导出为 OWL 文件并与 onto.ttl 对照你就完整走完了知识表示 → 本体建模 → 自动推理的符号主义 AI 全链路。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐AI-For-Beginners 实践课使用 Protégé 构建一个领域本体Ontology的完整方法AI For Beginners 实践课使用 Protégé 构建一个领域本体Ontology的完整方法 导读 本篇文章是 AI For Beginner教程人工智能机器学习深度学习AI-For-Beginners 实战作业用 Protégé 从零构建领域本体OntologyAI For Beginners 实战作业用 Protégé 从零构建领域本体Ontology 导读 本文围绕 AI For Beginners http教程人工智能机器学习深度学习用 Protégé 构建领域本体从知识建模到语义网推理的完整实战AI-For-Beginners 第 2 课作业指南用 Protégé 构建领域本体从知识建模到语义网推理的完整实战AI For Beginners 第 2 课作业指南 本篇文章围绕 AI For Begi教程人工智能机器学习深度学习上一篇PaddleSeg Python API 体系指南transforms、datasets、models、backbones、core 与 cvlibs 六大模块详解下一篇Quill C日志库高性能异步低延迟日志解决方案终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表