본문 바로가기

Papers/Implement

[python] node(vertex) topology index 만들기

728x90
반응형

 앞서 포스팅한 Snap 데이터를 이용하여 가중치가 존재하는 라벨 그래프 데이터를 만들어 보았다.

 

ssanggo.tistory.com/52

 

[python] 그래프 데이터 만들기(using. Snap)

파이썬을 이용하여 weight Labeled Graph Data를 만들어 보았다. 먼저, Graph data는 Snap Data를 사용하였다. Snap Data는 id_1, id_2 로 이루어진 데이터 이고, 이 데이터를 가공하여 weight Labeled Graph Da..

ssanggo.tistory.com


이번에는 만들어진 데이터에서 NTF index 를 만들어 볼 예정이다. NTF index는 아래 링크의 논문에서 사용한 Node Topology feature index 이며, 다음과 같은 index 구조를 가지고 있다.

 

ssanggo.tistory.com/48

 

[논문리뷰] Dynamic Top-K Interesting Subgraph Query on Large-Scale Labeled Graphs

 

ssanggo.tistory.com

NTF


[ Source Code ]

 

""" 3. make a Inverted Index(NTF) """
labels = ['A', 'B', 'C', 'D', 'E']
NTF = {i:0 for i in labels}
for k, v in nc.items():
    NTF[v] += 1


""" 4. make each labels Table """
import sys

mod = sys.modules[__name__]
tmp = {'id': [], 'deg': []}
tmp.update({i:[] for i in labels})

# labels 값에 따른 변수명 생성 그리고 값 셋팅
for l in labels:
    setattr(mod, '{}_Table'.format(l), tmp)

labels은 입력되는 데이터에 따라 달라지는 부분이지만, 편의를 위하여 A~E 까지의 레이블이 있다고 가정하고 구현하였다. 먼저 NTF의 변수를 초기화 해준 뒤, 입력 데이터의 레이블의 수에 따라 count += 1 하도록 만들었다.

(지금 생각을 해보니, 중복처리를 하지 않아, 추가로 중복처리를 처리해야 할 것 같다.)

 

그 다음, 각 레이블의 상세 index를 만들기 위한 방법으로 입력되는 레이블에 따라 A_Table, B_Table 과 같은 변수가 생성되고, 그 변수는 {'id': [], 'deg': [], 'num_A' : [] , ..., 'num_E' : []} 의 값으로 초기화 될 수 있도록 구현하였다. 

 

 

다음 포스팅은 EF index인 엣지에 따른 index 구축에 대해 포스팅 하겠다.

728x90
반응형

'Papers > Implement' 카테고리의 다른 글

dblp v10 json 파일 읽는 방법  (0) 2021.09.06
[python] 그래프 데이터 만들기(using. Snap)  (0) 2021.04.13