該系列文章主要講解知識圖譜或關(guān)系圖譜的構(gòu)建方法,前文介紹了Neo4j圖數(shù)據(jù)庫和Jieba、PyLTP的基本用法。本篇文章主要采用Python和Gephi構(gòu)建中國知網(wǎng)某個(gè)領(lǐng)域的作者合作關(guān)系和主題詞共現(xiàn)的知識圖譜,重點(diǎn)闡述了一種可操作的關(guān)系圖譜構(gòu)建方法,可用于論文發(fā)表、課程或企業(yè)可視化展示等。其基本步驟如下:
1.在中國知網(wǎng)搜索“清水江”關(guān)鍵詞,并導(dǎo)出論文Excel格式。
2.使用Python處理文本,獲取作者合作的共現(xiàn)矩陣及三元組。
3.Gephi導(dǎo)入CSV節(jié)點(diǎn)及邊文件,并構(gòu)建關(guān)系圖譜。
4.Gephi調(diào)整參數(shù),優(yōu)化關(guān)系圖譜。
這是一篇非常基礎(chǔ)的文章,而且不需要撰寫網(wǎng)絡(luò)爬蟲,最終生成的效果還不錯(cuò),可廣泛應(yīng)用于知識圖譜、引文分析、企業(yè)合作等領(lǐng)域。希望大家喜歡,尤其是研究自然語言處理和知識圖譜的同學(xué)。同時(shí),從今天起,博客的代碼盡量上傳到Github和CSDN下載,腳踏實(shí)地,與君同在。
下載地址:https://download.csdn.net/download/eastmount/11650953
文章目錄
- 一.最終效果圖
- 二.中國知網(wǎng)導(dǎo)出數(shù)據(jù)
- 三.什么是共現(xiàn)關(guān)系
- 四.Python構(gòu)建共現(xiàn)矩陣和三元組
- 五.Gephi構(gòu)建知識圖譜
- (一).數(shù)據(jù)準(zhǔn)備
- (二).數(shù)據(jù)導(dǎo)入
- (三).知識圖譜參數(shù)設(shè)置
- (四).可視化顯示
- 六.總結(jié)
前文參考
Neo4j圖數(shù)據(jù)庫系列:
[知識圖譜構(gòu)建] 一.Neo4j圖數(shù)據(jù)庫安裝初識及藥材供應(yīng)圖譜實(shí)例
[知識圖譜構(gòu)建] 二.《Neo4j基礎(chǔ)入門》基礎(chǔ)學(xué)習(xí)之創(chuàng)建圖數(shù)據(jù)庫節(jié)點(diǎn)及關(guān)系
[知識圖譜構(gòu)建] 三.Neo4j創(chuàng)建高校教師關(guān)系圖譜及查詢語句入門詳解
Python知識圖譜構(gòu)建系列:
[Python知識圖譜] 一.哈工大pyltp安裝及中文分句、中文分詞、導(dǎo)入詞典基本用法
[Python知識圖譜] 二.哈工大pyltp詞性標(biāo)注、命名實(shí)體識別、依存句法分析和語義角色標(biāo)注
[Python知識圖譜] 三.Jieba工具中文分詞、添加自定義詞典及詞性標(biāo)注詳解
關(guān)系圖譜系列:
[關(guān)系圖譜] 一.Gephi通過共現(xiàn)矩陣構(gòu)建知網(wǎng)作者關(guān)系圖譜
[關(guān)系圖譜] 二.Gephi導(dǎo)入共線矩陣構(gòu)建作者關(guān)系圖譜
知識圖譜實(shí)例系列:
[知識圖譜實(shí)戰(zhàn)篇] 一.數(shù)據(jù)抓取之Python3抓取JSON格式的電影實(shí)體
[知識圖譜實(shí)戰(zhàn)篇] 二.Json+Seaborn可視化展示電影實(shí)體
[知識圖譜實(shí)戰(zhàn)篇] 三.Python提取JSON數(shù)據(jù)、HTML+D3構(gòu)建基本可視化布局
[知識圖譜實(shí)戰(zhàn)篇] 四.HTML+D3+CSS繪制關(guān)系圖譜
[知識圖譜實(shí)戰(zhàn)篇] 五.HTML+D3添加鼠標(biāo)響應(yīng)事件顯示相關(guān)節(jié)點(diǎn)及邊
[知識圖譜實(shí)戰(zhàn)篇] 六.HTML+D3實(shí)現(xiàn)點(diǎn)擊節(jié)點(diǎn)顯示相關(guān)屬性及屬性值
[知識圖譜實(shí)戰(zhàn)篇] 七.HTML+D3實(shí)現(xiàn)關(guān)系圖譜搜索功能
[知識圖譜實(shí)戰(zhàn)篇] 八.HTML+D3繪制時(shí)間軸線及顯示實(shí)體
一.最終效果圖
作者合作知識圖譜
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第1張圖片](https://img.it610.com/image/info8/432eecfa607d486d9d766d4b2ecb008c.jpg)
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第2張圖片](https://img.it610.com/image/info8/d70088af726e4244ae08c72dcb4ef3bb.jpg)
下面是另一個(gè)主題“網(wǎng)絡(luò)安全”以某作者為中心的區(qū)域,分別是武大和北郵。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第3張圖片](https://img.it610.com/image/info8/0d005f780acb4d84b6cd3b74c9d06001.jpg)
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第4張圖片](https://img.it610.com/image/info8/083969da2c6d439f8502f82db386042a.jpg)
關(guān)鍵詞共現(xiàn)知識圖譜
二.中國知網(wǎng)導(dǎo)出數(shù)據(jù)
第一步:在中國知網(wǎng)CNKI中搜索“清水江”關(guān)鍵詞,返回期刊論文1007篇,作為目標(biāo)分析數(shù)據(jù)。
注意,中國知網(wǎng)最多能導(dǎo)出5000篇文獻(xiàn),如果文章過多建議增加按年份統(tǒng)計(jì),最后再匯總。同時(shí),由于博士論文、會議論文、報(bào)紙作者關(guān)系較為單一,所以這里僅分析期刊論文。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第5張圖片](https://img.it610.com/image/info8/3ecdbc6819444b61b7833deb5175b863.jpg)
第二步:點(diǎn)擊左上角勾選文獻(xiàn)。每次最多選擇50篇論文,接著點(diǎn)擊下一頁,導(dǎo)出500篇文獻(xiàn)。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第6張圖片](https://img.it610.com/image/info8/8a6048c564204a1696fec53c405c9118.jpg)
選擇下一頁:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第7張圖片](https://img.it610.com/image/info8/036d55ea81ea4de4ae39185845499a7e.jpg)
選中500篇論文之后,接著點(diǎn)擊“導(dǎo)出/參考文獻(xiàn)”選項(xiàng)。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第8張圖片](https://img.it610.com/image/info8/124a87c80fa44783bc9d5dddfab423d4.jpg)
第三步:在彈出的 界面中,選擇“Reforks”格式,點(diǎn)擊XLS導(dǎo)出。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第9張圖片](https://img.it610.com/image/info8/f0befc218da2441b8ecee9cdd8eeba12.jpg)
到處的表格如下圖所示,包括各種論文信息,可惜沒有下載量和被引用量(網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)),但我們的知識圖譜分析也夠了。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第10張圖片](https://img.it610.com/image/info8/1ea20a0d35c7469685a77156034dc81e.jpg)
第四步:再下載剩余的所有文獻(xiàn),每次500篇的下載,并整理在一個(gè)Excel表格中,過濾掉英文和無作者的論文,剩下958篇,即為分析的數(shù)據(jù)集。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第11張圖片](https://img.it610.com/image/info8/f33b49bd73484868824ef52b2fa2edc7.jpg)
三.什么是共現(xiàn)關(guān)系
引文分析常見的包括兩類,一種是共現(xiàn)關(guān)系,另一種是引用和被引用關(guān)系。本文主要講解共現(xiàn)關(guān)系,假設(shè)現(xiàn)在存在四篇文章,如下所示:
文章標(biāo)題 作者
大數(shù)據(jù)發(fā)展現(xiàn)狀分析 A,B,C,D
Python網(wǎng)絡(luò)爬蟲 A,B,C
貴州省大數(shù)據(jù)戰(zhàn)略 B,A,D
大數(shù)據(jù)分析重要 D,A
第一步:寫代碼抓取該領(lǐng)域文章的所有作者,即:A、B、C、D。
第二步:接著獲取對應(yīng)的共現(xiàn)矩陣,比如文章“大數(shù)據(jù)發(fā)展現(xiàn)狀分析”,則認(rèn)為A、B、C、D共現(xiàn),在他們之間建立一條邊。共現(xiàn)矩陣如下所示,共13條邊。
(1) [ ? A B C D A 0 2 2 2 B 1 0 2 2 C 0 0 0 1 D 1 0 0 0 ] \left[ \begin{matrix} -& A & B & C & D \\ A & 0 & 2 & 2 & 2 \\ B & 1 & 0 & 2 & 2 \\ C & 0 & 0 & 0 & 1 \\ D & 1 & 0 & 0 & 0 \end{matrix} \right] \tag{1} ? ? ? ? ? ? ? ? A B C D ? A 0 1 0 1 ? B 2 0 0 0 ? C 2 2 0 0 ? D 2 2 1 0 ? ? ? ? ? ? ? ? ( 1 )
第三步:由于最后的圖譜是無向圖,為了方便計(jì)算,我們將矩陣的下三角數(shù)據(jù)加至上三角,從而減少計(jì)算量。
(1) [ ? A B C D A 0 3 2 3 B 0 0 2 2 C 0 0 0 1 D 0 0 0 0 ] \left[ \begin{matrix} -& A & B & C & D \\ A & 0 & 3 & 2 & 3 \\ B & 0 & 0 & 2 & 2 \\ C & 0 & 0 & 0 & 1 \\ D & 0 & 0 & 0 & 0 \end{matrix} \right] \tag{1} ? ? ? ? ? ? ? ? A B C D ? A 0 0 0 0 ? B 3 0 0 0 ? C 2 2 0 0 ? D 3 2 1 0 ? ? ? ? ? ? ? ? ( 1 )
第四步:通過共現(xiàn)矩陣分別獲取兩兩關(guān)系及權(quán)重,再寫入CSV或Excel文件中,如下所示。知識圖譜通常由三元組構(gòu)成,包括 {實(shí)體,屬性,屬性值}、{實(shí)體、關(guān)系、實(shí)體},這里的{Source、Weight、Weight}也可以稱為一個(gè)三元組。
(2) [ S o u r c e T a r g e t W e i g h t A B 3 A C 2 A D 3 B C 2 B D 2 C D 1 ] \left[ \begin{matrix} Source & Target & Weight \\ A & B & 3 \\ A & C & 2 \\ A & D & 3 \\ B & C & 2 \\ B & D & 2 \\ C & D & 1 \end{matrix} \right] \tag{2} ? ? ? ? ? ? ? ? ? ? ? S o u r c e A A A B B C ? T a r g e t B C D C D D ? W e i g h t 3 2 3 2 2 1 ? ? ? ? ? ? ? ? ? ? ? ? ( 2 )
第五步:將該CSV文件導(dǎo)入Gephi中,并繪制相關(guān)的圖形。因?yàn)樵搶?shí)例節(jié)點(diǎn)比較少,下面是Pyhton調(diào)用Networkx繪制的代碼及圖形。
# -*- coding: utf-8 -*-
import
networkx
as
nx
import
matplotlib
.
pyplot
as
plt
#定義有向圖
DG
=
nx
.
Graph
(
)
#添加五個(gè)節(jié)點(diǎn)(列表)
DG
.
add_nodes_from
(
[
'A'
,
'B'
,
'C'
,
'D'
]
)
print
DG
.
nodes
(
)
#添加邊(列表)
DG
.
add_edge
(
'A'
,
'B'
,
weight
=
3
)
DG
.
add_edge
(
'A'
,
'C'
,
weight
=
2
)
DG
.
add_edge
(
'A'
,
'D'
,
weight
=
3
)
DG
.
add_edge
(
'B'
,
'C'
,
weight
=
2
)
DG
.
add_edge
(
'B'
,
'D'
,
weight
=
2
)
DG
.
add_edge
(
'C'
,
'D'
,
weight
=
1
)
#DG.add_edges_from([('A', 'B'), ('A', 'C'), ('A', 'D'), ('B','C'),('B','D'),('C','D')])
print
DG
.
edges
(
)
#繪制圖形 設(shè)置節(jié)點(diǎn)名顯示\節(jié)點(diǎn)大小\節(jié)點(diǎn)顏色
colors
=
[
'red'
,
'green'
,
'blue'
,
'yellow'
]
nx
.
draw
(
DG
,
with_labels
=
True
,
node_size
=
900
,
node_color
=
colors
)
plt
.
show
(
)
繪制圖形如下所示:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第12張圖片](https://img.it610.com/image/info8/a21b889e6c664a798f3b816ccd2d9b0d.jpg)
接下來我們將告訴大家如何撰寫Python代碼獲取作者共現(xiàn)矩陣及三元組。
四.Python構(gòu)建共現(xiàn)矩陣和三元組
第一步 :將Excel中作者列單獨(dú)提取至word.txt文件中,如下圖所示。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第13張圖片](https://img.it610.com/image/info8/0a144797acb9496c88ec79412d836ffc.jpg)
第二步:運(yùn)行Python代碼獲取共現(xiàn)矩陣和{Source, Weight,Target}三元組。
- 按行讀取TXT數(shù)據(jù),并調(diào)用split(’;’)分割作者,將所有作者信息存儲至word列表中(不含重復(fù)項(xiàng))
- 建立 word_vector[作者數(shù)][作者數(shù)] 共現(xiàn)矩陣,依次獲取每行的兩個(gè)作者下標(biāo)位置,記錄在變量w1、w2、n1、n2中
- 詞頻矩陣賦值,這里通過判斷計(jì)算上三角矩陣 word_vector[n1][n2] += 1 或 word_vector[n2][n1] += 1
- 兩層循環(huán)獲取共現(xiàn)矩陣 word_vector[i][j] 中不為0的數(shù)值,word[i]、word[j] 和權(quán)重 word_vector[i][j] 即為三元組
- 將最終結(jié)果輸出至TXT和CSV文件
# -*- coding: utf-8 -*-
"""
@author: eastmount CSDN 楊秀璋 2019-09-02
"""
import
pandas
as
pd
import
numpy
as
np
import
codecs
import
networkx
as
nx
import
matplotlib
.
pyplot
as
plt
import
csv
#---------------------------第一步:讀取數(shù)據(jù)-------------------------------
word
=
[
]
#記錄關(guān)鍵詞
f
=
open
(
"word.txt"
)
line
=
f
.
readline
(
)
while
line
:
#print line
line
=
line
.
replace
(
"\n"
,
""
)
#過濾換行
line
=
line
.
strip
(
'\n'
)
for
n
in
line
.
split
(
';'
)
:
#print n
if
n
not
in
word
:
word
.
append
(
n
)
line
=
f
.
readline
(
)
f
.
close
(
)
print
len
(
word
)
#作者總數(shù)
#--------------------------第二步 計(jì)算共現(xiàn)矩陣----------------------------
a
=
np
.
zeros
(
[
2
,
3
]
)
print
a
#共現(xiàn)矩陣
#word_vector = np.zeros([len(word),len(word)], dtype='float16')
#MemoryError:矩陣過大匯報(bào)內(nèi)存錯(cuò)誤
#https://jingyan.baidu.com/article/a65957f434970a24e67f9be6.html
#采用coo_matrix函數(shù)解決該問題
from
scipy
.
sparse
import
coo_matrix
print
len
(
word
)
#類型
word_vector
=
coo_matrix
(
(
len
(
word
)
,
len
(
word
)
)
,
dtype
=
np
.
int8
)
.
toarray
(
)
print
word_vector
.
shape
f
=
open
(
"word.txt"
)
line
=
f
.
readline
(
)
while
line
:
line
=
line
.
replace
(
"\n"
,
""
)
#過濾換行
line
=
line
.
strip
(
'\n'
)
#過濾換行
nums
=
line
.
split
(
';'
)
#循環(huán)遍歷關(guān)鍵詞所在位置 設(shè)置word_vector計(jì)數(shù)
i
=
0
j
=
0
while
i
<
len
(
nums
)
:
#ABCD共現(xiàn) AB AC AD BC BD CD加1
j
=
i
+
1
w1
=
nums
[
i
]
#第一個(gè)單詞
while
j
<
len
(
nums
)
:
w2
=
nums
[
j
]
#第二個(gè)單詞
#從word數(shù)組中找到單詞對應(yīng)的下標(biāo)
k
=
0
n1
=
0
while
k
<
len
(
word
)
:
if
w1
==
word
[
k
]
:
n1
=
k
break
k
=
k
+
1
#尋找第二個(gè)關(guān)鍵字位置
k
=
0
n2
=
0
while
k
<
len
(
word
)
:
if
w2
==
word
[
k
]
:
n2
=
k
break
k
=
k
+
1
#重點(diǎn): 詞頻矩陣賦值 只計(jì)算上三角
if
n1
<=
n2
:
word_vector
[
n1
]
[
n2
]
=
word_vector
[
n1
]
[
n2
]
+
1
else
:
word_vector
[
n2
]
[
n1
]
=
word_vector
[
n2
]
[
n1
]
+
1
#print n1, n2, w1, w2
j
=
j
+
1
i
=
i
+
1
#讀取新內(nèi)容
line
=
f
.
readline
(
)
f
.
close
(
)
#--------------------------第三步 TXT文件寫入--------------------------
res
=
open
(
"word_word_weight.txt"
,
"a+"
)
i
=
0
while
i
<
len
(
word
)
:
w1
=
word
[
i
]
j
=
0
while
j
<
len
(
word
)
:
w2
=
word
[
j
]
#判斷兩個(gè)詞是否共現(xiàn) 共現(xiàn)&詞頻不為0的寫入文件
if
word_vector
[
i
]
[
j
]
>
0
:
#print w1 +" " + w2 + " "+ str(int(word_vector[i][j]))
res
.
write
(
w1
+
" "
+
w2
+
" "
+
str
(
int
(
word_vector
[
i
]
[
j
]
)
)
+
"\r\n"
)
j
=
j
+
1
i
=
i
+
1
res
.
close
(
)
#共現(xiàn)矩陣寫入文件 如果作者數(shù)量較多, 建議刪除下面部分代碼
res
=
open
(
"word_jz.txt"
,
"a+"
)
i
=
0
while
i
<
len
(
word
)
:
j
=
0
jz
=
""
while
j
<
len
(
word
)
:
jz
=
jz
+
str
(
int
(
word_vector
[
i
]
[
j
]
)
)
+
" "
j
=
j
+
1
res
.
write
(
jz
+
"\r\n"
)
i
=
i
+
1
res
.
close
(
)
#--------------------------第四步 CSV文件寫入--------------------------
c
=
open
(
"word-word-weight.csv"
,
"wb"
)
#創(chuàng)建文件
#c.write(codecs.BOM_UTF8) #防止亂碼
writer
=
csv
.
writer
(
c
)
#寫入對象
writer
.
writerow
(
[
'Word1'
,
'Word2'
,
'Weight'
]
)
i
=
0
while
i
<
len
(
word
)
:
w1
=
word
[
i
]
j
=
0
while
j
<
len
(
word
)
:
w2
=
word
[
j
]
#判斷兩個(gè)詞是否共現(xiàn) 共現(xiàn)詞頻不為0的寫入文件
if
word_vector
[
i
]
[
j
]
>
0
:
#寫入文件
templist
=
[
]
templist
.
append
(
w1
)
templist
.
append
(
w2
)
templist
.
append
(
str
(
int
(
word_vector
[
i
]
[
j
]
)
)
)
#print templist
writer
.
writerow
(
templist
)
j
=
j
+
1
i
=
i
+
1
c
.
close
(
)
如果輸入數(shù)據(jù)為:
A
;
B
;
C
;
D
A
;
B
;
C
B
;
A
;
D
D
;
A
則輸出結(jié)果如下圖所示:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第14張圖片](https://img.it610.com/image/info8/4bf32c3691b344cd800fbe6a37b9d43e.jpg)
第三步:最終的“清水江”文獻(xiàn)輸出結(jié)果如下所示,主要是 word-word-weight.csv 文件。
由于split函數(shù)分割過程中,可能存在多余空格的現(xiàn)象,如下圖所示,我們將含有空白的欄目刪除。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第15張圖片](https://img.it610.com/image/info8/13a0e7fa5ba04cc38c7e45601e5df74e.jpg)
完整的三元組共1255組,即構(gòu)成了1255條邊。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第16張圖片](https://img.it610.com/image/info8/b5d61720614d4e899ad1ac2eab0210bb.jpg)
注意,如果作者數(shù)較多時(shí),代碼中盡量不要使用print輸出中間結(jié)果,并且只做 word-word-weight.csv 文件寫入操作即可。同時(shí),建議先嘗試運(yùn)行小的數(shù)據(jù)集,如前面的ABCD,代碼能正確運(yùn)行之后再加載大的數(shù)據(jù)集。
五.Gephi構(gòu)建知識圖譜
眾所周知,知識圖譜都是有節(jié)點(diǎn)和邊組成的,每一個(gè)作者或每一個(gè)關(guān)鍵詞可以作為一個(gè)節(jié)點(diǎn),而共現(xiàn)關(guān)系可以構(gòu)造邊。如果共現(xiàn)的次數(shù)越多,表示合作越緊密,則邊越粗,反之越細(xì)。當(dāng)使用度來表示節(jié)點(diǎn)大小時(shí),如果某個(gè)節(jié)點(diǎn)越大,則表示該節(jié)點(diǎn)共現(xiàn)合作的數(shù)量越多。下面開始分享Gephi軟件繪制關(guān)系圖譜的流程。
(一).數(shù)據(jù)準(zhǔn)備
edges.csv
包含邊的文件就是前面的 word-word-weight.csv,但需要修改表頭并增加一列類型Type,其值為Undirected(無向圖)。
Source
,
Target
,
Type
,
Weight
趙艷
,
吳娟
,
Undirected
,
1
趙艷
,
楊興
,
Undirected
,
1
趙艷
,
張?jiān)姮?
,
Undirected
,
1
傅慧平
,
張金成
,
Undirected
,
2
傅慧平
,
楊正宏
,
Undirected
,
1
周相卿
,
劉嘉寶
,
Undirected
,
1
曹端波
,
付前進(jìn)
,
Undirected
,
1
李紅香
,
馬國君
,
Undirected
,
4
胡世然
,
楊興
,
Undirected
,
3
胡世然
,
周承輝
,
Undirected
,
4
胡世然
,
李建光
,
Undirected
,
7
胡世然
,
朱玲
,
Undirected
,
3
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第17張圖片](https://img.it610.com/image/info8/f461ad056d904c1a88562f34dc6fe3cd.png)
nodes.csv
接下來我們還要創(chuàng)建一個(gè)包含節(jié)點(diǎn)的信息。只需要將Source和Target兩列數(shù)據(jù)復(fù)制到nodes.csv中,然后去除重復(fù)的即可。當(dāng)然,如果數(shù)量很大,Python寫個(gè)循環(huán)代碼也能處理。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第18張圖片](https://img.it610.com/image/info8/e9c35bc4ce1841e78a2ddf2233af21a1.jpg)
接著將第一列復(fù)制到第二列,需要注意id表示編號(名稱)、label表示節(jié)點(diǎn)類標(biāo),這里中文顯示。nodes.csv最終輸出結(jié)果如下圖所示:
id
,
label
趙艷
,
趙艷
傅慧平
,
傅慧平
周相卿
,
周相卿
曹端波
,
曹端波
李紅香
,
李紅香
王華
,
王華
韋建麗
,
韋建麗
徐杰舜
,
徐杰舜
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第19張圖片](https://img.it610.com/image/info8/e031503b4bab47449148fb2c1806ae6a.png)
(二).數(shù)據(jù)導(dǎo)入
數(shù)據(jù)準(zhǔn)備充分之后,開始我們的知識圖譜構(gòu)建之旅吧!
第一步:安裝并打開Gephi軟件。軟件我已經(jīng)上傳到下載包中供大家使用了。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第20張圖片](https://img.it610.com/image/info8/7fb77e5452ea4f06a29942bab13a0086.jpg)
第二步:新建工程,并選擇“數(shù)據(jù)資料”,輸入電子表格。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第21張圖片](https://img.it610.com/image/info8/0745ddbe5a964b35aea17b8999caf714.jpg)
第三步:導(dǎo)入節(jié)點(diǎn)文件nodes.csv,注意CSV文件中表頭切記定位為 id、label,導(dǎo)入一定選擇“節(jié)點(diǎn)表格”和“GB2312”編碼,點(diǎn)擊“完成”即可。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第22張圖片](https://img.it610.com/image/info8/a7fe2eb1b3a74d9887388d4859b66b49.jpg)
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第23張圖片](https://img.it610.com/image/info8/b7e10b67e7fb4d139c6961e57becdb93.jpg)
第四步:導(dǎo)入邊文件edges.csv,注意CSV文件中表頭切記為Source(起始點(diǎn))、Target(目標(biāo)點(diǎn))、Weight(權(quán)重)、Tpye(無向邊 Undirected)。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第24張圖片](https://img.it610.com/image/info8/f8e468a113e7427cbdd4294b6dfd2bc4.jpg)
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第25張圖片](https://img.it610.com/image/info8/b36682d7e46049d3a584329961aabaec.jpg)
導(dǎo)入成功后如下圖所示:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第26張圖片](https://img.it610.com/image/info8/b8c6fcf163ca44b7aa4e4c1272d7974c.jpg)
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第27張圖片](https://img.it610.com/image/info8/d516aa031f6641a0a305b7efb75e0727.jpg)
導(dǎo)入成功后點(diǎn)擊“概覽”顯示如下所示,接著就是調(diào)整參數(shù)。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第28張圖片](https://img.it610.com/image/info8/1c3c0b2df4804661816a9f75f2492084.jpg)
(三).知識圖譜參數(shù)設(shè)置
設(shè)置外觀如下圖所示,主要包括顏色、大小、標(biāo)簽顏色、標(biāo)簽尺寸。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第29張圖片](https://img.it610.com/image/info8/dbdacaba1fbe4a3a9a398b7954e5750d.jpg)
1.設(shè)置節(jié)點(diǎn)大小和顏色。
選中顏色,點(diǎn)擊“數(shù)值設(shè)定”,選擇渲染方式為“度”。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第30張圖片](https://img.it610.com/image/info8/8db2a3c6fb1a4642b126510bd7b4e81e.jpg)
顯示結(jié)果如下所示:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第31張圖片](https://img.it610.com/image/info8/99fda31203c8455a9dbba188d962f4ba.jpg)
接著設(shè)置節(jié)點(diǎn)大小,數(shù)值設(shè)定為“度”,最小尺寸為20,最大尺寸為80。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第32張圖片](https://img.it610.com/image/info8/e7eac70a81594ad7a3d3c78c82d9659c.jpg)
2.設(shè)置邊大小和顏色。
設(shè)置邊顏色的數(shù)值設(shè)定為“邊的權(quán)重”,如下圖所示。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第33張圖片](https://img.it610.com/image/info8/2edb87602b3f471196c65b17e2efa0d9.jpg)
設(shè)置邊的大小數(shù)值設(shè)定為“邊的權(quán)重”。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第34張圖片](https://img.it610.com/image/info8/98f5c738cb7a49dfab9ff79cb8ef4661.jpg)
3.在布局中選擇“Fruchterman Reingold”。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第35張圖片](https://img.it610.com/image/info8/31d3d212255f4699bbaf1c507ac5b5d8.jpg)
顯示結(jié)果如下所示:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第36張圖片](https://img.it610.com/image/info8/5c9e351cae7540d4b86a8aeff77fc108.jpg)
4.設(shè)置模塊化。在右邊統(tǒng)計(jì)中點(diǎn)擊“運(yùn)行”,設(shè)置模塊性。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第37張圖片](https://img.it610.com/image/info8/bb41dd734ed34646921bdedd95a53d7d.jpg)
5.設(shè)置平均路徑長度。在右邊統(tǒng)計(jì)中點(diǎn)擊“運(yùn)行”,設(shè)置邊概述。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第38張圖片](https://img.it610.com/image/info8/5ec4f3e871eb4d2f93e0272f8e02b22a.jpg)
6.重新設(shè)置節(jié)點(diǎn)屬性。
節(jié)點(diǎn)大小數(shù)值設(shè)定為“度”,最小值還是20,最大值還是80。
節(jié)點(diǎn)顏色數(shù)值設(shè)定為“Modularity Class”,表示模塊化。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第39張圖片](https://img.it610.com/image/info8/a46fdd69d6be4aaf8c73eb830bd1072b.jpg)
此時(shí)圖形顯示如下所示,非常好看,有關(guān)系的人物顏色也設(shè)置為了類似的顏色。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第40張圖片](https://img.it610.com/image/info8/4f46d1c068b64a2e900d3c275f565e44.jpg)
(四).可視化顯示
顯示標(biāo)簽如下圖所示:
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第41張圖片](https://img.it610.com/image/info8/0b0416f8c17e45f68bdec962b5b01d82.jpg)
最終顯示如下圖所示。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第42張圖片](https://img.it610.com/image/info8/432eecfa607d486d9d766d4b2ecb008c.jpg)
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第43張圖片](https://img.it610.com/image/info8/eee59d9137344885ab86ba92dc99b55b.jpg)
講到這里,整篇文章就結(jié)束了,同理可以生成關(guān)鍵詞的共現(xiàn)圖譜。
![[Python知識圖譜] 四.Python和Gephi實(shí)現(xiàn)中國知網(wǎng)合作關(guān)系知識圖譜_第44張圖片](https://img.it610.com/image/info8/8879491dde8542cbb6932fdd80a4cd7f.jpg)
同時(shí),如果讀者對如何實(shí)現(xiàn)以某一個(gè)作者為中心的區(qū)域領(lǐng)域,后面作者可以再分享一篇文章。
六.總結(jié)
最后簡單總結(jié)下,Neo4圖數(shù)據(jù)庫的j缺點(diǎn)是無法設(shè)置節(jié)點(diǎn)的權(quán)重大小,所有節(jié)點(diǎn)大小一致,并且運(yùn)行時(shí)間較長。Gephi缺點(diǎn)是不支持語句查詢,希望未來自己能搞一個(gè)開源的、靈活的關(guān)系圖譜繪制框架。同時(shí),真正的知識圖譜是涉及語義、命名實(shí)體識別、關(guān)系抽取、實(shí)體對齊及消歧等,后面作者在有時(shí)間的情況下將繼續(xù)為讀者分享相關(guān)知識,前行路上與你同在。
珞珞如石,溫而若珈;瀟灑坦蕩,一生澄澈。新學(xué)期,新生活,新里程。
一個(gè)多月的閉關(guān),深深體會到數(shù)學(xué)和英語的重要性,短板抓緊補(bǔ)起來,長板卻沒有。開學(xué)八門課,《信息論》《現(xiàn)代密碼學(xué)》《網(wǎng)絡(luò)安全協(xié)議》《信息安全前沿》《信息安全與可信計(jì)算》《自然語言處理》等,就NLP熟悉點(diǎn),得加油了,更要靜下心來去“做”、“學(xué)”、“問”。Stay hungry,Stay foolish~
(By:Eastmount 2019-09-02 下午5點(diǎn) http://blog.csdn.net/eastmount/ )
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
