オンライン コース ディスカッション フォーラムからの質問、回答、およびコメントを使用して、SNA プロジェクトのエッジリストを作成しようとしています。
エッジリストを作成するコードは次のとおりです。
# import libraries
import csv
import collections
from collections import defaultdict
def multi_dimensions(n, type):
# """ Creates an n-dimension dictionary where the n-th dimension is of type 'type'
if n<=1:
return type()
return defaultdict(lambda:multi_dimensions(n-1, type))
edgelist = multi_dimensions(2,dict)
csv.field_size_limit(1600000)
f = open('/Users/samuelfinegold/Documents/harvard/edXresearch/snaCreationFiles/time_series/time_series.csv','rU')
reader = csv.DictReader(f, delimiter=',')
for line in reader:
# edgelist
if line['types'] == 'Question':
#print 'T'
source = line['author_id']
else:
edgelist[source]['target'] = line['author_id']
edgelist[source]['start_time'] = line['time']
コンテキストの csv は次のとおりです。
post_id thread_id author_id types time votes_up votes_down posters
1 0 Jan Question 3/1/12 10:45 5 1 Jan, Janet, Jack
2 0 Janet Answer 3/1/12 11:00 2 1 Jan, Janet, Jack
3 0 Jack Comment 3/2/12 8:00 0 0 Jan, Janet, Jack
4 1 Jason Question 3/4/12 9:00 3 1 Jason, Jan, Janet
5 1 Jan Answer 3/7/12 1:00 3 1 Jason, Jan, Janet
6 1 Janet Answer 3/7/12 2:00 1 2 Jason, Jan, Janet
そして、ここに私が私のエッジリストのために得ているものがあります:
source target time
Jan Jack 999
Jason Janet 999
何がそんなに時間の違いを引き起こしているのか、私にはわかりません。
望ましい出力:
source target start_time
Jan Janet 3/1/12 11:00
Jan Jack 3/2/12 8:00
Jason Jan 3/7/12 1:00
Jason Janet 3/7/12 2:00
時間は、回答またはコメントが投稿された時間であることに注意してください。動的 SNA グラフに精通している方は、なぜ終了時刻がないのか疑問に思うかもしれません。これは、簡単にするために、各投稿の終了時刻が同じ列を手動で追加するだけなので、グラフに消失が表示されないためです。