與 AI 同行,利用 ChatGLM 構建知識圖譜

大家好,我是東方財富的一名算法工程師,這裏分享一些利用大模型賦能知識圖譜建設的一些實踐。

爲什麼知識圖譜需要大模型

在金融場景中,天然會有大量結構化的數據需要投入大量的人力去生產和維護,而這樣的數據又會大量被應用在下游的標籤、推薦、風控等場景。比如基金關聯的基金經理,基金淨值,基金重倉股等信息,需要從各個基金公司的公告信息中進行提取。

做個類比,在 1.0 時代,我們會利用大量的規則和人力去提取和校驗相應的數據,但這種方法往往需要針對特定的文本內容去維護各自的規則,成本較高。在 2.0 時代我們可以構建相應的深度學習模型,去輔助完成 NER、實體鏈接等工作。在這個過程中,數據的清洗,標註和訓練,往往需要非常專業的標註人員和算法開發參與,而且其準確率需要大量的工作來提高。在大模型時代,我們發現 ChatGPT 能以一個相對非常高的準確率去完成各式各樣的任務,這也讓我們有一個想法,是否可以利用大模型去輔助我們建設知識圖譜(畢竟不是啥業務都上得起大模型,一個圖譜能解決下游很多任務)。

通過一些實踐發現,ChatGPT 的確可以根據海量文本數據自動生成實體、屬性和關係三元組等知識元素,從而快速構建大規模的知識圖譜。

利用 ChatGPT 構建知識圖譜

社區裏已經有不少利用 ChatGPT 甚至 GPT4 構建知識圖譜的案例:

假設我們已經在圖數據庫中建了一些節點,囊括了所以上市公司,我們的目標是想構建一個關於上市公司的知識圖譜,包括董事長,上市時間等信息。

這裏推薦修改下面的代碼,構建相應的知識圖譜:https://github.com/cocacola-lab/ChatIE,我們只需將預設的實體類型和關係類型修改成我們需要的種類,就能實現零樣本的大規模知識圖譜構建,當然能用 GPT4 的話效果更佳。

本地部署的 ChatGLM 方案

考慮到本地部署的數據隱私問題,也可以將 ChatIE 中的 ChatGPT 接口換成 ChatGLM-6B,理論上可以接近 ChatGPT 的效果。

但在實際應用中,我們發現 ChatGLM 雖然具備了一定的內容抽取和鏈接能力,但是生成內容的可控性較差。

比如我們希望令模型按(實體1,實體2,...)或者 實體1 關係1 實體2 \n這樣的格式輸出結果,可以在大模型的輸入中添加:不要編造答案,並嚴格按照(實體1,實體2,...)的格式回答,不要有額外內容“ 類似的話。

但往往結果中還是有大量不可控的內容,需要做大量的正則匹配去清洗數據。

在後來的嘗試中,我們在 ChatGLM 中前置了兩輪對話達到了較好的效果。具體的代碼 demo 可以參考
利用 ChatGLM 進行金融知識抽取,具體的效果演示參考下圖:

當然這只是一個初級的 demo,後續還有更多利用 ES 和 NebulaGraph 進行校驗和應用的代碼,歡迎大家進行討論。

同主題線上分享

如果你對 LLM、知識圖譜感興趣,可以看看同主題的線上分享:和 LLM、圖數據庫從業者一起夜談這波 AI 風

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章