史上規模最大的中文知識圖譜以及估值兩個億的 AI 核心程式碼

進擊的Coder 發表於 2022-12-06
人工智慧

—— 大聲告訴我,怎樣才能可以讓你變得更強?

—— 充錢

—— ???

—— 都什麼玩意?還有啥子咧?

—— 充更多錢

執迷不悟,無可救藥了。

所以,正確答案應該是什麼呢?

答:是知識。

反正,說這些就是為了切入「知識」這個話題。

知識是什麼?比如:姚明的身高是 226cm,這就是一個知識。

那麼問題來了,世界上錯綜複雜的事物這麼多,我們上哪裡去學這麼多知識啊?怎麼快速把有意義的資料收集下來呢?

爬蟲?可以,去爬吧,維基百科,百度百科,爬個全站,然後分析下,是能得到不少知識,可你得花多少錢多少時間才能搞下來啊。

不過,今天你看到了這篇文章,那就不用費這些功夫了。

史上規模最大的中文知識圖譜

今天逛 GitHub 發現了一個開源專案,叫做 KnowledgeGraphData,號稱是史上規模最大的中文知識圖譜,有 1.4 億條資料。

史上規模最大的中文知識圖譜以及估值兩個億的 AI 核心程式碼


這個時代,想必大家或多或少也聽人吹噓過「知識圖譜」這個詞,好像每個公司也在自己建各種各樣的知識圖譜,想必大家不知道知識圖譜的也知道個差不多這是幹嘛的了。

知識就是力量,知識圖譜是人工智慧新時代的產物,簡單地說知識圖譜就是透過關聯關係將知識組成網狀的結構,然後我們的人工智慧可以透過這個圖譜來認識其代表的這一個現實事件,這個事件可以是現實,也可以是虛構的。

就像上面的圖一樣,每個實體(比如一個人、一家公司、一件事),它都會作為一個節點出現在知識圖譜裡面,實體和實體之間又有各種關聯關係,每一個實體又有各種屬性,每個屬性都有其對應的屬性值。

比如「姚明」的妻子是「葉莉」,他們之間就構成了夫妻關係,這就是實體和實體之間的關聯。「姚明」的身高是 226cm,「身高」就是一個屬性,「226cm」就是屬性值。

就是這樣,一個個的實體和屬性就構成了一個龐大的知識庫,把它構建成圖(Graph)的形式就成了知識圖譜,就是這麼回事。

那麼一條知識一般怎麼來表示呢?

很常見的形式就是三元組,比如:

姚明,身高,226cm


這裡以逗號分隔了,第一個欄位就代表實體,第二個欄位代表其屬性,第三個欄位代表其屬性值。

嗯,那今天介紹的這個開源知識圖譜也是這樣的形式,它是一個 csv 檔案,包含了 1.4 億條資料。

先放 GitHub 地址:,詳情大家可以直接過去看。

下載之後解壓得到一個 csv 檔案,看看文字行數:

wc -l ownthink_v2.csv
140919781 ownthink_v2.csv


確實是 1.4 億。

看看裡面的格式是怎樣的:

$ head ownthink_v2.csv
實體,屬性,值
膠飴,描述,別名: 飴糖、暢糖、暢、軟糖。
詞條,描述,詞條(拼音:cí tiáo)也叫詞目,是辭書學用語,指收列的詞語及其釋文。
詞條,標籤,文化
紅色食品,描述,紅色食品是指食品為紅色、橙紅色或棕紅色的食品。
紅色食品,中文名,紅色食品
紅色食品,是否含防腐劑,否
紅色食品,主要食用功效,預防感冒,緩解疲勞
紅色食品,適宜人群,全部人群
紅色食品,用途,增強表皮細胞再生和防止皮膚衰老

我們可以用 Python 來輸出一部分看看:

import sysimport csv
with open('ownthink_v2.csv', 'r', encoding='utf8') as fin:  reader = csv.reader(fin)  for index, read in enumerate(reader):    print(read)    if index > 10:      sys.exit(0)

執行結果:

['實體', '屬性', '值']
['膠飴', '描述', '別名: 飴糖、暢糖、暢、軟糖。']
['詞條', '描述', '詞條(拼音:cí tiáo)也叫詞目,是辭書學用語,指收列的詞語及其釋文。']
['詞條', '標籤', '文化']
['紅色食品', '描述', '紅色食品是指食品為紅色、橙紅色或棕紅色的食品。']
['紅色食品', '中文名', '紅色食品']
['紅色食品', '是否含防腐劑', '否']
['紅色食品', '主要食用功效', '預防感冒,緩解疲勞']
['紅色食品', '適宜人群', '全部人群']
['紅色食品', '用途', '增強表皮細胞再生和防止皮膚衰老']
['紅色食品', '標籤', '非科學']
['紅色食品', '標籤', '生活']

可以看到,輸出結果就是一個三元組的形式,三元組個數一共是 1.4 億個。

可以說是相當豐富了。

用法

這個知識圖譜是來自於「思知 OwnThink」的,利用知識圖譜我們可以做非常多的事情,比如做對話機器人、語義理解、知識推薦等等。

翻了翻「思知 OwnThink」的官方文件,發現他們已經在這個知識圖譜的基礎上搭建了很多服務了,比如對話機器人、微信機器人、語義理解等等相關的服務,並封裝了相應的 API。

詳情可以見:。

就拿知識圖譜來說吧:kg/,這裡封裝了一些 API,比如獲取歧義關係、獲取實體知識、獲取屬性值等等。

例如獲取屬性值,我們可以用兩種方式來獲取。

GET

我們可以使用 GET 請求直接獲取,請求的 URL 是 ,這裡就傳入實體名稱和屬性即可。

例如直接訪問:蘋果&attribute=顏色 就可以獲取 JSON 格式的結果了。

POST

同樣也可以以 POST 形式來獲取,Python 示例程式碼:

import requests
url = 'data = {    'entity': '蘋果',    'attribute': '顏色'}response = requests.post(url, data=data)print(response.json())

返回結果:

{'message': 'success', 'data': {'entity': '蘋果', 'attribute': '顏色', 'value': ['紅色粉色金黃色綠色白色']}}

這裡不知咋回事,結果的 list 沒有逗號分隔,但官方文件那邊是有的,應該是出了一點問題。

其他的一些呼叫也可以參考它的官方文件:

另外也可以關注下它們的自然語言處理工具、語義理解工具,看起來還是值得一用的。

AI 核心程式碼

想必之前大家又被一個號稱估值一個億的 AI 核心程式碼刷過屏,那麼首先看看人家的估值一個億的 AI 核心程式碼是怎樣的:

while True:
    print(input().replace('你', '我').replace('嗎', '').replace('?', '!'))

執行結果如下:

在嗎?
在!
你能聽懂中文嗎?
我能聽懂中文!
你是世界上最強的AI嗎?
我是世界上最強的AI!

看起來已經相當牛逼了!但還不夠!

有了這個圖譜的加持,我們可以把它的估值做到兩個億!

首先有了圖譜,我們就可以讓這個 AI 來學習知識了,比如讓它學習到「姚明」的「身高」是「226cm」這樣的知識,只要它會,那就有問必答,要是不會,你告訴它了,它就能學習,再問一遍就可以能答對,具有超強的學習和記憶能力!

怎麼樣碉堡了有沒有?

那就放出程式碼來吧!

from collections import defaultdict

data = defaultdict(dict)
file = 'ownthink_v2.csv'
total = 10000000


def learn(total=None):
    count = 0
    fin = open(file, encoding='utf-8')
    while total is None or count < total:
        line = fin.readline().strip()
        print(line)
        count += 1
        groups = line.split(',')
        if len(groups) == 3:
            data[groups[0]][groups[1]] = groups[2]


learn(total)
print(f'我學習了{total}條知識,來問我問題吧!')
while True:
    question = input('你問我個問題?')
    name, attribute = question.split('的')
    if name in data and attribute in data[name]:
        print(f'{name}的{attribute}是{data[name][attribute]}!')
    else:
        answer = input('我不知道啊,你告訴我唄!')
        data[name][attribute] = answer

其實吧哈哈,就是隨便玩玩寫了個玩具程式碼,主要是想看看裡面的知識全不全。

在這裡定義了 total 這個變數,隨便給它指定多少,他就學 CSV 裡面多少條知識,設定為 None 就會全部學習。

在這裡我們使用了 defaultdict 來儲存三元組資訊,然後最後根據問的問題來回答,如果它回答不上來,可以告訴它,下次再問它就會了。

我們來試試這個估值兩個億的 AI 程式碼吧:

我學習了100000000條知識,來問我問題吧!
你問我個問題?
寮國的首都
寮國的首都是永珍!
你問我個問題?
郭艾倫的身高
郭艾倫的身高是1米92!
你問我個問題?
郭艾倫的外號
我不知道啊,你告訴我唄!
郭一分
你問我個問題?
郭艾倫的外號
郭艾倫的外號是郭一分!

碉堡了有木有?哈哈哈。你看它既知道好多知識,又能回答問題,又能自學習,是不是遠超那一個億的核心程式碼了?想必估值兩個億不在話下了。

好了,玩歸玩,鬧歸鬧,別拿艾倫開玩笑。

大家如果感興趣可以去 GitHub 主頁()下載這個知識圖譜。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557738/viewspace-2661009/,如需轉載,請註明出處,否則將追究法律責任。

相關文章