語義網的故事

1989 年,Tim Berners-Lee 在歐洲核子研究中心(CERN)工作時,發現人們正在使用的各類計算機無論是文檔保存還是菜單編輯,都很不一樣。於是他產生了一個想法:?

有沒有可能開發一個元系統,將這些計算機及其所儲存的文件統一起來?

於是 Tim 和他的同事們做的第一件事就是為 CERN 開發了一套存儲電話號碼的網頁。起初這套網頁運行在 CERN 的主機上,需要懂得一些計算機操作才能登錄瀏覽,後來有些用戶為了方便而安裝了他們的網頁瀏覽器(也被稱為第一個網頁瀏覽器)。

隨後這套系統發生了爆髮式增長,直至成了如今的規模。建立在 Web 上的公司都成為了巨頭,包括但不限於 Google、Facebook、Twitter、Youtube 等。這些公司囊括了信息檢索、網路社交、信息分享和視頻內容,為普通消費者創造了極大便利。而這一切的源頭都來自 Tim 在 1989 年寫的一個號碼簿程序。

Tim 本人也在 2017 年 04 月 05 日被美國計算機協會(ACM)授予圖靈獎(A.M. Turing Award),該獎項通常被稱為「諾貝爾計算機獎「。

Web 讓世界和 Tim 本人獲得了極大成功,但他認為簡單的 Web(Simplicity of Web) 有很大的侷限性因素(Limiting Factor),他對 Web 的未來還有更宏大的野心和目標。

在 2001 年 5 月份的《科學美國人》(在國內被稱為「環球科學「)雜誌上,Tim、James Hendler 和 Ora Lassila 聯名發表了一篇名為 Semantic Web 的文章,這篇文章的副標題是「一種能讓計算機理解的新型 Web 內容形式,將引發對新的未知可能性的探索「。

Tim BL - 萬維網發明人和語義網之父

語義網之父 - James Hendler

通讀原文後,我們可以將語義網總結為以下兩點:

  1. A consistent logical web of data
  2. Information is given well-defined meaning?

翻譯成中文就是:

  1. 一個一致的邏輯數據網路
  2. 信息具有明確的含義

?這兩點要素都是為了一個共同目標而服務的,即「Web 在之前只對人類友好,現在需要對機器也友好「。

  • 語義網並非獨立的另一個 Web,而是現在的 Web 的一個延伸。在其中,信息有明確的含義,更利於人機之間的合作。將語義網融入現在 Web 結構的初步努力已經在進行中了。不久的將來,當機器有更強的能力去處理和「理解」現在它僅僅進行顯示的數據時,我們將看到很多重要的新功能。

我們每一個人每天都會使用 Google 和百度搜索大量信息,雖然我們都能獲得想要的信息,但「搜索「的過程有時是非常耗時耗力的,你需要在不同的網頁間跳轉,閱讀大量的文章或評論,然後從中搜尋自己想要的信息。這雖然能奏效,但並不是最好的。

比如:

  1. 需要背景知識的複雜查詢
    1. 搜索「使用聲納但既不是蝙蝠也不是海豚的動物「
    2. 「我該學習什麼技能才能稱為一名合格的增長黑客」
  2. 在特定領域中的查詢
    1. 旅遊諮詢,比如「如果我想在大理待三個月,有哪些比較推薦的地方?」
    2. 商品和服務的價格
    3. 去年有哪些人離開了阿里巴巴創業,這些人都分佈在哪些領域?
  3. 使用更聰明的「服務「
    1. 得到一個 DNA 序列,識別基因,確定它們產生的蛋白質,從而確定它們控制的生物過程

通常你需要聚合大量的信息源,然後將數據集中到一個 Excel 表中?做分析。如果你是一名程序員,你可能還會寫個爬蟲抓取數據然後做一些有價值的信息輸出。但有很多情況,這些方法都不管用,比如技術無法爬取某網站的內容(某公眾號)、法律風險比較大或者過於浪費時間。

很多人可能從來沒想過讓機器做這些事情,因為計算機在人們眼裡就是一個蠢貨。但是這世界上沒有什麼是不會變的,計算機也是如此。語義網就是在做讓機器幫助人類決策的事情,兼容語義網的是數據不僅對人類可讀,還對機器可讀,不僅如此,機器還要能做智能分析,並給予人類合適的建議。

傳統的 Web 通過給一段文字加注釋來表示具體的含義,比如我們閱讀李彥宏的介紹時,人類在瀏覽器上看到的是:

李彥宏,男,百度創始人。

但是計算機的表示是:?

<Person>李彥宏</Person>,<Gender>男</Gender>,<Job>百度創始人<Job>。

?

可以看到,這種表示雖然賦予了文檔語義,但卻有以下幾個缺點:?

  1. 無法將李彥宏百度關聯到一起,這就不能進行關係表示;
  2. 機器無法自動為李彥宏增加新的介紹(比如李彥宏的妻子馬東敏),這就不具備可拓展性;
  3. 該定義只有 PersonGenderJob這幾項事物,這是有限的元數據;

?

在語義網的定義中,會這樣表示李彥宏(為便於理解,此示例為簡化版的表示方法):

<李彥宏, Gender, 男>
<李彥宏, Company, 百度>
<李彥宏, CompanyJob, 創始人>

這被稱作三元組,是一個主謂賓的格式,通過這樣三元組的定義就可以描述出一個主體和另外一個主體的關係。

  • 能同時表達數據以及根據數據進行推理的規則,並且允許任何現存的知識表現系統中的規則都能輸出到Web上。在Web上增加邏輯性 —— 使用規則去推理、選擇行為的步驟並回答問題的方法 —— 是語義網面臨的一個任務。 這個任務涵蓋了數學和工程化決策,使其更加複雜。

?

這種數據表示方法在語義網中被稱為「知識表示「,後文都會以「知識表示「來指代上文的數據表示。?

語義網的技術體系

在早期的語義網開發中,有一套規範來指導如何更好的進行知識表示,他們是 XML(eXtensible Markup Language,可拓展標記語言) 和 RDF (Resource Description Framework,資源描述框架)。?

XML 是一種標記電子信息並使其具有結構性的標記語言,比如一篇筆記可以使用如下的結構進行表示:?

<note>
<title>這是這篇筆記的標題</title>
<body>這是這篇筆記的正文</body>
</note>

?

資源描述框架(Resource Description Framework),一種用於描述Web資源的標記語言。RDF 是一個使用 XML 語法來處理元數據的規範。所謂元數據,就是「描述數據的數據」或者「描述信息的信息」。舉個簡單的例子,書的內容是書的數據,而作者的名字、出版社的地址或版權信息就是書的元數據。數據和元數據的劃分不是絕對的,有些數據既可以作為數據處理,也可以作為元數據處理,例如可以將作者的名字作為數據而不是元數據處理。

RDF 是語義網的標準,比如描述百度這個網站的 RDF 示例如下:

<?xml version="1.0"?>
<rdf:RDFxmlns:rdf="<http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:si="http://www.runoob.com/rdf/>">
<rdf:Description rdf:about="<https://www.baidu.com>">
<si:title>百度一下,你就知道</si:title>
<si:author>李彥宏</si:author>
</rdf:Description>
</rdf:RDF>

?

其本質還是一個主謂賓的三元組表現形式。?

但是可以看到,這種知識表示方法是非常繁雜的,所以 RDF 並沒有在工業界得到廣泛應用,其經常被批評為「由學者為學者創造的規範「。這也就是說,語義網的技術體系,與一線開發人員和多變的工業環境是十分不匹配的

雖然後來又衍生出 RDF/XML,N-Triples,Turtle,RDFa,JSON-LD 等多種表現形式,但由於其極大的使用成本和複雜度,始終沒有得到市場的廣泛認可。

RDF 在發展到一定程度後?,發現有太多的實體需要定義。比如一個人有胳膊、腿、眼睛等特徵;一個學校有校長、老師、學生、教室等信息。為了描述這些信息,又出現了 RDFS。可以把 RDFS 理解成 RDF 的一個辭彙表,這個辭彙表就包括了「人」、「學校」這些實體中各種各樣的信息。

再後來,專家們覺得 RDFS 的表達能力有限,於是發展出了 OWL。OWL 的全稱是 Web Ontology Language,也就是 Web 本體語言(後來衍生出本體論,鑒於其複雜度和篇幅限制,讀者可自行查閱相關資料以理解本體)。所謂本體,就是用來描述「人」、「學校」這些概念的詳細說明,也是一種元信息。

OWL 除了用來定義本體之外還有另外一個很強大的功能就是「推理」。舉個比較基本的推理例子,我們用 RDFS 定義人和動物兩個類,另外,定義人是動物的一個子類。此時推理機能夠推斷出一個實體若是人,那麼它也是動物。這是一種最基本的推理,OWL 不僅支持這樣的推理,還支持更有實際意義的推理。本文主要講解語義網的故事,這裡就不再詳述更多技術細節了。

RDF 可以理解成一種數據的存儲規範,也可以理解成語義網的資料庫。這就好比,MySQL 和 Postgres 都是關係型資料庫的實現,而他們都使用 SQL 作為查詢語言。同樣的,RDF 也有自己的查詢語言,其名稱為「SPARQL「。

舉個易懂的例子,使用 SPARQL 可以查詢以下信息:

  1. 所有的 RDF 三元組。
  2. 周星馳出演了哪些電影?
  3. 英雄這部電影有哪些演員參演?
  4. 鞏俐參演的評分大於 7 的電影有哪些?

在 2006 年,Tim 提出了關聯數據(Linked Data),這是一種萬維網上創建語義關聯的方法。這個方法集成了 RDF、SPARQL 等眾多語義網實用技術。

語義網的技術體系很龐大,因篇幅所限,技術介紹就到此為止,讓我們跳出複雜的語義網技術,轉向更宏觀的語義網願景。

語義網技術體系

回歸到語義網最初的願景

語義網最初希望個體和企業都能夠對自己的數據進行語義標註,這顯然沒能實現。大部分人都是內容消費者,而不是內容生產者。Cory Doctorow闡述過一個觀點:「這種由人類自發創建的語義標註是一種烏託邦而且永遠不可能實現」。Cory 認為數據標註是一件喫力不討好的事情,首先過程很枯燥,第二幾乎不能給企業和個人帶來任何好處。企業關心的是公開數據後會不會對業務產生正面影響,如果這麼做不但不能促進業務增長,反而導致競爭對手可以更快的佔有市場,那麼這是不可能吸引任何企業參與到語義網的建設中去的。

有的人覺得語義網這個概念早就已經死了,有的人覺得語義網已經存在於我們每天的生活中,只是我們沒意識到。Google、Yahoo!、微軟、IBM 這些公司都從 Web 的迅速發展中分到了一大杯羹。而 Google 於 2012 年 5 月 16 日發布了「知識圖譜」後,如今業內也已經很少談及語義網,多以知識圖譜來代替對語義網的稱呼,所以 Google 對語義網的貢獻是很大的。

Google 知識圖譜最常見的一個體現是搜索類似「姚明的身高」或「奧巴馬的老婆」這樣的信息:

一個常見的用來舉例知識圖譜的例子:姚明的身高

可以看到 Google 直接返回了姚明的身高並以卡片的形式展示,這就是 Google 對實體的標註和查詢結果,雖然他的名字已不叫語義網,但是和語義網的技術息息相關。

W3C 上對語義網目標的描述是:

Allow data to be shared and reused across application, enterprise, and community boundaries.

翻譯成中文是:

允許數據不受限制的在應用、企業和社區之間共享和重用。

這聽起來非常有用,不僅可以減少大量的信息收集和處理成本,還可以讓信息在全球公平共享。互聯網之所以變得如此強大,是因為他整合了全球信息,並讓全球每一個人可以公平的獲取。不過這不完全正確,事實上,有時候獲取信息還是非常困難的,比如上文中提到過「搜索時需要在不同的網頁間跳轉,閱讀大量的文章或評論,然後從中搜尋自己想要的信息」,當然這並不是全部的信息障礙,比如某國的大型國家區域網舉世聞名,也是妨礙信息流通的一種障礙。當然這還沒涉及到眾多的隱私問題,歐洲頒布 GDPR(數據隱私保護條例)後已經致使不少互聯網服務下線。

AppZapp 下線通知

語義網被其他規範侵蝕的故事

?語義網的技術雖然沒能在工業界流行,但這些年來 API(Application Programming Interface,應用程序編程介面) 卻發生了激增,有些人稱之為 API 生態。REST(一種軟體架構風格) 和 JSON(一種非常簡單的用於表示數據的方式) 成為了事實上暴露結構化數據的規範。用來構建 API 的工具已經非常成熟,同時也易於使用,這符合 Web 開發者的習慣,也是 Web 開發者從實踐中總結來的經驗。

相比語義網技術的束之高閣,API 顯然更加下里巴人。如果仔細想一下,你會發現 REST API 十分貼近 W3C 所定義的關於語義網的目標:「允許數據不受限制的在應用、企業和社區之間共享和重用」。拿小程序舉個例子來說,微信向開發者暴露的用戶數據,都是以 API + JSON 的形式,而不是複雜的 RDF 等語義網技術。除此之外,神箭手雲也提供了數以萬計的 API 供開發者調用,雖然他不是免費的,但是上萬次的請求只需要一兩百元,也是大多數企業和個人開發者承擔得起的。

使用 API + JSON 最大的好處就是簡單和成本低,缺陷是沒有統一的「語義規範」。比如同樣是一篇文章,在微博上表示該篇文章內容用的可能是「content」,在微信上用的可能是「text」。於是,人們會把更多的時間花在數據對齊上。JSON-LD就是用來解決這個問題的,他提供了一套語義化的 JSON 規範。

  • JSON-LD 針對的數據是「需要在全網傳播的數據」而且「對其他個體或組織非常重要」。

這條路仍然任重而道遠,長期來看,人們還是會以 JSON 作為數據交換的規範。

自由編輯的 Web —— 一個關於未來的故事

上面說了很多語義網的事情,現在,讓我們回歸到 「Web」 本身。

這一代 Web 正在向富文本客戶端發展,也就是幾乎都在模仿桌面軟體和移動軟體的設計。打開 Teambition、Tower、 Odoo 之類的 SaaS,可以看到他們的界面是豐富又複雜的;而如果打開 Webflow,不知道的人可能會認為這就是個 PC 軟體:

Webflow 是一款可視化構建網頁的網頁應用程序

而一旦模仿到了頂峯,就會回歸本源。雖然這種設計的表現力很強,但他就像移動軟體從擬物設計到扁平化設計一樣,是一個過渡產物。喬布斯對界面設計的理念是:「任何年齡的人, 任何經歷的人,都可以在拿到設備幾分鐘內輕鬆掌握它的用法」。於是蘋果利用人們的日常經驗,做出擬物化的界面,以降低用戶的學習成本和理解難度。在《iOS 人機交互指南中》也提到「當你應用中的可視化對象和操作按照現實世界中的對象與操作仿造,用戶就能快速領會如何使用它」。拿早期的按鈕舉例子,凸起的表示可以按,凹陷的表示已經被按了,非常易懂和直接。

在數碼設備普及度不高的年代,擬物化是很有效果的,尤其是對從未接觸過電子產品的老人和小孩。而一個先進的東西模仿古老的東西讓用戶快速理解,是一種過渡方案。如果一款溫度計產品一定要設計成溫度計的樣子,那一定糟透了。隨著數碼設備的普及,人們對產品的要求也在不斷變化。

現在的 Web 一直在模仿早期的 PC 軟體,軟體設計者想要用戶從 PC 過渡到 Web 時可以無縫銜接,讓他們「體驗一致」。以及現在的「混合式」開發框架,聰明的開發者們依託 Web 跨平臺和高可定製性的特性開發了大量模仿移動 APP 的框架。

現在,到了該重新思考的時候了。隨著 Web 的普及,用戶真的需要這麼複雜的人機交互方式嗎?這樣複雜的交互真的是對用戶最友好的嗎?真的能讓用戶實現利益最大化嗎?軟體真的都需要如此複雜的流程嗎?

讓我們想一想 Web 剛誕生的時候是什麼樣,沒錯 —— 都是文檔。現在再問一下自己 —— 「強大的功能真的需要強大的 UI 才能表現出來嗎」?第一代 iPhone 剛面世時,屏幕不大,但是擁有很多功能,這些功能都是用戶所真正關注的,用戶不關注的功能都被隱藏了起來。我們經常提及「少即是多」,那麼這句話的真正含義是什麼呢?

真正的產品邏輯不是加無可加,而是減無可減

注意這裡的「加」和「減」不是指 UI 上的加減,而是認知、流程和邏輯上的精簡。

Web 前端技術突飛猛進的這幾年(從刀耕火種到如今的工業化黎明),開發者有了更強大的鎚子,於是想創造更強大更有質感的軟體,一路狂飆後,在軟體日趨飽和和趨同化的今天,是時候做出改變了。

那麼,讓我們再來看看什麼是「可編輯的 Web」。

我們現在所使用的所有軟體,本質都是在管理數據。微信在管理你的社交數據,抖音在管理你的多媒體娛樂數據,淘寶在管理你的購物數據,公眾號在管理文章數據,高德在管理世界的交通數據,微博在管理媒體數據,貼吧在管理興趣社區數據,支付寶在管理你的財務數據。

這些應用形式的不同,在於數據的不同。你不能讓一個管理好友的程序使用地圖樣式的 UI(當然,從業務層面,地圖 + 社交可能是一個不錯的組合創新,但這就是另外一個話題了),也不能讓一個管理財務數據的應用使用通訊錄的 UI。一個應用的形式既是和業務模式匹配的,也是和數據匹配的。

那麼,有沒有可能有這麼一款應用,他看上去很簡單,但是擁有無窮的元素,可以讓你自由組合成你想要的應用。可能,在前期,他只是一款用來管理知識的筆記,或者是用於團隊間協作的文檔系統。

但這就是 Web 的獨特性,也是文檔流的體現。

「可編輯的 Web」 就是將 Web 重新設計成可以編輯的文檔,把所有的元素都視作是可編輯的文檔。不要那麼多的線框,也不要那麼多的按鈕。把所有的輸入框都變成一個唯一的輸入框 —— 就像 Word 一樣,你幾乎可以在 Word 中書寫任何文檔,做成任何事情,但是 Word 很明顯不是「可編輯 Web」 的最優解。或者把這個輸入框理解成一個畫板,在輸入的同時利用人工智慧預測你想要輸入的元素,然後給你推薦並且讓你選擇。

你可能先用這款軟體代替 Word 和其他協作工具,比如 Google Docs、Confluence、Jira、Google Sheets。所有這些事情都可以在一款軟體中完成,並且每一個元素都在你的掌控之中,不受任何限制,因為所有一切都是「可編輯」的。

想要一個任務管理列表?想做一個產品路線圖?想勾畫用戶故事地圖?想和設計師同步設計?CEO 想在全公司同步自己的價值觀?只需要一款軟體就可以實現。你還可以像早年定製 QQ 空間一樣定製自己的工作空間、娛樂空間或生活空間,用你自己的方法解決問題,你是不受任何限制的,能限制你的只有你自己的想像力。

The best way to predict the future is to invent it.

自由編輯的 Web 出現後,必將引發一系列的新興創業活動。

人工智慧在未來 Web 中的角色

我們花了大量篇幅講述了語義網可編輯 Web的設計和思想。那麼,這兩者可否進行結合呢?萬維網之父 Tim 已經給出了答案。

Tim 在 2017 年底啟動了 Solid 項目,然後又組建了一家名為 Inrupt 的公司以推動 Solid 商業化。

Solid是 Social Linked Data 的縮寫,官方宣稱是一個去中心化社交平臺。而 Inrupt 這家公司的使命是「 Re-decentralize the Internet」,即「使互聯網重新去中心化」。簡單來說,現在我們的數據都在各大互聯網巨頭手中,基本上你沒有辦法將其自由導出,而 Solid 使用上文介紹過的「Linked Data」的規範使數據可以在互聯網中自由流通。

舉個例子,假如微博和微信同時支持了 Solid 協議,那麼當你發一條朋友圈後,微博也會自動同步。不僅如此,如果你不向微博授權,那麼微博就拿不到你的這部分數據。這就打破了由各巨頭故意建造的數據孤島,也讓數據真正歸創造內容的用戶所有。所以社交並不是 Solid 的目的,只是 Solid 想通過社交促使更多用戶將數據上傳到 Solid 中,從而使完善 Solid 的生態,完成冷啟動。

所謂 Solid 的生態,就是數據的表示方法符合語義網的語義規範,也就是用 RDF 來做存儲。

鮑捷博士在一篇文章中曾指出「從目的的角度,語義網是一套減少數據摩擦,加快數據流動速度的方法」。我們探討了很多「為什麼」,卻沒探討過「怎麼做」。毫無疑問,在現代互聯網中,社交媒體是信息傳播速度最快的渠道。這麼看,Solid 的社交野心是非常順理成章的。

Solid 的軟體設計上,可以理解為一個「可自由編輯的 Web」。但是因為其是一款開源軟體,缺乏商業場景支撐,導致其用戶體驗**非常差,注意是非常差。**具體體現在 UI 的醜陋性和數據存儲/讀取的複雜性。尤其是交互的複雜性,連很多專業人士都玩不轉,更何況是什麼都不知道的普通人呢?這是阻礙 Solid 大規模普及的原因之一,也就是還沒有人開發出一款能讓普通人玩得轉的 Solid 程序。而這樣的程序沒出來的原因也在於使用了複雜又古老的語義網技術,將一大波富有創造力的開發者拒之門外。

Semantic Web technologies were complex and opaque, made by academics for academics, not accessible to many developers, and not scalable to industrial workloads.

機器學習在分析半結構化數據、非結構化文本圖片和音視頻領域取得了令人矚目的成果。這取決於超大的數據集和演算法的提升,深度學習就是一個例子。

知識圖譜的體系架構

人們討論過很多關於人工智慧在知識圖譜構建中的角色,他能幫助圖譜自動化的標註數據和更新數據,而且隨著數據量的增加,演算法也會越來越準確。但是,演算法只是一種表層的東西,他看的只是現象,而無法理解事物深層次的含義,因為機器是缺乏基礎常識的,也沒有時空觀念,更沒有人類的生活體驗,人類的生活經驗也是輔助決策的重要來源。即使是 Google 的 Knowledge Vault 系統,抽取的事實也必須經過人類修正,所以不要幻想人工智慧會幫助人類做所有事(現階段只有傻子才會這麼想,但是沒有什麼是不能變的,說不定 100 年後真的實現了呢)。

在可編輯 Web 普及後,大量數據將帶有語義的被存儲在計算中,數據孤島將被架起橋樑,此時,智能助理將成為現實。假如你的社交數據顯示你非常討厭中醫,那麼在另外一個人和你聊天觸及到中醫時會對對方進行友善的提醒,以防止進一步的摩擦或衝突。

而實現一個可編輯的 Web 並不需要高深莫測的技術,只需要「工程」。人工智慧會成為一個真正的實用個人助理,幫助你解決生活、工作中的各種問題,說不定,他還能在計算機中模擬一個「你」,那時,所有人都將以 bit 的形式在電子世界中永生。

語義互聯也好,自由編輯也好,都是一個手段,真正的目的還是將最好的服務帶給最廣大人民。畢竟,所有的技術都是人的延伸。

參考文獻

  1. ?The Semantic Web is dead. Long live the Semantic Web?
  2. ?Whatever Happened to the Semantic Web??
  3. ?The History of the Semantic Web is the Future of Intelligent Assistants?
  4. ?semantic-web-the-inside-story?
  5. ?Build your own Knowledge Graph?
  6. Semantic Web
  7. 語義網是什麼?有什麼好處?- 鮑捷博士
  8. Solid 中文網 | 數據自有 去中心化 語義網

?


推薦閱讀:
相關文章