知識圖成為現代軟體工程實踐的基石。
知識圖是一個巨大的資訊網路,其中元素和想法相互連結以顯示它們在現實世界中的關係。這超出了僅儲存資訊的資料庫的範圍。知識圖譜還儲存資訊之間的聯絡。
這使得知識圖譜在各個領域都非常有用。這裡有一些例子:
- 搜尋引擎:搜尋引擎使用知識圖來理解搜尋詞與現實世界實體之間的關係。由於知識圖譜中體現的聯絡,搜尋“法國美食”可能不僅會顯示食譜,還會顯示有關法國葡萄酒產區或法國著名廚師的資訊。
- 虛擬助理: 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 的實驗證明了知識圖譜在提高複雜軟體系統測試用例設計的效率和有效性方面的潛力。