File size: 2,067 Bytes
8c46649
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import matplotlib.pyplot as plt
from urlextract import URLExtract
from collections import Counter
from wordcloud import WordCloud, STOPWORDS ,ImageColorGenerator
import pandas as pd
import matplotlib.pylab as plt
import PIL.Image
import numpy as np

extract=URLExtract()
def fetch_stats(selected_user,df):

    if selected_user!= "Group analysis":
        df=df[df['users']==selected_user]
    num_messages = df.shape[0]
    words = []
    for message in df['message']:
        words.extend(message.split())


    links=[]
    for message in df['message']:
        links.extend(extract.find_urls(message))

    return num_messages, len(words),len(links)

def most_busy_users(df):
    x = df['users'].value_counts().head()
    df=round((df['users'].value_counts() / df.shape[0]) * 100, 2).reset_index().rename(
        columns={'index': 'name', 'user': 'percent'})
    return x,df

def most_common_words(selected_user,df):
    f = open('stop_hinglish.txt', 'r')
    stop_words = f.read()

    if selected_user != "Group analysis":
        df = df[df['users'] == selected_user]
    temp = df[df['users'] != 'group_notification']
    temp = temp[temp['message'] != '<Media omitted>\n']

    words = []

    for message in temp['message']:
        for word in message.lower().split():
            if word not in stop_words:
                words.append(word)
    most_common_df=pd.DataFrame(Counter(words).most_common(30))
    return most_common_df

def positive_word_cloud(selected_user,df):
    if selected_user != "Group analysis":
        df = df[df['users'] == selected_user]

    pos_word = df[df['roberta_pos'] > 0.5]
    pos_word = pos_word.pop('message')
    pos_word_df = pd.DataFrame(pos_word)
    stopwords = set(STOPWORDS)
    mask = np.array(PIL.Image.open('wcc.png'))

    # wordcloud
    wordcloud = WordCloud(stopwords=stopwords, mask=mask, background_color="White").generate(
        ''.join(pos_word_df['message']))
    plt.figure(figsize=(20, 10), facecolor='k')
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.show()

    return wordcloud