앞서 포스팅한 Snap 데이터를 이용하여 가중치가 존재하는 라벨 그래프 데이터를 만들어 보았다.
[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 구조를 가지고 있다.
[논문리뷰] Dynamic Top-K Interesting Subgraph Query on Large-Scale Labeled Graphs
ssanggo.tistory.com
[ 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 구축에 대해 포스팅 하겠다.
'Papers > Implement' 카테고리의 다른 글
dblp v10 json 파일 읽는 방법 (0) | 2021.09.06 |
---|---|
[python] 그래프 데이터 만들기(using. Snap) (0) | 2021.04.13 |