def show_person_meaning_contrast(self, school): print school,"person" weiboid = get_random_weiboid(school) weibo_content_results = tp.get_one_weibo_data(schoolname=school, weiboid=weiboid) mydocdialog = DocDialog(contents=weibo_content_results) mydocdialog.open() weibo_interm.show_person_meaning_contrast(school, weiboid)
def show_person_meaning_contrast(self, school): print school, "person" weiboid = get_random_weiboid(school) weibo_content_results = tp.get_one_weibo_data(schoolname=school, weiboid=weiboid) mydocdialog = DocDialog(contents=weibo_content_results) mydocdialog.open() weibo_interm.show_person_meaning_contrast(school, weiboid)
def all_weibo_sentence_sentiment_score(schoolname, weiboid=None): weibo_content_results = tp.get_one_weibo_data(schoolname, weiboid) cuted_weibo = [] upvotes = [] forwards = [] reviews = [] weiboid = None for cell in weibo_content_results: cuted_weibo.append(tp.cut_sentences_2(cell[0])) upvotes.append(int(cell[1])) forwards.append(int(cell[2])) reviews.append(int(cell[3])) weiboid = cell[4] ''' print cell[0] #微博内容 ''' #print cell[1], #点赞数量 #print cell[2] #转发数量 #print cell[3] #评论数量 single_weibo_count = [] all_weibo_count = [] for index,weibo in enumerate(cuted_weibo): for sent in weibo: seg_sent = tp.segmentation(sent, 'list') i = 0 # word position counter a = 0 # sentiment word position poscount = 0 # count a positive word negcount = 0 # count a negative word for word in seg_sent: if word in posdict: poscount += 1 for w in seg_sent[a:i]: poscount = match(w, poscount) a = i + 1 elif word in negdict: negcount += 1 for w in seg_sent[a:i]: negcount = match(w, negcount) a = i + 1 elif word == '!'.decode('utf-8') or word == '!'.decode('utf-8'): for w2 in seg_sent[::-1]: if w2 in posdict: poscount += 2 break elif w2 in negdict: negcount += 2 break i += 1 single_weibo_count.append(transform_to_positive_num(poscount, negcount, upvotes[index], forwards[index], reviews[index])) #[[s1_score], [s2_score], ...] all_weibo_count.append(single_weibo_count) # [[[s11_score], [s12_score], ...], [[s21_score], [s22_score], ...], ...] single_weibo_count = [] return all_weibo_count, weiboid
def weiboMeaningPieChart(schoolname, weiboid=None): weibo_content_results = tp.get_one_weibo_data(schoolname=schoolname, weiboid=weiboid) if weibo_content_results is None: print "There is no data about %s yet." % schoolname else: meaningful = [0,0] weiboid = None for w in weibo_content_results: weiboid = w[4] if tp.is_meaningful(w[0]) == True: meaningful[0] += 1 else: meaningful[1] += 1 meaningful[0] = math.floor((meaningful[0]*1.0/(meaningful[0]+meaningful[1]))*100) meaningful[1] = 100.0 - meaningful[0] labels = 'Meaningful','Meaningless' # 对应每一块的标志 explode = (0, 0.05) # 离开整体的距离,看效果 colors = ('#9999ff','#ff9999') pietitle = "%s's %s's meaningful analysis" % (schoolname, weiboid) weiboPieChart(pielist=meaningful, labels=labels, explode=explode, colors=colors, pietitle=pietitle)