如何使用 Neo4J和Transformer 構建知識圖譜

作者 | Walid Amamou

譯者 | 平川

策劃 | 凌敏

本文最初發佈於 Towards Data Science。

如何使用 Neo4J和Transformer 構建知識圖譜

圖片由作者提供:Neo4j中的知識圖譜

簡 介

在這篇文章中,我將展示如何使用經過最佳化的、基於轉換器的命名實體識別(NER)以及 spaCy 的關係提取模型,基於職位描述建立一個知識圖譜。這裡介紹的方法可以應用於其他任何領域,如生物醫學、金融、醫療保健等。

以下是我們要採取的步驟:

在 Google Colab 中載入最佳化後的轉換器 NER 和 spaCy 關係提取模型;

建立一個 Neo4j Sandbox,並新增實體和關係;

查詢圖,找出與目標簡歷匹配度最高的職位,找出三個最受歡迎的技能和共現率最高的技能。

要了解關於如何使用 UBIAI 生成訓練資料以及最佳化 NER 和關係提取模型的更多資訊,請檢視以下文章。

UBIAI:簡單易用的 NLP 應用程式文字標註

如何使用 BERT 轉換器與 spaCy3 訓練一個聯合實體和關係提取分類器

如何使用 spaCy3 最佳化 BERT 轉換器

職位描述資料集可以從 Kaggle 獲取。

在本文結束的時候,我們就可以創建出如下所示的知識圖譜。

如何使用 Neo4J和Transformer 構建知識圖譜

圖片由作者提供:職位描述的知識圖譜

命名實體和關係提取

首先,我們載入 NER 和關係模型的依賴關係,以及之前最佳化過的 NER 模型本身,以提取技能、學歷、專業和工作年限:

載入我們想從中提取實體和關係的職位資料集:

從職位資料集中提取實體:

在將實體提供給關係提取模型之前,我們可以看下提取出的部分實體:

我們現在準備好預測關係了;首先載入關係提取模型,務必將目錄改為 rel_component/scripts 以便可以訪問關係模型的所有必要指令碼。

Neo4J

現在,我們可以載入職位資料集,並將資料提取到 Neo4j 資料庫中了。

首先,我們建立一個空的 Neo4j Sandbox,並新增連線資訊,如下所示:

接下來,我們將文件、實體和關係新增到知識圖譜中。注意,我們需要從實體 EXPERIENCE 的 name 中提取出整數年限,並將其作為一個屬性儲存起來。

現在開始進入有趣的部分了。我們可以啟動知識圖譜並執行查詢了。讓我們執行一個查詢,找出與目標簡歷最匹配的職位:

以表格形式顯示的結果中的公共實體:

如何使用 Neo4J和Transformer 構建知識圖譜

以視覺化形式顯示的圖:

如何使用 Neo4J和Transformer 構建知識圖譜

圖片由作者提供:基於最佳匹配職位

雖然這個資料集只有 29 個職位描述,但這裡介紹的方法可以應用於有成千上萬個職位的大規模資料集。只需幾行程式碼,我們立馬就可以提取出與目標簡歷匹配度最高的工作。

下面,讓我們找出最需要的技能:

如何使用 Neo4J和Transformer 構建知識圖譜

以及需要最高工作年限的技能:

如何使用 Neo4J和Transformer 構建知識圖譜

Web 開發和技術支援需要的工作年限最高,然後是安全設定。

最後,讓我們查下共現率最高的技能對:

如何使用 Neo4J和Transformer 構建知識圖譜

小 結

在這篇文章中,我們描述瞭如何利用基於轉換器的 NER 和 spaCy 的關係提取模型,用 Neo4j 建立知識圖譜。除了資訊提取之外,圖的拓撲結構還可以作為其他機器學習模型的輸入。

將 NLP 與圖資料庫 Neo4j 相結合,可以加速許多領域的資訊發現,相比之下,在醫療和生物醫學領域的應用效果更為顯著。

https://medium。com/m/global-identity?

TAG: 提取職位實體Neo4jNER