本文將展示如何使用Python生成的數據來填充數據庫。我還將向你展示如何使用Neo4j沙箱,這樣就可以使用不同的Neo4j數據庫設置。
可以在這里找到一個谷歌Colab筆記本:https://colab.research.google.com/drive/1J9__HotNoINHpucoipLH-4qWc48GALAk?usp=sharing
里面有這篇文章的代碼。(那本筆記本上有如何連接Colab和Kaggle的說明,可以讓你更快地下載數據。)
現在我們可以開始用Python做一些數據處理了。
為了寫這篇文章,我們將使用在Kaggle上找到的arXiv數據集,其中包含超過170萬篇STEM學術論文。(在寫這篇文章的時候,已經是第18版了。)你可以將數據下載到本地機器
https://www.kaggle.com/Cornell-University/arxiv
現在進入筆記本,我們可以開始查看數據。我通過以下方式加載數據:
(你不必使用tqdm,但我發現在文件大小超過179萬個條目時檢查進度很有幫助。)
可以通過df看到,我們的數據結構為:
假設我們想用這個數據框構建一個圖,我們想知道哪些作者發表了哪些論文,以及這些論文與哪些類別相關聯。
然后,我們希望有三種不同的節點類型與之對應:作者、論文和類別。
每個節點類型都有一兩個屬性。對于作家來說,有作者的名字。論文可以有ID和標題。最后,類別有自己的名稱。我們也有一些關系:作者和作者,論文和論文。
因此,我們的目標是擁有以下數據模型(用arrows.app繪制):
有一些列對我們很有用。例如,我打算保留id,這樣我們就可以使用它作為每個論文的唯一索引。之后,我想要得到每個作者的個人列表。此外,authors_parsed列為我們提供了一個更清晰的所有作者列表。當然,我們將保留標題欄作為論文的主要屬性。最后,我想保留categories列。
下一步是稍微清理一下數據,這樣數據幀的每行有一個作者,每行有一個類別。例如,我們看到authors_parsed列給出了一個列表,其中每個條目在名稱后面都有一個多余的逗號。
如果我們簡單地將其導入到數據庫中,我們將得到author節點,如(顯示一個小示例):
由于這不是一件令人愉快的事情(并且會導致查詢不是最優雅的),我們需要稍微清理一下。我們還看到categories列可以有一個單獨的類別,也可以有幾個不采用傳統列表格式的類別(如本示例的最后一行所示):
我們可以在Cypher中這樣做,但為了這篇文章的目的,我們將在Python中做清理,以便說明。
創建兩個幫助函數來清理這兩列:
得到的數據幀:
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.