In [1]:
import csv
from time import time 
import datetime
from collections import Counter
import lib.tweetminer as minetweet
from lib.memes import list_to_csv
from lib.visualizer import create_bar_graph
import json
import os


init tweet entities regex

Connecting to MongoDB... 
Connected successfully MongoDB at localhost:27017


Connecting to MongoDB... 
Connected successfully MongoDB at localhost:27017


In [63]:
# get meme_names
results_path="/home/clemsos/Dev/mitras/results/"
# meme_names=[ meme for meme in os.listdir(results_path) if meme[-3:] != "csv"]
meme_name="biaoge"
print meme_name
meme_path=outfile=results_path+meme_name
meme_csv=meme_path+"/"+meme_name+".csv"


biaoge

In [58]:
from lib.nlp import NLPMiner
nlp=NLPMiner()

stoplist=[i.strip() for i in open("lib/stopwords/zh-stopwords","r")]
stoplist+=[i.strip() for i in open("lib/stopwords/stopwords.txt","r")]
stoplist+=["转发","微博","说 ","事儿","一个","【 ","年 ","转 ","请","" ","问题","知道","中 ","已经","现在","说","【",'"',"年","中","今天","应该","真的","月","希望","想","日","这是","太","转","支持"]


init NLP toolkit

In [64]:
import locale
locale.setlocale(locale.LC_ALL, "")

node_words=[] # nodes with weight (numbers of quotes)
words_series=[] # series of words
words_list=[] 
words_graph=[]

# process the data
with open(meme_csv, 'rb') as csvfile:
    # ['uid', 'text', 'image', 'deleted_last_seen', 'mid', 'source', 'permission_denied', 'retweeted_uid', 'geo', 'created_at', 'retweeted_status_mid']
    memecsv=csv.reader(csvfile)
    memecsv.next() # skip headers        
    
    
    for i,row in enumerate(memecsv):
        t=row[1]
        mentions,urls,hashtags,clean=minetweet.extract_tweet_entities(t)
        dico=nlp.extract_dictionary(clean)
        # remove stopwords and store clean dico
        clean_dico=nlp.remove_stopwords(dico)
        
        # add words not in stopwords
        tmp_words=[w for w in clean_dico if w.encode('utf-8') not in stoplist]
        # print len(tmp_words)
        words_series.append(tmp_words)
        words_list+=tmp_words # global list for counter

# build nodes
for c in Counter(words_list).most_common(500):
    node_words.append(c[0])

print len(node_words), " nodes in words"
# build edges

node_edges=[]
tmp_edges=[]

for serie in words_series: 
    for word in serie :
        if word in node_words :
            # print word
            tmp_edges.append((word, serie))
            # node_edges+=[(word,w) for w in serie if w is not word and w != word ]         

for edge_pack in tmp_edges:
    for word in edge_pack[1]:
        if word is not edge_pack[0] and edge_pack[0] != word:
            tmp=[edge_pack[0], word]
            tmp.sort(cmp=locale.strcoll) # sort chinese characters to create undirected graph
            node_edges.append((tmp[0],tmp[1]))
    
for c in Counter(node_edges).most_common(500):
    print c[0][0], "->", c[0][1], ",", c[1]


500  nodes in words
局长 -> 杨达 , 3224
安监局 -> 杨达 , 3066
杨达 -> 陕西省 , 2896
杨达 -> 网友 , 2670
安监局 -> 局长 , 2504
没人 -> 问 , 2450
一出 -> 问 , 2334
一出 -> 没人 , 2334
局长 -> 陕西省 , 2262
名表 -> 杨达 , 2208
局长 -> 网友 , 2198
安监局 -> 陕西省 , 2126
微笑 -> 杨达 , 1930
安监局 -> 网友 , 1912
涓 -> 锛 , 1908
名表 -> 局长 , 1866
杨达 -> 现场 , 1834
局长 -> 微笑 , 1760
名表 -> 网友 , 1732
浜 -> 锛 , 1728
网友 -> 陕西省 , 1686
局长 -> 现场 , 1684
杨达 -> 陕西 , 1684
现场 -> 网友 , 1682
紝 -> 锛 , 1670
回应 -> 杨达 , 1636
安监局 -> 现场 , 1478
安监局 -> 陕西 , 1464
名表 -> 安监局 , 1420
微笑 -> 网友 , 1396
官员 -> 网友 , 1392
奶奶 -> 表哥 , 1390
奶奶 -> 表姐 , 1380
儿子 -> 奶奶 , 1380
现场 -> 车祸 , 1374
名表 -> 陕西省 , 1320
手表 -> 杨达 , 1320
回应 -> 安监局 , 1306
紒 -> 锛 , 1292
官员 -> 现场 , 1272
杨达 -> 车祸 , 1262
銆 -> 锛 , 1260
安监局 -> 微笑 , 1230
微笑 -> 现场 , 1228
名表 -> 微笑 , 1194
现场 -> 陕西省 , 1188
局长 -> 表 , 1180
表哥 -> 表姐 , 1176
网友 -> 陕西 , 1172
网友 -> 车祸 , 1170
官员 -> 局长 , 1160
儿子 -> 表哥 , 1132
回应 -> 微笑 , 1130
延安 -> 杨达 , 1130
块 -> 杨达 , 1118
儿子 -> 表姐 , 1116
鐨 -> 锛 , 1116
杨达 -> 表 , 1114
纪委 -> 陕西省 , 1112
浜 -> 涓 , 1092
官员 -> 杨达 , 1090
戝 -> 锛 , 1090
万左右 -> 表 , 1090
局长 -> 延安 , 1072
微笑 -> 陕西省 , 1072
表哥 -> 问 , 1068
局长 -> 车祸 , 1058
杨达 -> 门 , 1056
殑 -> 锛 , 1040
价格 -> 表 , 1036
回应 -> 局长 , 1034
局长 -> 陕西 , 1024
名表 -> 现场 , 1012
延安 -> 现场 , 1006
延安 -> 网友 , 1002
万 -> 杨达 , 992
安监局 -> 车祸 , 980
名表 -> 块 , 978
杨达 -> 纪委 , 974
事 -> 没人 , 962
事 -> 问 , 962
涓 -> 紝 , 958
回应 -> 网友 , 938
鏉 -> 锛 , 936
官员 -> 车祸 , 934
局长 -> 手表 , 932
奶奶 -> 指着 , 920
纪委 -> 调查 , 916
块 -> 网友 , 914
ㄥ -> 锛 , 910
奶奶 -> 瞅 , 908
安监局 -> 手表 , 906
块 -> 局长 , 906
安监局 -> 表 , 904
琛 -> 锛 , 904
浜 -> 紝 , 904
杨达 -> 调查 , 896
万 -> 名表 , 888
调查 -> 陕西省 , 886
局长 -> 杨 , 886
微笑 -> 门 , 880
微笑 -> 陕西 , 878
杨达 -> 照片 , 878
鐪 -> 锛 , 876
陕西 -> 陕西省 , 874
网友 -> 表 , 870
车祸 -> 陕西省 , 862
延安 -> 陕西省 , 856
万 -> 欧米茄 , 838
鍝 -> 锛 , 838
鎴 -> 锛 , 836
安监局 -> 官员 , 834
一出 -> 事 , 834
局长 -> 笑 , 834
现场 -> 陕西 , 832
官员 -> 陕西省 , 832
安监局 -> 延安 , 828
名表 -> 车祸 , 826
手表 -> 网友 , 822
回应 -> 门 , 818
万 -> 局长 , 816
涓 -> 銆 , 816
名表 -> 门 , 812
浜 -> 銆 , 812
延安 -> 车祸 , 808
安监局 -> 长 , 806
杩 -> 锛 , 798
表 -> 陕西省 , 798
〃 -> 锛 , 788
鎵 -> 锛 , 788
浜 -> 鐨 , 784
紝 -> 銆 , 784
殑 -> 浜 , 774
安监局 -> 门 , 772
回应 -> 陕西 , 768
名表 -> 回应 , 750
儿子 -> 指着 , 744
指着 -> 表哥 , 744
指着 -> 表姐 , 744
杨达 -> 长 , 742
官员 -> 延安 , 740
嬪 -> 浜 , 740
微笑 -> 车祸 , 740
交通事故 -> 杨达 , 730
眬 -> 锛 , 722
灞 -> 锛 , 720
名表 -> 陕西 , 714
无法 -> 表 , 712
瞅 -> 表哥 , 708
回应 -> 现场 , 708
儿子 -> 瞅 , 708
瞅 -> 表姐 , 708
没人 -> 表哥 , 704
微笑 -> 手表 , 700
名表 -> 延安 , 700
网友 -> 门 , 698
万 -> 安监局 , 696
官员 -> 微笑 , 696
涓 -> 鐨 , 692
块 -> 手表 , 690
名表 -> 官员 , 690
刘翔 -> 没人 , 686
刘翔 -> 问 , 686
回应 -> 陕西省 , 678
一出 -> 表哥 , 676
澶 -> 锛 , 672
周克华 -> 问 , 672
现场 -> 笑 , 672
周克华 -> 没人 , 672
安监局 -> 照片 , 670
手表 -> 陕西省 , 668
屾 -> 锛 , 668
杨达 -> 笑 , 664
局长 -> 照片 , 664
局长 -> 门 , 660
一出 -> 刘翔 , 658
照片 -> 陕西省 , 656
看清 -> 表 , 650
万 -> 江诗丹 , 648
一出 -> 周克华 , 644
鍙 -> 锛 , 644
手表 -> 表 , 642
戝 -> 紝 , 640
万 -> 顿 , 638
块 -> 微笑 , 634
款式 -> 表 , 628
紝 -> 鐨 , 628
交通事故 -> 局长 , 626
事故现场 -> 杨达 , 620
同志 -> 局长 , 620
延安 -> 微笑 , 618
杨 -> 网友 , 616
紝 -> 鎴 , 610
没人 -> 薄谷 , 602
安监局 -> 笑 , 602
薄谷 -> 问 , 602
名表 -> 照片 , 596
鏄 -> 锛 , 594
殑 -> 涓 , 594
同志 -> 杨达 , 592
车祸 -> 陕西 , 592
杨达 -> 称 , 592
回应 -> 手表 , 590
微笑 -> 放松 , 586
36 -> 局长 , 586
块 -> 安监局 , 584
美女 -> 表哥 , 582
屽 -> 锛 , 580
手表 -> 陕西 , 580
鍚 -> 锛 , 576
兔子不吃窝边草 -> 表哥 , 576
3.5 -> 万 , 576
一出 -> 薄谷 , 574
笉 -> 锛 , 572
一块 -> 杨达 , 568
塌桥 -> 没人 , 568
塌桥 -> 问 , 566
官员 -> 陕西 , 562
块 -> 门 , 560
事故现场 -> 局长 , 560
长 -> 陕西 , 560
杨达 -> 特大 , 558
戴 -> 问 , 556
门 -> 陕西省 , 554
名表 -> 调查 , 550
交通事故 -> 安监局 , 550
一出 -> 戴 , 550
安监局 -> 调查 , 550
3.5 -> 杨达 , 550
万 -> 陕西省 , 546
璇 -> 锛 , 546
戴 -> 没人 , 546
万 -> 估计 , 546
戴 -> 网友 , 544
鍏 -> 锛 , 542
局长 -> 调查 , 542
鍦 -> 锛 , 540
放松 -> 现场 , 538
一出 -> 塌桥 , 538
瀹 -> 锛 , 536
万 -> 张 , 536
死 -> 没人 , 534
走路 -> 问 , 532
死 -> 问 , 532
没人 -> 走路 , 532
块 -> 陕西省 , 530
代 -> 表 , 528
合法收入 -> 杨达 , 522
3.5 -> 回应 , 520
照片 -> 网友 , 520
杨 -> 杨达 , 514
放松 -> 杨达 , 514
36 -> 网友 , 512
交通事故 -> 网友 , 510
场合 -> 杨达 , 510
笑 -> 网友 , 508
官员 -> 戴 , 508
戝 -> 涓 , 508
事故现场 -> 陕西省 , 508
万 -> 回应 , 506
涓 -> 琛 , 506
一出 -> 死 , 504
杨达 -> 访谈 , 504
微笑 -> 照片 , 504
一出 -> 走路 , 504
36 -> 杨达 , 502
殑 -> 紝 , 500
回应 -> 块 , 500
交通事故 -> 陕西省 , 498
局长 -> 戴 , 498
涔 -> 锛 , 498
笑 -> 陕西省 , 498
关注 -> 回应 , 496
万 -> 网友 , 492
场合 -> 局长 , 492
嚭 -> 浜 , 490
安监局 -> 纪委 , 490
官员 -> 笑 , 490
交通事故 -> 微笑 , 486
ㄨ -> 锛 , 486
门 -> 陕西 , 486
36 -> 安监局 , 484
照片 -> 现场 , 484
回应 -> 最快 , 482
一出 -> 开来 , 482
事故现场 -> 安监局 , 482
交通事故 -> 现场 , 482
奶奶 -> 耶 , 480
开来 -> 问 , 478
开来 -> 没人 , 478
名表 -> 纪委 , 476
殑 -> 銆 , 476
关注 -> 杨达 , 474
发生 -> 杨达 , 474
指着 -> 瞅 , 472
万 -> 微笑 , 470
杩 -> 涓 , 470
名表 -> 戴 , 468
照片 -> 调查 , 468
万 -> 价格 , 468
一块 -> 回应 , 468
网友 -> 话筒 , 468
戴 -> 现场 , 466
戴 -> 杨达 , 466
36 -> 现场 , 464
佩戴 -> 杨达 , 464
安监局 -> 称 , 462
紝 -> 鍚 , 462
哈日 -> 奶奶 , 460
网友 -> 长 , 460
奶奶 -> 说说看 , 460
奶奶 -> 懂得 , 460
奶奶 -> 妈妈 , 460
奶奶 -> 玩 , 460
奶奶 -> 精 , 460
奶奶 -> 韩 , 460
奶奶 -> 逗 , 460
奶奶 -> 家里 , 460
五岁 -> 奶奶 , 460
奶奶 -> 知识 , 460
儿童笑话 -> 奶奶 , 460
奶奶 -> 小人 , 460
鐩 -> 锛 , 458
佸 -> 锛 , 456
回应 -> 放松 , 456
鏈 -> 锛 , 456
3.5 -> 网友 , 456
名表 -> 长 , 456
〃 -> 涓 , 456
万 -> 系列 , 454
戝 -> 銆 , 452
纪委 -> 陕西 , 452
竴 -> 锛 , 450
长 -> 陕西省 , 450
戝 -> 浜 , 450
关注 -> 安监局 , 450
哈佛 -> 奶奶 , 448
同志 -> 安监局 , 448
前 -> 奶奶 , 448
佛龛 -> 奶奶 , 448
名表 -> 表 , 448
屽 -> 浜 , 448
奶奶 -> 敬香 , 448
局长 -> 特大 , 446
傻笑 -> 官员 , 444
万 -> 劳力士 , 444
36 -> 延安 , 440
万左右 -> 价格 , 440
一不留神 -> 放松 , 440
杨 -> 表哥 , 438
鈥 -> 锛 , 438
槸 -> 锛 , 438
微笑 -> 长 , 438
笑 -> 车祸 , 438
一块 -> 网友 , 438
事故现场 -> 网友 , 436
局长 -> 称 , 436
浜 -> 鎴 , 436
澶 -> 紝 , 436
一块 -> 万 , 432
调查 -> 进行 , 432
网友 -> 表哥 , 430
3.5 -> 名表 , 430
涓 -> 灞 , 430
放松 -> 神情 , 428
3.5 -> 一块 , 428
一块 -> 名表 , 428
堝 -> 锛 , 426
手表 -> 门 , 426
锛 -> 闄 , 424
暱 -> 锛 , 424
场合 -> 网友 , 424
调查 -> 陕西 , 422
局长 -> 放松 , 422
万左右 -> 无法 , 420
回应 -> 长 , 420
浠 -> 锛 , 420
绗 -> 锛 , 420
戝 -> 鎴 , 420
銆 -> 鐨 , 418
合法收入 -> 局长 , 418
称 -> 网友 , 418
杨达 -> 购买 , 416
浣 -> 锛 , 416
安监局 -> 特大 , 416
欧米茄 -> 表 , 416
图片 -> 网友 , 416
哥 -> 表 , 416
万 -> 表壳 , 416
紝 -> 鎵 , 414
回应 -> 称 , 414
36 -> 官员 , 414
侊 -> 锛 , 413
元 -> 表 , 412
杈 -> 锛 , 410
玩 -> 表哥 , 410
特大 -> 网友 , 410
揪 -> 锛 , 410
局长 -> 纪委 , 410
场合 -> 表 , 410
40 -> 万 , 408
浜 -> 琛 , 408
微笑 -> 称 , 408
妈妈 -> 表哥 , 404
锛 -> 闀 , 404
事故现场 -> 官员 , 404
照片 -> 陕西 , 402
微 -> 杨达 , 402
场合 -> 安监局 , 402
安监局 -> 放松 , 402
劳力士 -> 表 , 402
微笑 -> 调查 , 400
块 -> 陕西 , 398
畨 -> 锛 , 398
傻笑 -> 网友 , 398
嬪 -> 锛 , 398
36 -> 陕西省 , 398
发生 -> 照片 , 398
发生 -> 局长 , 396
11 -> 杨达 , 396
杨达 -> 质疑 , 396
佩戴 -> 名表 , 396
名表 -> 手表 , 396
合法收入 -> 购买 , 396
嶅 -> 锛 , 396
20 -> 万 , 394
紝 -> 鍙 , 392
琛 -> 紝 , 392
每个 -> 表 , 392
手表 -> 现场 , 392
戴 -> 车祸 , 392
同志 -> 现场 , 392
照片 -> 纪委 , 390
网友 -> 访谈 , 390
换 -> 表 , 390
杩 -> 紝 , 390
涓 -> 鎴 , 390
屾 -> 浜 , 390
涓 -> 鍏 , 388
安监局 -> 杨 , 388
合法收入 -> 块 , 388
一款 -> 表 , 388
没人 -> 空姐 , 386
空姐 -> 问 , 386
紝 -> 鍏 , 386
杨达 -> 进行 , 386
家里 -> 表哥 , 384
万左右 -> 看清 , 384
万 -> 雷达 , 384
价格 -> 杨达 , 384
官员 -> 照片 , 384
鎴 -> 鐨 , 384
悓 -> 锛 , 384
场合 -> 陕西省 , 382
万 -> 全 , 382
儿子 -> 玩 , 382
万 -> 陶瓷 , 382
万 -> 块 , 380
浪琴 -> 表 , 380
158000 -> 表 , 380
第四块 -> 表 , 380
涓 -> 鎵 , 380
第五块 -> 表 , 380
江斯 -> 表 , 380
第三块 -> 表 , 380
丹顿 -> 表 , 380
第二块 -> 表 , 380
延安 -> 陕西 , 380
几块 -> 杨达 , 380
潹 -> 锛 , 380
第一块 -> 表 , 380
168500 -> 表 , 380
万 -> 金 , 378
真相 -> 网友 , 378
万 -> 玫瑰 , 378
18K -> 万 , 378
耶 -> 表哥 , 378
ㄥ -> 浜 , 376
懂得 -> 表哥 , 376
同志 -> 陕西省 , 376
表哥 -> 逗 , 376
合法收入 -> 名表 , 376
蹇 -> 锛 , 376
前 -> 表哥 , 374
表 -> 雷达 , 374
紝 -> 鏉 , 374
玩 -> 表姐 , 374
家里 -> 表姐 , 374
浜 -> 鍙 , 372
妈妈 -> 表姐 , 372
儿子 -> 逗 , 372
知识 -> 表哥 , 372
五岁 -> 表哥 , 372
儿子 -> 妈妈 , 372
儿子 -> 说说看 , 372
瀹 -> 紝 , 372
小人 -> 表哥 , 372
儿子 -> 懂得 , 372
儿子 -> 知识 , 372
儿童笑话 -> 表姐 , 372

In [70]:
# nodes
d3data={}
word_edges=node_edges

d3data["edges"]=[ {"source" : c[0][0], "target" : c[0][1], "weight": c[1] } for c in Counter(word_edges).most_common(1000) ]
    
words_map={}
for c in Counter(words_list).most_common():
    words_map[c[0]]=c[1]
    
unique_nodes=[]
for e in d3data["edges"]:
    if e["source"] not in unique_nodes : unique_nodes.append(e["source"]) 
    if e["target"] not in unique_nodes : unique_nodes.append(e["target"]) 


d3data["nodes"]=[{"name" : node, "count": words_map[node]} for node in unique_nodes]

for n in d3data["nodes"]:
    print n["name"], n["count"]


局长 1464
杨达 1736
安监局 1175
陕西省 1042
网友 1119
没人 179
问 251
一出 171
名表 820
微笑 770
涓 239
锛 576
现场 741
浜 219
陕西 629
紝 210
回应 535
官员 533
奶奶 239
表哥 1806
表姐 216
儿子 195
车祸 486
手表 572
紒 56
銆 172
表 802
延安 420
块 441
鐨 143
纪委 312
戝 134
万左右 117
门 342
殑 119
价格 199
万 411
事 142
鏉 94
指着 124
调查 323
ㄥ 92
瞅 118
琛 121
杨 381
照片 312
鐪 66
欧米茄 147
鍝 83
鎴 98
笑 370
长 293
杩 93
〃 95
鎵 90
嬪 41
交通事故 251
眬 72
灞 94
无法 77
刘翔 49
澶 79
周克华 49
屾 66
看清 67
江诗丹 132
鍙 92
顿 130
款式 98
事故现场 235
同志 264
薄谷 43
鏄 66
称 236
放松 226
36 233
美女 75
屽 71
鍚 82
兔子不吃窝边草 72
3.5 192
笉 51
一块 227
塌桥 45
特大 180
戴 332
璇 55
估计 109
鍏 80
鍦 68
瀹 79
张 57
死 88
走路 41
代 71
合法收入 183
场合 204
访谈 170
涔 60
关注 209
嚭 35
ㄨ 54
最快 102
开来 35
耶 77
发生 183
话筒 141
佩戴 133
哈日 62
说说看 62
懂得 63
妈妈 78
玩 79
精 62
韩 71
逗 65
家里 69
五岁 62
知识 63
儿童笑话 62
小人 62
鐩 49
佸 49
鏈 51
系列 61
竴 60
哈佛 56
前 93
佛龛 56
敬香 56
傻笑 120
劳力士 111
一不留神 127
鈥 68
槸 64
进行 144
神情 92
堝 39
闄 51
暱 48
浠 58
绗 50
购买 150
浣 53
图片 130
哥 126
表壳 41
侊 25
元 50
杈 67
揪 45
40 50
闀 42
微 140
畨 47
11 146
质疑 131
嶅 43
20 91
每个 78
换 67
一款 55
空姐 60
雷达 77
悓 35
全 43
陶瓷 38
浪琴 42
158000 38
第四块 38
第五块 38
江斯 38
第三块 38
丹顿 38
第二块 38
几块 148
潹 63
第一块 39
168500 38
金 41
真相 138
玫瑰 41
18K 38
蹇 38
屼 46
市值 35
簡 45
爆料 49
摜 43
代表 99
垜 41
发现 121
价值 117
曡 45
N 46
鍧 56
表示 169
之间 41
今天上午 75
人肉 98
一天 61
左右 44
网上 126
タ 41
v5 58
灏 35
贵 88
26 120
围观 173
uP2ZKNHEX 37
引发 87
媒体 147
三个 67
委员 61
湪 45
一次 59
鍗 37
龙 106
万宝 105
这位 129
寰 46
兔子 40
墠 55
单身 41
遇难 110
面带微笑 74
女朋友 38
铚 18
儧 18
三十 38
炬 52
沮丧 37
草 37
地说 37
单位 38
年纪 36
帅气 36
总是 41
冷冷地 36
一直 50
勫 37
粘着 36
找个 36
安排 87
基层 68
板 37
当地 80
工作人员 91
事件 147
评论 86
夌 47
簨 34
10 124
効 20
人大 48
偷笑 163
最贵 103
重大 104
人员 83
楀 33
确有 73
永远 77
窖藏 72
组织 67
之下 74
笑脸 83
湁 39
众目睽睽 72
可怕 69
忙 57
违纪 70
无数 79
证明 78
腐败问题 67
郭美美 72
惹 58
近日 98
力量 90
照曝光 52
规定 71

In [ ]: