從零開始構(gòu)建一個百科知識圖譜,完成語義搜索和智能問答
從零開始的知識圖譜生活,構(gòu)建一個百科知識圖譜,完成基于Deepdive的知識抽取、基于ES的簡單語義搜索、基于 REfO 的簡單KBQA
個人入門知識圖譜過程中的學(xué)習(xí)筆記,算是半教程類的,指引初學(xué)者對知識圖譜的各個任務(wù)有一個初步的認(rèn)識。目前暫無新增計(jì)劃。
1.簡介
目標(biāo)是包含百度百科、互動百科、中文wiki百科的知識,千萬級實(shí)體數(shù)量和億級別的關(guān)系數(shù)目。目前已完成百度百科和互動百科部分,其中百度百科詞條4,190,390條,互動百科詞條4,382,575條。轉(zhuǎn)換為RDF格式得到三元組 128,596,018個。存入 neo4j中得到節(jié)點(diǎn) 16,498,370個,關(guān)系 56,371,456個,屬性 61,967,517個。

項(xiàng)目碼源見文末
碼源:點(diǎn)擊跳轉(zhuǎn)
目錄
基于elasticsearch 的簡單語義搜索 支持實(shí)體檢索、實(shí)體屬性檢索和條件檢索
基于 REfO 的簡單KBQA
Silk 實(shí)戰(zhàn)
D2RQ 的使用
Jena 的使用
制作類似于NYT的遠(yuǎn)程監(jiān)督學(xué)習(xí)語料--baidu_6w
神經(jīng)網(wǎng)絡(luò)關(guān)系抽取
微信公眾號爬蟲
虎嗅網(wǎng)爬蟲
百度百科爬蟲
互動百科爬蟲
百度百科與互動百科的知識抽取
半結(jié)構(gòu)化數(shù)據(jù)
非結(jié)構(gòu)化數(shù)據(jù)
非結(jié)構(gòu)化文本的知識抽取
知識存儲
知識融合
KBQA
語義搜索
2.獲取數(shù)據(jù)
2.1 半結(jié)構(gòu)化數(shù)據(jù)
半結(jié)構(gòu)化數(shù)據(jù)從百度百科和互動百科獲取,采用scrapy框架,目前電影領(lǐng)域和通用領(lǐng)域兩類。
通用領(lǐng)域百科數(shù)據(jù):百度百科詞條4,190,390條,互動百科詞條3,677,150條。爬取細(xì)節(jié)請見從零開始構(gòu)建知識圖譜(七)百科知識圖譜構(gòu)建(一)百度百科的知識抽取
電影領(lǐng)域: 百度百科包含電影22219部,演員13967人,互動百科包含電影13866部,演員5931 人。項(xiàng)目詳細(xì)介紹請見從零開始構(gòu)建知識圖譜(一)半結(jié)構(gòu)化數(shù)據(jù)的獲取
2.2 非結(jié)構(gòu)化數(shù)據(jù)
非結(jié)構(gòu)化數(shù)據(jù)主要來源為微信公眾號、虎嗅網(wǎng)新聞和百科內(nèi)的非結(jié)構(gòu)化文本。
微信公眾號爬蟲獲取公眾號發(fā)布文章的標(biāo)題、發(fā)布時(shí)間、公眾號名字、文章內(nèi)容、文章引用來源,對應(yīng) ie/craw/weixinspider?;⑿峋W(wǎng)爬蟲 獲取虎嗅網(wǎng)新聞的標(biāo)題、簡述、作者、發(fā)布時(shí)間、新聞內(nèi)容,對應(yīng) ie/craw/newsspider。
3. 非結(jié)構(gòu)化文本的知識抽取
3.1 基于Deepdive的知識抽取
Deepdive是由斯坦福大學(xué)InfoLab實(shí)驗(yàn)室開發(fā)的一個開源知識抽取系統(tǒng)。它通過弱監(jiān)督學(xué)習(xí),從非結(jié)構(gòu)化的文本中抽取結(jié)構(gòu)化的關(guān)系數(shù) 據(jù) 。本次實(shí)戰(zhàn)基于OpenKG上的[支持中文的deepdive:斯坦福大學(xué)的開源知識抽取工具(三元組抽?。(http://www.openkg.cn/ dataset/cn-deepdive),我們基于此,抽取電影領(lǐng)域的演員-電影關(guān)系。
詳細(xì)介紹請見從零開始構(gòu)建知識圖譜(五)Deepdive抽取演員-電影間關(guān)系
3.2 神經(jīng)網(wǎng)絡(luò)關(guān)系抽取
利用自己的百科類圖譜,構(gòu)建遠(yuǎn)程監(jiān)督數(shù)據(jù)集,并在OpenNRE上運(yùn)行。最終生成的數(shù)據(jù)集包含關(guān)系事實(shí)18226,無關(guān)系(NA)實(shí)體對336 693,總計(jì)實(shí)體對354 919,用到了462個關(guān)系(包含NA)。
詳細(xì)介紹請見從零開始構(gòu)建知識圖譜(九)百科知識圖譜構(gòu)建(三)神經(jīng)網(wǎng)絡(luò)關(guān)系抽取的數(shù)據(jù)集構(gòu)建與實(shí)踐
4.結(jié)構(gòu)化數(shù)據(jù)到 RDF
結(jié)構(gòu)化數(shù)據(jù)到RDF由兩種主要方式,一個是通過direct mapping,另一個通過R2RML語言這種,基于R2RML語言的方式更為靈活,定制性強(qiáng)。對于R2RML有一些好用的工具,此處我們使用d2rq工具,它基于R2RML-KIT。
詳細(xì)介紹請見從零開始構(gòu)建知識圖譜(二)數(shù)據(jù)庫到 RDF及 Jena的訪問

5.知識存儲
5.1 將數(shù)據(jù)存入 Neo4j
圖數(shù)據(jù)庫是基于圖論實(shí)現(xiàn)的一種新型NoSQL數(shù)據(jù)庫。它的數(shù)據(jù)數(shù)據(jù)存儲結(jié)構(gòu)和數(shù)據(jù)的查詢方式都是以圖論為基礎(chǔ)的。圖論中圖的節(jié)本元素為節(jié)點(diǎn)和邊,對應(yīng)于圖數(shù)據(jù)庫中的節(jié)點(diǎn)和關(guān)系。我們將上面獲得的數(shù)據(jù)存到 Neo4j中。
百科類圖譜請見:從零開始構(gòu)建知識圖譜(八)百科知識圖譜構(gòu)建(二)將數(shù)據(jù)存進(jìn)neo4j
電影領(lǐng)域的請見從零開始構(gòu)建知識圖譜(六)將數(shù)據(jù)存進(jìn)Neo4j


6.KBQA
6.1 基于 REfO 的簡單KBQA
基于浙江大學(xué)在openKG上提供的?基于 REfO 的 KBQA 實(shí)現(xiàn)及示例,在自己的知識圖譜上實(shí)現(xiàn)簡單的知識問答系統(tǒng)。
詳細(xì)介紹請見從零開始構(gòu)建知識圖譜(三)基于REfO的簡單知識問答
示例

語義搜索
基于elasticsearch 的簡單語義搜索
本項(xiàng)目是對浙大的?基于elasticsearch的KBQA實(shí)現(xiàn)及示例?的簡化版本,并在自己的數(shù)據(jù)庫上做了實(shí)現(xiàn)。
詳細(xì)介紹請見從零開始構(gòu)建知識圖譜(四)基于ES的簡單語義搜索
示例

項(xiàng)目碼源見文末
[碼源:點(diǎn)擊跳轉(zhuǎn)]:https://blog.csdn.net/sinat_39620217/article/details/131641815

更多優(yōu)質(zhì)內(nèi)容請關(guān)注公號&知乎:汀丶人工智能;會提供一些相關(guān)的資源和優(yōu)質(zhì)文章,免費(fèi)獲取閱讀。