使用知识图实现领域知识建模与测试

知识图成为现代软件工程实践的基石。

知识图是一个巨大的信息网络,其中元素和想法相互链接以显示它们在现实世界中的关系。这超出了仅存储信息的数据库的范围。知识图谱还存储信息之间的联系。

这使得知识图谱在各个领域都非常有用。这里有一些例子:

  • 搜索引擎:搜索引擎使用知识图来理解搜索词与现实世界实体之间的关系。由于知识图谱中体现的联系,搜索“法国美食”可能不仅会显示食谱,还会显示有关法国葡萄酒产区或法国著名厨师的信息。
  • 虚拟助理: Siri 或 Alexa 等虚拟助理依靠知识图来理解您的请求并提供有用的响应。通过知道“埃菲尔铁塔”是一个地标,“巴黎”是一个城市,助理可以回答您有关埃菲尔铁塔位置的问题。
  • 机器学习应用: 机器学习算法可以利用知识图来提高对世界的理解。例如,推荐系统可以使用知识图将电影与演员、导演和类型联系起来。这允许根据过去的偏好推荐类似的电影。
  • 大型语言模型 (LLM): LLM可以通过访问和处理它们存储的所有信息和连接来从知识图谱中受益。这有助于法学硕士对我们的问题做出更全面、信息更丰富的答复。
  • 欺诈检测:知识图谱可用于通过分析实体之间的连接来识别欺诈活动。例如,如果某笔交易涉及链接到已知欺诈性 IP 地址的新帐户,则图表可能会将其标记为可疑交易。

知识图基础知识
在图书馆里,书籍不仅可以按类别搁架,还可以交叉引用。一本关于巴黎的书可能与法国历史书很接近,但也与巴黎作家的旅行指南和作品相关。这种连接网络是知识图谱的本质。知识图的基本构建块包含:

  • 节点:这些是图中的基本实体。它们可以是任何你可以描述的东西:物理对象(如埃菲尔铁塔)、抽象概念(如民主)、事件(如法国大革命),甚至是人(如居里夫人)。
  • 边:这些是节点之间的连接。它们展示了实体之间如何相互关联。边缘通常被标记以指定连接的性质。回到我们的巴黎示例,“巴黎”和“法国”之间的边缘可能带有“首都”标签。其他标签可能是“居民”(介于巴黎和居里夫人之间)或“受其影响”(介于法国大革命和民主之间)。
  • 标签:这些对于理解边缘至关重要。它们为节点之间的连接提供上下文和含义。
  • 属性:节点和边可以具有属性,这些属性是与其关联的附加属性或元数据。例如,人员节点可能具有“姓名”、“年龄”、“性别”等属性,而表示关系“已结婚”的边可能具有“开始日期”和“结束日期”等属性。 ”
  • 本体:这些是知识图谱的蓝图。它们定义了图中允许的实体类型、它们之间可能的关系以及用于这些关系的标签。同样,在图书馆中,可以有一个特定的书籍分类系统,定义部分、子部分以及不同类别的书籍如何相互关联。本体设定了如何在知识图谱中组织信息的规则。
  • 模式结构:基于本体,模式定义了图中允许的实体、关系和属性的类型。它为数据提供结构和一致性,使其更易于查询和分析。

知识图的超能力
这种关系网络释放了一种独特的力量:机器可以根据它们在图表中“知道”的内容来推理和推断新信息。下面是两个例子。

1、推理与推论:机器的 "啊哈时刻
假设有一个知识图谱,其中存储了 "巴黎是法国的首都 "和 "法国在欧洲 "这样的信息。虽然知识图谱可能没有明确说明 "巴黎在欧洲",但这些实体之间的联系可以让机器推理出这一结论。  这种 "啊哈时刻 "正是利用知识图谱进行推理的精髓所在。机器可以分析这些联系,推断出没有明确说明的新信息,从而扩展对世界的理解。

示例
一个旅游推荐系统使用知识图谱将城市与旅游景点和附近的地标性建筑联系起来。如果用户表示有兴趣游览埃菲尔铁塔,即使用户没有特别提到巴黎,系统也能利用知识图谱进行推理,并推荐游览巴黎。

2、互操作性:像通用图书馆一样共享知识
知识图谱不是孤立的信息孤岛。它们可以使用标准化格式构建,允许不同的系统理解和交换存储在其图中的信息,就像图书馆的通用档案系统。每个图书馆都可以整理自己的藏书(特定的知识图谱),但它们都可以利用其他图书馆的信息,因为它们遵循相同的组织原则(标准化格式)。

举例说明
在线商店的产品推荐引擎使用知识图谱。该图可以将产品与其功能、品牌和类似商品联系起来。然后,商店可以与提供产品评论的合作公司共享该知识图谱。评论公司拥有自己的用户情感分析知识图谱,可以根据商店知识图谱中的产品信息对评论进行分析。这样就能为顾客提供更有洞察力的推荐。


重要用例示例
知识图谱可为系统地生成测试用例提供强大的框架。这可以通过利用软件组件的结构化表示、它们之间的交互以及特定领域的知识来实现。通过分析图,测试人员可以识别关键路径、处理复杂性、纳入约束条件并自动生成流程,从而提高测试工作的质量和覆盖率。让我们来探讨一些重要的用例。

软件组件和交互建模
知识图谱可以将模块、类、函数或应用程序接口等软件系统组件表示为图谱中的节点。这些节点之间的边可以表示组件之间的交互或依赖关系。通过分析这些交互,测试人员可以确定潜在的测试场景和系统路径。

整合领域知识
知识图谱可将特定领域的知识(如行业标准、最佳实践或监管要求)整合到测试用例生成流程中。通过在图中加入特定领域的节点和边,测试人员可以确保测试用例符合特定领域的考虑因素和限制。

版本和变更管理
知识图谱还可以通过跟踪需求和测试用例随时间变化的历史来支持版本和变更管理。测试人员可以查看需求及其相关测试用例的演变,包括何时以及由谁进行了更改。这种历史背景对于了解变更背后的原因并确保软件不同迭代之间的可追溯性非常有价值。

交叉引用依赖关系
需求通常相互依赖,测试用例也可能与多个需求相互依赖。知识图谱可以将这些依赖关系捕捉为节点之间的边,使测试人员能够直观地了解需求和测试用例之间的相互联系。这有助于识别测试覆盖范围中的潜在冲突或缺口。

识别模式和趋势
知识图谱可帮助测试人员识别缺陷发生的模式和趋势,如重复出现的问题、常见的故障场景或特定代码更改与缺陷之间的关联。通过分析图表,测试人员可以深入了解缺陷的根本原因,并据此确定调查工作的优先次序。

开源知识图
一些开源知识图可以让我们了解这些系统的结构和功能。示例包括:

  • 维基数据:由维基媒体基金会运营的协作、可编辑知识库
  • DBpedia:从维基百科中提取的知识图谱
  • YAGO:来自维基百科的用于网络搜索的知识图 
  • KBpedia:KBpedia 是一个开源知识图谱,集成了七个领先的公共知识库,包括 Wikipedia、Wikidata、schema.org、DBpedia、GeoNames、OpenCyc 以及标准 UNSPSC 产品和服务。它提供了促进数据互操作性和基于知识的人工智能(KBAI)的全面结构。KBpedia 的上层本体 (KKO) 包括超过 58,000 个参考概念、约 4000 万个实体的映射链接(主要来自维基数据)以及 5,000 个关系和属性。它是一个灵活的、可计算的知识图谱,适用于各种机器学习任务。
  • Logseq:一个知识图谱工具,结合了笔记、大纲和wiki功能; 它允许用户创建相互关联的笔记并以图形结构组织信息。
  • Athens:知识图谱工具,可与 Roam Research 等其他笔记应用程序集成; 它允许用户创建链接笔记并建立思想网络。
  • GraphGPT:虽然不是一个独立的知识图,但 GraphGPT 是一种经过微调的语言模型,用于生成基于图的响应。它可用于创建与知识图相关的教育内容。
  • GitJournal:与 Git 存储库集成的知识图谱工具;它允许用户使用 Git 版本控制创建和管理笔记。
  • RecBole:利用知识图谱进行个性化推荐的推荐库;它对于与推荐系统相关的教育场景非常有用。
  • DeepKE:知识嵌入工具包,可用于将知识图谱中的实体和关系嵌入到向量表示中; 它对于与基于图形的机器学习相关的教育目的很有帮助。

这些资源为理解知识图的基础知识及其潜在应用提供了宝贵的学习基础。

行业知识图谱
行业内有很多企业受益于知识图谱的案例。科技巨头谷歌广泛利用知识图谱。他们的知识图谱通过理解实体之间的关系来增强搜索结果,为用户提供更多相关信息。 

  • 亚马逊利用知识图来增强其推荐系统。通过分析用户行为和产品属性,他们为客户创建个性化推荐。 
  • 沃尔玛使用知识图来优化供应链管理。通过对产品、供应商和物流之间的关系进行建模,他们改进了库存管理和分销。 
  • 乘车共享公司Lyft使用知识图来增强路线优化并改善驾驶员与乘客的匹配。通过了解地理关系,他们可以优化出行时间并减少等待时间。 
  • Airbnb的知识图谱有助于根据偏好、位置和可用性来匹配房东和房客。它通过建议相关列表来增强用户体验。 

让我们深入研究两个具体案例的细节:安联Allianz和eBay。

安联:利用知识图谱简化回归测试
德国保险巨头安联实施了知识图谱系统,以简化其核心保险平台的回归测试。  以下是其工作原理:

构建知识图谱
安联建立了一个知识图谱,其中包含有关保险平台的功能、用户角色、数据实体(保单、索赔、客户)以及它们之间关系的信息。

测试用例自动化
知识图谱可用于自动生成基本的回归测试用例。图中丰富的信息网络使系统能够识别不同的测试场景并创建相应的测试用例。这大大减少了回归测试所需的人工工作量。

改进测试维护
事实证明,知识图谱能够体现系统中的变化,这一点很有价值。当保险平台进行更新时,知识图谱很容易更新以反映这些变化。这确保了自动生成的回归测试保持相关性,并继续涵盖最新的功能。

安联的结果是积极的。  他们报告说,回归测试时间大大缩短,测试覆盖率也相应提高。  知识图谱还简化了测试维护,使测试人员能够专注于更复杂的场景。

eBay:利用知识图谱改进测试用例设计
电子商务巨头 eBay 尝试使用知识图谱来改进其市场平台的测试用例设计和管理。以下是其方法的详细介绍:

绘制用户旅程图
eBay 使用知识图谱对平台上的用户旅程进行建模。其中包括买家、卖家、产品、搜索功能和结账流程等实体。这些实体之间的关系被仔细映射,提供了用户交互的整体视图。

确定测试覆盖率差距
通过可视化知识图谱中的用户旅程,eBay 可以轻松识别现有测试用例缺乏的领域。例如,知识图谱可能会显示没有针对特定类型的用户交互或特定边缘案例场景的测试。

优化测试套件设计
确定了这些差距后,eBay 就可以设计新的测试用例,确保全面覆盖用户旅程。知识图谱有助于更系统地设计测试用例,确保功能得到全面测试。

虽然有关结果的具体细节还很有限,但 eBay 的实验证明了知识图谱在提高复杂软件系统测试用例设计的效率和有效性方面的潜力。