因為研究方向是知識圖譜,就有興致想要構建一個簡單的知識圖譜,就在網上查找了一下,參考了neo4j搭建簡單的金融知識圖譜的思想,就着手從零開始構建。
1、首先就要考慮數據的獲得,因為之前沒有接觸過爬蟲之類,參考這篇,就僅僅采用簡單的requests+正則表達式,爬取起點中文網的全部作品中的作者,作者ID,作品,作品ID,標簽,標簽ID,子標簽以及作品完成與否這些數據,在這里參考了網上眾多的爬蟲代碼,在這里,后期可以進一步擴展,點進作者頁面再進行爬取更多的信息,在此,爬蟲的知識太少,只會爬類似頁面的信息,比如,1到20頁的信息,通常在網址上有不同,很可能是數字規律性的改變,但是,對於起點中文網的作者網址,唯一找到的規律就僅僅只是后面是作者的ID,至於兩者怎么結合,怎么爬取,有可能技術不精,還沒弄出來,以后可在此增加。
2、獲得了這些csv,又出現了問題,就是打開這些csv,竟然亂碼了,在網上查找了一番,發現了一個有效的方法,先建一個excel,然后,點擊數據,點擊自文本,然后,再把想要轉化的文本導入,文件原始格式改為簡體中文,后面直接就點下一步,再打開csv,就不會亂碼了,解決了亂碼下一步就是導入neo4j。
這里的au_bo就是作者與小說的關系,其中就包含:START_ID :END_ID relation :TYPE,作者ID和小說ID,兩者之間的關系,TYPE可以和關系一樣,畢竟只是一個標記。
author就是作者信息,包含index:ID name :LABEL,作者ID和作者名字,標簽,在這里就很遺憾,沒有能夠多弄幾個數據,以后可以增加。
bo_co這一個還沒有實驗。
book就是小說信息,包含小說ID和小說名字,標簽。
book_pro就是小說的標簽,包含小說ID和標簽ID,以及兩者關系,TYPE,在這里,后來想了想感覺可以不用關系模式,可以合並在book中,后期再試試。
pro1是大標簽,大標簽ID和大標簽的名字,LABEL,比如:1,仙俠之類的
pro2是小標簽,小標簽ID和小標簽的名字,LABEL,比如仙俠中包含了很多小的標簽
t1_t2就是大標簽與小標簽的關系,概念屬於。
3、導入neo4j,參考的是這里
首先,為了不寫import路徑,就選擇了簡單的方法,在neo4j的bin下,創建一個importdata,然后將包含CSV的文件夾,放在該處,然后,再在cmd中導入,
neo4j-admin import --mode=csv --database=novel.db --nodes importdata\novel\author.csv --nodes importdata\novel\book.csv --nodes importdata\novel\pro1.csv --nodes importdata\novel\pro2.csv --relationships importdata\novel\au_bo.csv --relationships importdata\novel\book_pro.csv --relationships importdata\novel\t1_t2.csv
我的數據庫名字是novel.db,然后其中author,book,pro1,pro2這些csv就是節點,au_bo,book_pro,t1_t2就是其中兩者的關系
在這里,碰到了問題,就是報錯,沒有這些csv,問題就在於需要進入neo4j文件下的bin中,在輸入上述命令
另一個錯誤,就是導入過程中的錯誤,這就在於這些爬下來的數據,不知道為什么有重復又有遺漏的數據,那么就涉及數據清洗,這里還沒有仔細研究,后期再研究研究
因為,數據不是很多,就采用人工校對,在關系中的節點必須要存在這些節點,不幸的我,200數據,在仔細篩選中,只剩下130。
每次導入必須把原錯誤導入的文件夾刪除,在neo4j的data的databases中刪除。
同時還有個關鍵,查看什么圖譜,必須將neo4j的conf中neo4j.conf
dbms.active_database=novel.db
后面修改為你所需要查看的數據庫,此處我的就是novel.db
4、問題眾多啊,成功導入后,在cmd中輸入neo4j.bat console,然后,在瀏覽器中輸入http://localhost:7474/,就可以看到,我的竟然又亂碼了,果然在前面的修改csv,有問題,
就可以將csv用記事本打開,然后,另存為,果然編碼是ANSI,在這里需要改為UTF-8,然后,修改完就正確了。
很開心,后面再增加更多內容