1. 程式人生 > >中文知識圖譜研討會的學習總結 (上) 圖譜引入、百度知心、搜狗知立方

中文知識圖譜研討會的學習總結 (上) 圖譜引入、百度知心、搜狗知立方

        知識圖譜(Knowledge Graph)是當前學術界和企業界的研究熱點。中文知識圖譜的構建對中文資訊處理和中文資訊檢索具有重要的價值。中國中文資訊學會(CIPS)邀請了有約10家從事知識圖譜研究和實踐的著名高校、研究機構和企業的專家及學者有意參與並發表演講,下面就是第一屆全國中文知識圖譜研討會的學習筆記。
        會議介紹地址和PPT下載連結:http://www.cipsc.org.cn/kg1/

        第一篇以現有百度知心和搜狗知立方為主,其中文章目錄如下所示:
        一.知識圖譜相關引入介紹
        二.NLP Techniques in Knowledge Graph —— 百度知心
        三.面向知識圖譜的搜尋技術 —— 搜狗知立方

        PS:希望大家看原文PDF,因為由於我也還在學習過程中,本人理解程度不夠;同時有沒有現場聽這個講座,所以很多具體實現方法和過程都無法表述。
        下載地址:http://download.csdn.net/detail/eastmount/9255871

一. 知識圖譜相關引入介紹

        在介紹會議內容之前,我準備先給大家介紹下知識圖譜的基礎知識。前面我也介紹過很多知識圖譜相關的文章,這裡部分閱讀華東理工大學胡芳槐的博士論文《基於多種資料來源的中文知識圖譜構建方法研究》,給大家講解知識圖譜的內容及發展歷史。

        (一).為什麼引入知識圖譜呢?
        隨著資訊的爆炸式增長,人們很難從海量資訊中找到真實需要的資訊。搜尋引擎正是在這種情況下應運而生,其原理是:
        1.通過爬蟲從網際網路中採集資訊,通過建立基於關鍵詞的倒排索引,為使用者提供資訊檢索服務;
        2.使用者通過使用關鍵詞描述自己的查詢意圖,搜尋引擎依據一定的排序演算法,把符合查詢條件的資訊依序(打分)呈現給使用者。


        搜尋引擎的出現,在一定程度上解決了使用者從網際網路中獲取資訊的難題,但由於它們是基於關鍵詞或字串的,並沒有對查詢的目標(通常為網頁)和使用者的查詢輸入進行理解。
        因此,它們在搜尋準確度方面存在明顯的缺陷,即由於HTML形式的網頁缺乏語義,難以被計算機理解。

        (二).語義Web和本體的概念
        為解決網際網路資訊的語義問題,2008年Tim Berners-Lee等人提出了下一代網際網路——語義網(The Semantic Web)的概念。在語義Web中,所有的資訊都具備一定的結構,這些結構的語義通常使用本體(Ontology)來描述。
        當資訊結構化並且具備語義後,計算機就能理解其含義了,此時使用者再進行檢索時,搜尋引擎在理解網際網路中資訊含義的基礎上,尋找使用者真實需要的資訊。

由於網際網路中資訊的含義是由本體來描述的,故本體的構建在很大程度上決定了語義Web的發展。
        本體(Ontology)描述了特定領域(領域本體)或所有領域(通用本體)中的概念以及概念之間的關聯關係,並且這些概念和關係是明確的、被共同認可的。通常,本體中主要包括概念、概念的其他稱謂(即同義關係)、概念之間的上下位關係、概念的屬性關係(分為物件屬性和數值屬性)、屬性的定義域(Domain)和值域(Range),以及在這些內容上的公理、約束等。

        (三).知識圖譜發展歷程
        隨著網際網路中使用者生成內容(User Generated Content, UGC)和開放連結資料(Linked Open Data, LOD)等大量RDF(Resource Description Framework)資料被髮布。網際網路又逐步從僅包含網頁與網頁之間超連結的文件全球資訊網(Web of Document)轉變為包含大量描述各種實體和實體之間豐富關係的資料全球資訊網(Web of Data)。
        在此背景下,知識圖譜(Knowledge Graph)正式被Google於2012年5月提出,其目標在於改善搜尋結果,描述真實世界中存在的各種實體和概念,以及這些實體、概念之間的關聯關係。緊隨其後,國內外的其它網際網路搜尋引擎公司也紛紛構建了自己的知識圖譜,如微軟的Probase、搜狗的知立方、百度的知心。知識圖譜在語義搜尋、智慧問答、資料探勘、數字圖書館、推薦系統等領域有著廣泛的應用。
        下圖是搜狗知立方“姚明”的關係圖:

        谷歌S. Amit的論文《Introducing the Knowledge Graph: Things, Not Strings》        阿米特·辛格爾博士通過“The world is not made of strings, but is made of things”這句話來介紹他們的知識圖譜的,此處的“thing”是和傳統的網際網路上的網頁相比較:知識圖譜的目標在於描述真實世界中存在的各種實體和概念,以及這些實體、概念之間的關聯關係。
        知識圖譜和本體之間又存在什麼區別呢?
        知識圖譜並不是本體的替代品,相反,它是在本體的基礎上進行了豐富和擴充,這種擴充主要體現在實體(Entity)層面;本體中突出和強調的是概念以及概念之間的關聯關係,它描述了知識圖譜的資料模式(Schema),即為知識圖譜構建資料模式相當於為其構建本體;而知識圖譜則是在本體的基礎上,增加了更加豐富的關於實體的資訊。
        知識圖譜可以看成是一張巨大的圖,圖中的節點表示實體或概念,而圖中的邊則構成關係。在知識圖譜中,每個實體和概念都使用一個全域性唯一的確定ID來標識,這個ID對應目標的識別符號(identifier);這種做法與一個網頁有一個對應的URL、資料庫中的主鍵相似。
        同本體結構一樣,知識圖譜中的概念與概念之間也存在各種關聯關係;同時,知識圖譜中的實體之間也存在這同樣的關係。實體可以擁有屬性,用於刻畫實體的內在特性,每個屬性都是以“<屬性,屬性值>對(Attribute-Value Pair, AVP)”的方式來表示的。

        (四).知識圖譜舉例
        總之,知識圖譜的出現進一步敲開了語義搜尋的大門,搜尋引擎提供的已經不是通向答案的連結,還有答案本身。下圖展示Google搜尋結果的快照,當用戶搜尋“劉德華的年齡”時,其結果包括:
        1.列出了相關的網頁文件檢索結果;
        2.在網頁文件的上方給出了搜尋的直接精確答案“54歲”;
        3.並且列出了相關的人物“梁朝偉”、“周潤發”以及他們各自的年齡;
        4.同時在右側以知識卡片(Knowledge Card)的形式列出了“劉德華”的相關資訊,包括:出生年月、出生地點、身高、相關的電影、專輯等。
        知識卡片為使用者所輸入的查詢條件中所包含的實體或搜尋返回的答案提供詳細的結構化資訊,是特定於查詢(Query Specific)的知識圖譜。


        這些檢索結果看似簡單,但這些場景背後蘊含著極其豐富的資訊:
        1.首先,搜尋引擎需要知道使用者輸入中的“劉德華”代表的是一個人;
        2.其次,需要同時明白“年齡”一詞所代表什麼含義;
        3.最後,還需要在後臺有豐富的知識圖譜資料的支撐,才能回答使用者問題。

        同時,知識圖譜還在其他方面為搜尋引擎的智慧化提供了可能,辛格爾博士指出:搜尋引擎需要在答案、對話和預測三個主要功能上進行改進。另外,知識圖譜在智慧問題、知識工程、資料探勘和數字圖書館等領域也具有廣泛的意義。
        按照覆蓋面,知識圖譜可以分為:
        1.通用知識圖譜
        目前已經發布的知識圖譜都是通用知識圖譜,它強調的是廣度,因而強調更多的是實體,很難生成完整的全域性性的本體層的統一管理;另外,通用知識圖譜主要應用於搜尋等業務,對準確度要求不是很高。
        2.行業知識圖譜
        行業知識圖譜對準確度要求更高,通常用於輔助各種複雜的分析應用或決策支援;嚴格與豐富的資料模式,行業知識圖譜中的實體通常屬性多且具有行業意義;目標物件需要考慮各種級別的人員,不同人員對應的操作和業務場景不同。
         本體構建:人工構建方式、自動構建方式和半自動構建方式



二. NLP Techniques in Knowledge Graph —— 百度知心

        主題和主講人:百度知識圖譜中的NLP技術——趙世奇(百度)

        (一).Baidu Knowledge Graph
        百度知心訪問連結:http://tupu.baidu.com/xiaoyuan/
        其中百度知識圖譜“章子怡”人物關係圖譜如下所示:

        知識圖譜與傳統搜尋引擎相比,它會返回準確的結果(Exact answers),如下:

        同時知識圖譜推薦列表(List Recommendation)如下所示,搜尋“適合放在臥室的植物”包括“吊蘭、綠蘿、千年木”等等。其中Named entities 命名實體、Normal entities 普通實體。

        同時,百度知心知識圖譜也支援移動端的應用,如下圖所示:

        PS:不知道為什麼最近使用百度知心搜尋的效果不是很好!感覺搜狗知心和google效果更好~

        (二).Knowledge Mining
        知識挖掘包括:Named entity mining 命名實體挖掘、AVP mining 屬性-值對挖掘、Hyponymy learning 上下位學習、Related entity mining 相關實體挖掘。
        PS:注意這四個知識點非常重要,尤其是在知識圖譜實現中,下圖也非常重要。


        1.命名實體挖掘 Mining Named Entities
        傳統命名實體(NE)類別:人(Person)、位置(Location)、組織(Organization)
        更多對web應用程式有用的新類別:Movie、TV series、music、book、software、computer game
        更精細的分類:組織 -> {學校,醫院,政府,公司...}
Computer game -> {net game,webpage game,...}
        其中web中命名實體的特點包括:新的命名實體迅速崛起,包括軟體、遊戲和小說;命名實體在網路上的名字是非正式的(informal)

        (1)從查詢日誌(Query Logs)中學習命名實體(NEs)
        查詢日誌中包含了大量的命名實體,大約70%的搜尋查詢包含了NEs。如下圖2007年Pasca論文所示,命名實體能夠根據上下文特徵(context features)識別。如上下文詞“電影、線上觀看、影評”等等,識別“中國合夥人”。


        Bootstrapping approach
        given a hand of seed NEs of a category C
        從查詢中學習種子的上下文特徵,然後使用已經學到的上下文特徵來提取C類的新種子實體,使用擴充套件種子集去擴充套件上下文特徵....
        利用查詢日誌該方法的優點是:它能夠覆蓋最新出現的命名實體;它的缺點是:舊的或者不受歡迎的命名實體可能會錯過。

        (2)從普通文字中學習命名實體(Learning NEs from Plain Texts)
        文字包裝器(Text Wrappers)被廣泛使用於從純文字中提取(Extracting)命名實體。例如包裝器“電影《[X]》”,“影片[X],導演”,其中[X]表示電影名字。如下圖所示:


        (3)使用URL文字混合模式(Url-text Hybrid Patterns)學習命名實體
        是否有可能只從網頁標題(webpage titles)中提取命名實體呢?確實。99%的命名實體都能夠在一些網頁標題中發現。
        Url文字混合模型應該考慮URL約束,簡單的文字模式可信的URL連結是足夠的,複雜的文字模式需要低質量的URL。其中論文參考下圖:




        PS:涉及到Multiclass collaborative learning多類協作學習,推薦去看2013年具體的論文,鄙人才疏學淺,能力有限,只能講些入門介紹。《Bootstrapping Large-scale Named Entities using URL-Text Hybrid Patterns》ZhangZW

2.屬性-屬性值對挖掘 AVP Mining
        AVP英文全稱是Attribute Values Pairs。那麼,哪裡會見到這種AVP資料呢?
        線上百科:三大百科 Baidu Baike \ Wikipedia \ Hudong Baike
        垂直網站(Vertical websites):IMDB,douban for videos
        普通文件網頁:從結構化、半結構化(semistructured)和非結構化文字中爬取AVP

        (1)挖掘線上百科AVP資料
        如下圖所示,結構化資訊盒infobox準確但不完美,半結構化資訊不是足夠準確。
        PS:結構化資料如資料庫中表;非結構化資料像圖片、視訊、音訊無法直接知道它們的內容;半結構化資料如員工的簡歷,不同人可能建立不同,再如百科Infobox的“屬性-值”可能不同,它是結構化資料,但結構變化很大。


        (2)挖掘垂直網站AVP資料
        下面是從垂直網站中爬取結構化資料或半結構化資料。


       可能會遇到兩個問題?
       第一個是如何找到相關的垂直網站,如果是尋找流行的網站是容易的,如音樂、電影、小說;但是如果是尋找長尾域(long tail domains)的網站是困難的,如化妝品、雜誌。第二個問題是面對眾多的資料怎樣生成提取模式。

        同時,人工模式可以保證很高的準確性,但是工具能夠幫助我們更加便利的編輯模式。最後AVP知識需要日常中積累和更新,包括不同時間類別的更新、新網站的加入、無序或網站崩潰需要自動檢測或手工處理。


        (三).Semantic Computation 語義計算
        PS:如果當初參加這個講座就能敘述清楚了,下面這些表述有些模糊,sorry~
        所有模組(modules)都應該是可選的:輸入AVP資料決定哪些模組是必需的,模組間的依賴必需遵守。同時,這些模組大部分都是半自動工具(semi-automatic tools)。
        下面具體介紹: 

        1.Cleaning
        檢測和清除表面錯誤,包括不可讀程式碼(Unreadable codes)、錯誤的截斷(Erroneous Truncation)、由於挖掘錯誤引起的錯誤屬性、雙位元組-單位元組替換(Double byte - single byte replacement)、英語字元處理(English character processing)等。

        2.Value Type Recognition 值型別識別
        自動識別AVP資料所給的屬性對應的值型別。其中值型別包括:
        Number(數字)、Data/Time(日期/時間)、Entity(實體)、Enumeration(列舉)、Text(default,預設文字)
        它可以幫助識別非法屬性值和提取候選同義的屬性名。

        3.Value Normalization 值正常化
        Splitting(分詞)

        E.g., movie_a, movie_b, and movie_c -> movie_a | movie_b |  movie_c
        Generation
        E.g., Chinese zodiac / zodiac: Tiger / The lion (十二生肖/生肖:老虎/獅子)
         ->  Chinese zodiac: Tiger and zodiac: The lion 
        Conversion(轉換)
        E.g., 2.26m -> 226cm

        4.Attribute Normalization 屬性正常化
        Domain-specific problem(特定領域問題)

        某些屬性被視為同義詞只在特定的領域甚至是兩個特定的知識源中。
        例如“大小(size)”和“螢幕(screen)”在一些手機網站上表示同義詞,但不是所有的開放域解釋都相同。
        分類模型(Classification model)來識別候選同義屬性
        其中特徵包括屬性淺層相似特徵、相似屬性值特徵、相似值型別(Value-type)特徵和實體值特徵。最後評選者從所有候選中選擇正確的相似屬性對。

        5.Knowledge Fusion 知識融合
        融合從不同資料來源的知識,關鍵問題——實體消歧(Entity disambiguation)。

        其解決方法是計算兩個相同名稱實體之間的相似性。一些基本屬性可以用來確定實體的身份,如“works of a writer”。其他一些屬性只能用來作相似性的特徵,如“nationality of a person”(國籍)。

        6.Entity Classification 實體分類
        為什麼需要分類呢?因為一些實體會丟失類別資訊;同時不失所有從源資料中挖掘的實體都有類別(category)。解決方法是:通過監督模型訓練已知類別的實體和它們的屬性-值對;使用結構化資料(AVPs)和非結構化資料(上下文文字)來精確地分類特徵。

        下面是一些在知識應用層的語義計算模組/方法。主要是具體的應用:
        實體消歧用於推理(Entity disambiguation for reasoning)
        陳曉旭的演的《紅樓夢》

        相關實體消歧(Related entity disambiguation)

        搜尋需求識別(Search requirement recognition)
        需要識別使用者搜尋的“李娜”是網球運動員、歌手、舞蹈家還是其他。

        其核心問題就是AVP相似計算,包括為不同的屬性定義不同的權重、有用屬性和無用屬性等。


        最後總結如下:
        1.網路搜尋的新趨勢:知識搜尋、語義搜尋、社會化搜尋
        2.就知識圖譜而言,研究語義方面至關重要。知識庫的構建和知識搜尋都需要語義計算(Knowledge base construction and knowledge search both need semantic computation)。
        3.各種網路資源應該被更好的利用:網路語料庫、查詢記錄、UGC資料


三. 面向知識圖譜的搜尋技術 —— 搜狗知立方

        這篇文章主要是搜狗張坤老師分享的知識圖譜技術,以前我也講過搜狗知立方和搜尋相關知識,這裡就以圖片為主簡單進行敘述了。參考:搜尋引擎和知識圖譜那些事
        首先簡單回顧一下傳統的網頁搜尋技術

        其中包括向量模型、Pagerank、根據使用者搜尋行為發現商業價值和社會價值、Learning to Rank(學習排序),這裡就不再詳細敘述,我前面有些文章介紹了這些。
        參考我的文章:機器學習排序之Learning to Rank簡單介紹

        搜尋結構發現變化如下所示。
        使用者需要獲取更準確的資訊,系統需要時間換取空間,計算替代索引,優質的資訊將轉化為機器理解的知識,使得這些知識和機器發揮更大作用。

        搜狗知立方整體框架圖如下所示,其中下部分的實體對齊、屬性對齊是我現在研究的部分。主要包括以下部分:
        1.本體構建(各型別實體挖掘、屬性名稱挖掘、編輯系統)
        2.例項構建(純文字屬性、實體抽取、半結構化資料抽取)
        3.異構資料整合(實體對齊、屬性值決策、關係建立)
        4.實體重要度計算
        5.推理完善資料

        國際上流行的知識庫或資料來源如下所示:
        Wolframalpha: 一個計算知識引擎,而不是搜尋引擎。其真正的創新之處,在於能夠馬上理解問題,並給出答案,在被問到"珠穆朗瑪峰有多高"之類的問題時,WolframAlpha不僅能告訴你海拔高度,還能告訴你這座世界第一高峰的地理位置、附近有什麼城鎮,以及一系列圖表。 
        Freebase: 6800萬實體,10億的關係。Google號稱擴充套件到5實體和25的關係。所有內容都由使用者新增,採用創意共用許可證,可以自由引用。
        DBpedia: wikipedia基金會的一個子專案,處於萌芽階段。DBpedia是一個線上關聯資料知識庫專案。它從維基百科的詞條中抽取結構化資料,以提供更準確和直接的維基百科搜尋,並在其他資料集和維基百科之間建立連線,並進一步將這些資料以關聯資料的形式釋出到網際網路上,提供給需要這些關聯資料的線上網路應用、社交網站或者其他線上關聯資料知識庫。 


        實體構建——實體和屬性的抽取
        (1) 各型別實體抽取
        利用使用者搜尋記錄。該記錄儲存了使用者的識別符號、以及使用者的查詢條目、查詢時間、搜尋引擎返回的結果以及使用者篩選後點選的連結。
        該資料集從一定程度上反映了人們對搜尋結果的態度,是使用者對網路資源的一種人工標識。根據使用者搜尋記錄的資料特點,可用二部圖表示該資料,其中qi表示使用者的查詢條目,uj表示使用者點選過的連結,wij表示qi和uj之間的權重,一般是通過使用者點選次數進行衡量。
        採用隨機遊走(Random Walk)對使用者搜尋記錄進行聚類,並選出每個類中具有高置信度的連結作為資料來源,同時抽取對應實體,並將置信度較高的實體加入種子實體中,進行下一次迭代。
        (2) 屬性抽取
        a) 半結構化網站,利用Tag path和Text node標識網頁,對屬性聚類
        b) 從查詢日誌中識別實體+屬性名
        本體構建中本體編輯推薦使用“
Protege JENA”軟體。

        資訊抽取系統的建立
        如下所示,獲取線上百科訊息盒的屬性和屬性值。在這部分,我們選擇基於機器學習的排序模型技術。基於多角度全面的海量的使用者行為為基礎,建立機器學習排序模型。使得搜尋結果得到一個更加細緻化、全面的效果優化。結構圖如下所示:




        由於沒有任何一個網站有所有的資訊,甚至是在一個領域裡。為了獲取到更加全面的知識,需要整合,這就需要對齊。其中資料來源包括:百度百科、豆瓣、起點中文網、互動百科、搜狐娛樂、新浪教育、Freebase等等。
        實體對齊
        下圖是一張經典的實體對齊圖。他是對“張藝謀”這個實體進行對齊,資料來源來自互動百科、百度百科、tvmao網站、搜狐娛樂。
        比如張藝謀的國籍需要對齊“中華人民共和國”、“中國(內地)”、“中國”三個屬性值;“國家”、“國籍”、“國籍”需要屬性對齊;再如出生日期對齊“1951年11月14日”、“1951-11-14”、“1951-11-14”實現屬性值對齊。
        另參考我的文章:基於VSM的命名實體識別、歧義消解和指代消解




        屬性值決策與關係建立
        屬性值決策可以看成是屬性值對齊,需要選擇來源多的資料,同時來源可靠。
        關係建立補齊需要提取連結,再統計連結數,計算連結重要程度,最後關聯實體。

        實體搜尋
        實體搜尋如“李娜”,會根據使用者的以前搜尋記錄,真正理解使用者搜尋,返回結果。辨別它是網球運動員、歌星、舞蹈家或跳水運動員。

        推理補充資料與驗證
        從原始三元組資料,推理生成新的資料,建立更多的實體間的連結關係,增加知識圖的邊的密度,例如:莫言作品。


        查詢語義理解、實體的識別和歸一
        舉例:美國                     羅恩尼                             女搶匪
                  美國<Loc>      羅恩尼<Person>            女搶匪<Movie>
                  美國<Loc>   喬阿吉姆·羅恩尼<Person> 俠盜魅影<Movie>
        PS:推薦大家自己去學習CRF相關知識,作者也在學習中



        屬性的模式挖掘
        由於表達方式的多樣性,對同一屬性,不同人有不同的說法。我們通過挖掘百度知道,來獲取屬性的各種各樣的描述方式。





        後臺檢索系統

        知立方資訊展現:
        1.提供知識庫資訊的展示載體,將知識庫的資訊轉化為使用者可以理解的內容;
        2.提供更加豐富的富文字資訊(不侷限於文字,增添圖片、動畫、表格等);
        3.提供更友好的使用者互動體驗:增加更多的使用者互動元素,如圖片瀏覽、點選試聽。並能夠引導使用者在更短的時間獲取更多的資訊。
        如下圖所示:“劉德華”分別點選上方基本資訊,點選歌曲,點選屬性標籤,點選具體的電影。

        再如重名、系列實體展現如下: “李娜 ”點選其他的同名人物、“十大元帥”點選某個具體的人物、“速度與激情”點選更多,展示更多的系列實體。



        關於知識圖譜這部分的資料不是很多,而且具體每個步驟是如何實現的資料就更少了。這篇文章主要作為知識圖譜的入門介紹,並通過會議敘述了百度知心和搜狗知立方,目前國內研究較早的知識圖譜。其中推薦大家看原文PDF,版權也是歸他們所有,我只是記錄下自己的學習筆記。
        總之,希望文章對你有所幫助,由於我沒有參加這次會議,所以可能有些錯誤或不能表述清楚的地方,尤其是具體實現過程,還請海涵,寫文不易,且看且珍惜,勿噴~

       (By:Eastmount 2015-11-16 深夜2點   http://blog.csdn.net/eastmount/