Shrikrishna commited on
Commit
f71f53c
1 Parent(s): ba0eaa2

Upload 5 files

Browse files
Files changed (5) hide show
  1. app.py +130 -0
  2. helper.py +154 -0
  3. preprocessor.py +51 -0
  4. requirements.txt +7 -0
  5. stop_hinglish.txt +1055 -0
app.py ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import preprocessor, helper
3
+ import matplotlib.pyplot as plt
4
+ import seaborn as sns
5
+
6
+
7
+ st.sidebar.title("Whatsapp Chat Analyzer")
8
+
9
+
10
+ uploaded_file = st.sidebar.file_uploader("Choose a file")
11
+ if uploaded_file is not None:
12
+ bytes_data = uploaded_file.getvalue()
13
+ data = bytes_data.decode("utf-8")
14
+ df = preprocessor.preprocess(data)
15
+ #st.dataframe(df)
16
+
17
+ # fetch unique users
18
+ user_list = df['user'].unique().tolist()
19
+ user_list.remove('group_notification')
20
+ user_list.sort()
21
+ user_list.insert(0, "Overall")
22
+
23
+ selected_user = st.sidebar.selectbox("Show analysis wrt", user_list)
24
+
25
+ if st.sidebar.button("Show Analysis"):
26
+ num_messages, num_words, num_media_messages, num_links = helper.fetch_stats(selected_user,df)
27
+
28
+ st.title("Top Statistics")
29
+ col1, col2, col3, col4 = st.columns(4)
30
+
31
+ with col1:
32
+ st.header("Total Messages")
33
+ st.title(num_messages)
34
+ with col2:
35
+ st.header("Total Words")
36
+ st.title(num_words)
37
+ with col3:
38
+ st.header("Media Shared")
39
+ st.title(num_media_messages)
40
+ with col4:
41
+ st.header("Links Shared")
42
+ st.title(num_links)
43
+
44
+ # monthly timeline
45
+ st.title("Monthly Timeline")
46
+ timeline = helper.monthly_timeline(selected_user, df)
47
+ fig, ax = plt.subplots()
48
+ ax.plot(timeline['time'], timeline['message'], color='green')
49
+ plt.xticks(rotation='vertical')
50
+ st.pyplot(fig)
51
+
52
+ # daily timeline
53
+ st.title("Daily Timeline")
54
+ daily_timeline = helper.daily_timeline(selected_user, df)
55
+ fig, ax = plt.subplots()
56
+ ax.plot(daily_timeline['only_date'], daily_timeline['message'], color='black')
57
+ plt.xticks(rotation='vertical')
58
+ st.pyplot(fig)
59
+
60
+ # activity map
61
+ st.title('Activity Map')
62
+ col1, col2 = st.columns(2)
63
+
64
+ with col1:
65
+ st.header("Most busy day")
66
+ busy_day = helper.week_activity_map(selected_user, df)
67
+ fig, ax = plt.subplots()
68
+ ax.bar(busy_day.index, busy_day.values, color='purple')
69
+ plt.xticks(rotation='vertical')
70
+ st.pyplot(fig)
71
+
72
+ with col2:
73
+ st.header("Most busy month")
74
+ busy_month = helper.month_activity_map(selected_user, df)
75
+ fig, ax = plt.subplots()
76
+ ax.bar(busy_month.index, busy_month.values, color='orange')
77
+ plt.xticks(rotation='vertical')
78
+ st.pyplot(fig)
79
+
80
+ st.title("Weekly Activity Map")
81
+ user_heatmap = helper.activity_heatmap(selected_user, df)
82
+ fig, ax = plt.subplots()
83
+ ax = sns.heatmap(user_heatmap)
84
+ st.pyplot(fig)
85
+
86
+ # finding the busiest users in the group(Group level)
87
+ if selected_user == 'Overall':
88
+ st.title('Most Busy Users')
89
+ x, user_df = helper.most_busy_users(df)
90
+ fig, ax = plt.subplots()
91
+
92
+ col1, col2 = st.columns(2)
93
+
94
+ with col1:
95
+ ax.bar(x.index, x.values, color='red')
96
+ plt.xticks(rotation='vertical')
97
+ st.pyplot(fig)
98
+ with col2:
99
+ st.dataframe(user_df)
100
+
101
+ # WordCloud
102
+ st.title("Wordcloud")
103
+ df_wc = helper.create_wordcloud(selected_user, df)
104
+ fig, ax = plt.subplots()
105
+ ax.imshow(df_wc)
106
+ st.pyplot(fig)
107
+
108
+ # most common words
109
+ most_common_df = helper.most_common_words(selected_user, df)
110
+
111
+ fig, ax = plt.subplots()
112
+
113
+ ax.barh(most_common_df[0], most_common_df[1])
114
+ plt.xticks(rotation='vertical')
115
+
116
+ st.title('Most commmon words')
117
+ st.pyplot(fig)
118
+
119
+ # emoji analysis
120
+ emoji_df = helper.emoji_helper(selected_user, df)
121
+ st.title("Emoji Analysis")
122
+
123
+ col1, col2 = st.columns(2)
124
+
125
+ with col1:
126
+ st.dataframe(emoji_df)
127
+ with col2:
128
+ fig, ax = plt.subplots()
129
+ ax.pie(emoji_df[1].head(), labels=emoji_df[0].head(), autopct="%0.2f")
130
+ st.pyplot(fig)
helper.py ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from urlextract import URLExtract
2
+ from wordcloud import WordCloud
3
+ import pandas as pd
4
+ from collections import Counter
5
+ import emoji
6
+
7
+ extract = URLExtract()
8
+
9
+ def fetch_stats(selected_user,df):
10
+
11
+ if selected_user != 'Overall':
12
+ df = df[df['user'] == selected_user]
13
+
14
+ # fetch the number of messages
15
+ num_messages = df.shape[0]
16
+
17
+ # fetch the total number of words
18
+ words = []
19
+ for message in df['message']:
20
+ words.extend(message.split())
21
+
22
+ # fetch number of media messages
23
+ num_media_messages = df[df['message'] == '<Media omitted>\n'].shape[0]
24
+
25
+ # fetch number of links shared
26
+ links = []
27
+ for message in df['message']:
28
+ links.extend(extract.find_urls(message))
29
+
30
+ return num_messages,len(words),num_media_messages,len(links)
31
+
32
+ def most_busy_users(df):
33
+ x = df['user'].value_counts().head()
34
+ df = round((df['user'].value_counts() / df.shape[0]) * 100, 2).reset_index().rename(
35
+ columns={'index': 'name', 'user': 'percent'})
36
+ return x,df
37
+
38
+ def create_wordcloud(selected_user,df):
39
+
40
+ f = open('stop_hinglish.txt', 'r')
41
+ stop_words = f.read()
42
+
43
+ if selected_user != 'Overall':
44
+ df = df[df['user'] == selected_user]
45
+
46
+ temp = df[df['user'] != 'group_notification']
47
+ temp = temp[temp['message'] != '<Media omitted>\n']
48
+
49
+ def remove_stop_words(message):
50
+ y = []
51
+ for word in message.lower().split():
52
+ if word not in stop_words:
53
+ y.append(word)
54
+ return " ".join(y)
55
+
56
+ wc = WordCloud(width=500,height=500,min_font_size=10,background_color='white')
57
+ temp['message'] = temp['message'].apply(remove_stop_words)
58
+ df_wc = wc.generate(temp['message'].str.cat(sep=" "))
59
+ return df_wc
60
+
61
+ def most_common_words(selected_user,df):
62
+
63
+ f = open('stop_hinglish.txt','r')
64
+ stop_words = f.read()
65
+
66
+ if selected_user != 'Overall':
67
+ df = df[df['user'] == selected_user]
68
+
69
+ temp = df[df['user'] != 'group_notification']
70
+ temp = temp[temp['message'] != '<Media omitted>\n']
71
+
72
+ words = []
73
+
74
+ for message in temp['message']:
75
+ for word in message.lower().split():
76
+ if word not in stop_words:
77
+ words.append(word)
78
+
79
+ most_common_df = pd.DataFrame(Counter(words).most_common(20))
80
+ return most_common_df
81
+
82
+ def emoji_helper(selected_user,df):
83
+ if selected_user != 'Overall':
84
+ df = df[df['user'] == selected_user]
85
+
86
+ emojis = []
87
+ for message in df['message']:
88
+ emojis.extend([c for c in message if c in emoji.EMOJI_DATA])
89
+
90
+ emoji_df = pd.DataFrame(Counter(emojis).most_common(len(Counter(emojis))))
91
+
92
+ return emoji_df
93
+
94
+ def monthly_timeline(selected_user,df):
95
+
96
+ if selected_user != 'Overall':
97
+ df = df[df['user'] == selected_user]
98
+
99
+ timeline = df.groupby(['year', 'month_num', 'month']).count()['message'].reset_index()
100
+
101
+ time = []
102
+ for i in range(timeline.shape[0]):
103
+ time.append(timeline['month'][i] + "-" + str(timeline['year'][i]))
104
+
105
+ timeline['time'] = time
106
+
107
+ return timeline
108
+
109
+ def daily_timeline(selected_user,df):
110
+
111
+ if selected_user != 'Overall':
112
+ df = df[df['user'] == selected_user]
113
+
114
+ daily_timeline = df.groupby('only_date').count()['message'].reset_index()
115
+
116
+ return daily_timeline
117
+
118
+ def week_activity_map(selected_user,df):
119
+
120
+ if selected_user != 'Overall':
121
+ df = df[df['user'] == selected_user]
122
+
123
+ return df['day_name'].value_counts()
124
+
125
+ def month_activity_map(selected_user,df):
126
+
127
+ if selected_user != 'Overall':
128
+ df = df[df['user'] == selected_user]
129
+
130
+ return df['month'].value_counts()
131
+
132
+ def activity_heatmap(selected_user,df):
133
+
134
+ if selected_user != 'Overall':
135
+ df = df[df['user'] == selected_user]
136
+
137
+ user_heatmap = df.pivot_table(index='day_name', columns='period', values='message', aggfunc='count').fillna(0)
138
+
139
+ return user_heatmap
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
preprocessor.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ import pandas as pd
3
+
4
+ def preprocess(data):
5
+ pattern = '\d{1,2}/\d{1,2}/\d{2,4},\s\d{1,2}:\d{2}\s-\s'
6
+
7
+ messages = re.split(pattern, data)[1:]
8
+ dates = re.findall(pattern, data)
9
+
10
+ df = pd.DataFrame({'user_message': messages, 'message_date': dates})
11
+ # convert message_date type
12
+ df['message_date'] = pd.to_datetime(df['message_date'], format='%d/%m/%Y, %H:%M - ')
13
+
14
+ df.rename(columns={'message_date': 'date'}, inplace=True)
15
+
16
+ users = []
17
+ messages = []
18
+ for message in df['user_message']:
19
+ entry = re.split('([\w\W]+?):\s', message)
20
+ if entry[1:]: # user name
21
+ users.append(entry[1])
22
+ messages.append(" ".join(entry[2:]))
23
+ else:
24
+ users.append('group_notification')
25
+ messages.append(entry[0])
26
+
27
+ df['user'] = users
28
+ df['message'] = messages
29
+ df.drop(columns=['user_message'], inplace=True)
30
+
31
+ df['only_date'] = df['date'].dt.date
32
+ df['year'] = df['date'].dt.year
33
+ df['month_num'] = df['date'].dt.month
34
+ df['month'] = df['date'].dt.month_name()
35
+ df['day'] = df['date'].dt.day
36
+ df['day_name'] = df['date'].dt.day_name()
37
+ df['hour'] = df['date'].dt.hour
38
+ df['minute'] = df['date'].dt.minute
39
+
40
+ period = []
41
+ for hour in df[['day_name', 'hour']]['hour']:
42
+ if hour == 23:
43
+ period.append(str(hour) + "-" + str('00'))
44
+ elif hour == 0:
45
+ period.append(str('00') + "-" + str(hour + 1))
46
+ else:
47
+ period.append(str(hour) + "-" + str(hour + 1))
48
+
49
+ df['period'] = period
50
+
51
+ return df
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ streamlit
2
+ matplotlib
3
+ seaborn
4
+ urlextract
5
+ wordcloud
6
+ pandas
7
+ emoji
stop_hinglish.txt ADDED
@@ -0,0 +1,1055 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .
2
+ ..
3
+ ...
4
+ ?
5
+ -
6
+ --
7
+ 1
8
+ 2
9
+ 3
10
+ 4
11
+ 5
12
+ 6
13
+ 7
14
+ 8
15
+ 9
16
+ 0
17
+ a
18
+ aadi
19
+ aaj
20
+ aap
21
+ aapne
22
+ aata
23
+ aati
24
+ aaya
25
+ aaye
26
+ ab
27
+ abbe
28
+ abbey
29
+ abe
30
+ abhi
31
+ able
32
+ about
33
+ above
34
+ accha
35
+ according
36
+ accordingly
37
+ acha
38
+ achcha
39
+ across
40
+ actually
41
+ after
42
+ afterwards
43
+ again
44
+ against
45
+ agar
46
+ ain
47
+ aint
48
+ ain't
49
+ aisa
50
+ aise
51
+ aisi
52
+ alag
53
+ all
54
+ allow
55
+ allows
56
+ almost
57
+ alone
58
+ along
59
+ already
60
+ also
61
+ although
62
+ always
63
+ am
64
+ among
65
+ amongst
66
+ an
67
+ and
68
+ andar
69
+ another
70
+ any
71
+ anybody
72
+ anyhow
73
+ anyone
74
+ anything
75
+ anyway
76
+ anyways
77
+ anywhere
78
+ ap
79
+ apan
80
+ apart
81
+ apna
82
+ apnaa
83
+ apne
84
+ apni
85
+ appear
86
+ are
87
+ aren
88
+ arent
89
+ aren't
90
+ around
91
+ arre
92
+ as
93
+ aside
94
+ ask
95
+ asking
96
+ at
97
+ aur
98
+ avum
99
+ aya
100
+ aye
101
+ baad
102
+ baar
103
+ bad
104
+ bahut
105
+ bana
106
+ banae
107
+ banai
108
+ banao
109
+ banaya
110
+ banaye
111
+ banayi
112
+ banda
113
+ bande
114
+ bandi
115
+ bane
116
+ bani
117
+ bas
118
+ bata
119
+ batao
120
+ bc
121
+ be
122
+ became
123
+ because
124
+ become
125
+ becomes
126
+ becoming
127
+ been
128
+ before
129
+ beforehand
130
+ behind
131
+ being
132
+ below
133
+ beside
134
+ besides
135
+ best
136
+ better
137
+ between
138
+ beyond
139
+ bhai
140
+ bheetar
141
+ bhi
142
+ bhitar
143
+ bht
144
+ bilkul
145
+ bohot
146
+ bol
147
+ bola
148
+ bole
149
+ boli
150
+ bolo
151
+ bolta
152
+ bolte
153
+ bolti
154
+ both
155
+ brief
156
+ bro
157
+ btw
158
+ but
159
+ by
160
+ came
161
+ can
162
+ cannot
163
+ cant
164
+ can't
165
+ cause
166
+ causes
167
+ certain
168
+ certainly
169
+ chahiye
170
+ chaiye
171
+ chal
172
+ chalega
173
+ chhaiye
174
+ clearly
175
+ c'mon
176
+ com
177
+ come
178
+ comes
179
+ could
180
+ couldn
181
+ couldnt
182
+ couldn't
183
+ d
184
+ de
185
+ dede
186
+ dega
187
+ degi
188
+ dekh
189
+ dekha
190
+ dekhe
191
+ dekhi
192
+ dekho
193
+ denge
194
+ dhang
195
+ di
196
+ did
197
+ didn
198
+ didnt
199
+ didn't
200
+ dijiye
201
+ diya
202
+ diyaa
203
+ diye
204
+ diyo
205
+ do
206
+ does
207
+ doesn
208
+ doesnt
209
+ doesn't
210
+ doing
211
+ done
212
+ dono
213
+ dont
214
+ don't
215
+ doosra
216
+ doosre
217
+ down
218
+ downwards
219
+ dude
220
+ dunga
221
+ dungi
222
+ during
223
+ dusra
224
+ dusre
225
+ dusri
226
+ dvaara
227
+ dvara
228
+ dwaara
229
+ dwara
230
+ each
231
+ edu
232
+ eg
233
+ eight
234
+ either
235
+ ek
236
+ else
237
+ elsewhere
238
+ enough
239
+ etc
240
+ even
241
+ ever
242
+ every
243
+ everybody
244
+ everyone
245
+ everything
246
+ everywhere
247
+ ex
248
+ exactly
249
+ example
250
+ except
251
+ far
252
+ few
253
+ fifth
254
+ fir
255
+ first
256
+ five
257
+ followed
258
+ following
259
+ follows
260
+ for
261
+ forth
262
+ four
263
+ from
264
+ further
265
+ furthermore
266
+ gaya
267
+ gaye
268
+ gayi
269
+ get
270
+ gets
271
+ getting
272
+ ghar
273
+ given
274
+ gives
275
+ go
276
+ goes
277
+ going
278
+ gone
279
+ good
280
+ got
281
+ gotten
282
+ greetings
283
+ guys
284
+ haan
285
+ had
286
+ hadd
287
+ hadn
288
+ hadnt
289
+ hadn't
290
+ hai
291
+ hain
292
+ hamara
293
+ hamare
294
+ hamari
295
+ hamne
296
+ han
297
+ happens
298
+ har
299
+ hardly
300
+ has
301
+ hasn
302
+ hasnt
303
+ hasn't
304
+ have
305
+ haven
306
+ havent
307
+ haven't
308
+ having
309
+ he
310
+ hello
311
+ help
312
+ hence
313
+ her
314
+ here
315
+ hereafter
316
+ hereby
317
+ herein
318
+ here's
319
+ hereupon
320
+ hers
321
+ herself
322
+ he's
323
+ hi
324
+ him
325
+ himself
326
+ his
327
+ hither
328
+ hm
329
+ hmm
330
+ ho
331
+ hoga
332
+ hoge
333
+ hogi
334
+ hona
335
+ honaa
336
+ hone
337
+ honge
338
+ hongi
339
+ honi
340
+ hopefully
341
+ hota
342
+ hotaa
343
+ hote
344
+ hoti
345
+ how
346
+ howbeit
347
+ however
348
+ hoyenge
349
+ hoyengi
350
+ hu
351
+ hua
352
+ hue
353
+ huh
354
+ hui
355
+ hum
356
+ humein
357
+ humne
358
+ hun
359
+ huye
360
+ huyi
361
+ i
362
+ i'd
363
+ idk
364
+ ie
365
+ if
366
+ i'll
367
+ i'm
368
+ imo
369
+ in
370
+ inasmuch
371
+ inc
372
+ inhe
373
+ inhi
374
+ inho
375
+ inka
376
+ inkaa
377
+ inke
378
+ inki
379
+ inn
380
+ inner
381
+ inse
382
+ insofar
383
+ into
384
+ inward
385
+ is
386
+ ise
387
+ isi
388
+ iska
389
+ iskaa
390
+ iske
391
+ iski
392
+ isme
393
+ isn
394
+ isne
395
+ isnt
396
+ isn't
397
+ iss
398
+ isse
399
+ issi
400
+ isski
401
+ it
402
+ it'd
403
+ it'll
404
+ itna
405
+ itne
406
+ itni
407
+ itno
408
+ its
409
+ it's
410
+ itself
411
+ ityaadi
412
+ ityadi
413
+ i've
414
+ ja
415
+ jaa
416
+ jab
417
+ jabh
418
+ jaha
419
+ jahaan
420
+ jahan
421
+ jaisa
422
+ jaise
423
+ jaisi
424
+ jata
425
+ jayega
426
+ jidhar
427
+ jin
428
+ jinhe
429
+ jinhi
430
+ jinho
431
+ jinhone
432
+ jinka
433
+ jinke
434
+ jinki
435
+ jinn
436
+ jis
437
+ jise
438
+ jiska
439
+ jiske
440
+ jiski
441
+ jisme
442
+ jiss
443
+ jisse
444
+ jitna
445
+ jitne
446
+ jitni
447
+ jo
448
+ just
449
+ jyaada
450
+ jyada
451
+ k
452
+ ka
453
+ kaafi
454
+ kab
455
+ kabhi
456
+ kafi
457
+ kaha
458
+ kahaa
459
+ kahaan
460
+ kahan
461
+ kahi
462
+ kahin
463
+ kahte
464
+ kaisa
465
+ kaise
466
+ kaisi
467
+ kal
468
+ kam
469
+ kar
470
+ kara
471
+ kare
472
+ karega
473
+ karegi
474
+ karen
475
+ karenge
476
+ kari
477
+ karke
478
+ karna
479
+ karne
480
+ karni
481
+ karo
482
+ karta
483
+ karte
484
+ karti
485
+ karu
486
+ karun
487
+ karunga
488
+ karungi
489
+ kaun
490
+ kaunsa
491
+ kayi
492
+ kch
493
+ ke
494
+ keep
495
+ keeps
496
+ keh
497
+ kehte
498
+ kept
499
+ khud
500
+ ki
501
+ kin
502
+ kine
503
+ kinhe
504
+ kinho
505
+ kinka
506
+ kinke
507
+ kinki
508
+ kinko
509
+ kinn
510
+ kino
511
+ kis
512
+ kise
513
+ kisi
514
+ kiska
515
+ kiske
516
+ kiski
517
+ kisko
518
+ kisliye
519
+ kisne
520
+ kitna
521
+ kitne
522
+ kitni
523
+ kitno
524
+ kiya
525
+ kiye
526
+ know
527
+ known
528
+ knows
529
+ ko
530
+ koi
531
+ kon
532
+ konsa
533
+ koyi
534
+ krna
535
+ krne
536
+ kuch
537
+ kuchch
538
+ kuchh
539
+ kul
540
+ kull
541
+ kya
542
+ kyaa
543
+ kyu
544
+ kyuki
545
+ kyun
546
+ kyunki
547
+ lagta
548
+ lagte
549
+ lagti
550
+ last
551
+ lately
552
+ later
553
+ le
554
+ least
555
+ lekar
556
+ lekin
557
+ less
558
+ lest
559
+ let
560
+ let's
561
+ li
562
+ like
563
+ liked
564
+ likely
565
+ little
566
+ liya
567
+ liye
568
+ ll
569
+ lo
570
+ log
571
+ logon
572
+ lol
573
+ look
574
+ looking
575
+ looks
576
+ ltd
577
+ lunga
578
+ m
579
+ maan
580
+ maana
581
+ maane
582
+ maani
583
+ maano
584
+ magar
585
+ mai
586
+ main
587
+ maine
588
+ mainly
589
+ mana
590
+ mane
591
+ mani
592
+ mano
593
+ many
594
+ mat
595
+ may
596
+ maybe
597
+ me
598
+ mean
599
+ meanwhile
600
+ mein
601
+ mera
602
+ mere
603
+ merely
604
+ meri
605
+ might
606
+ mightn
607
+ mightnt
608
+ mightn't
609
+ mil
610
+ mjhe
611
+ more
612
+ moreover
613
+ most
614
+ mostly
615
+ much
616
+ mujhe
617
+ must
618
+ mustn
619
+ mustnt
620
+ mustn't
621
+ my
622
+ myself
623
+ na
624
+ naa
625
+ naah
626
+ nahi
627
+ nahin
628
+ nai
629
+ name
630
+ namely
631
+ nd
632
+ ne
633
+ near
634
+ nearly
635
+ necessary
636
+ neeche
637
+ need
638
+ needn
639
+ neednt
640
+ needn't
641
+ needs
642
+ neither
643
+ never
644
+ nevertheless
645
+ new
646
+ next
647
+ nhi
648
+ nine
649
+ no
650
+ nobody
651
+ non
652
+ none
653
+ noone
654
+ nope
655
+ nor
656
+ normally
657
+ not
658
+ nothing
659
+ novel
660
+ now
661
+ nowhere
662
+ o
663
+ obviously
664
+ of
665
+ off
666
+ often
667
+ oh
668
+ ok
669
+ okay
670
+ old
671
+ on
672
+ once
673
+ one
674
+ ones
675
+ only
676
+ onto
677
+ or
678
+ other
679
+ others
680
+ otherwise
681
+ ought
682
+ our
683
+ ours
684
+ ourselves
685
+ out
686
+ outside
687
+ over
688
+ overall
689
+ own
690
+ par
691
+ pata
692
+ pe
693
+ pehla
694
+ pehle
695
+ pehli
696
+ people
697
+ per
698
+ perhaps
699
+ phla
700
+ phle
701
+ phli
702
+ placed
703
+ please
704
+ plus
705
+ poora
706
+ poori
707
+ provides
708
+ pura
709
+ puri
710
+ q
711
+ que
712
+ quite
713
+ raha
714
+ rahaa
715
+ rahe
716
+ rahi
717
+ rakh
718
+ rakha
719
+ rakhe
720
+ rakhen
721
+ rakhi
722
+ rakho
723
+ rather
724
+ re
725
+ really
726
+ reasonably
727
+ regarding
728
+ regardless
729
+ regards
730
+ rehte
731
+ rha
732
+ rhaa
733
+ rhe
734
+ rhi
735
+ ri
736
+ right
737
+ s
738
+ sa
739
+ saara
740
+ saare
741
+ saath
742
+ sab
743
+ sabhi
744
+ sabse
745
+ sahi
746
+ said
747
+ sakta
748
+ saktaa
749
+ sakte
750
+ sakti
751
+ same
752
+ sang
753
+ sara
754
+ sath
755
+ saw
756
+ say
757
+ saying
758
+ says
759
+ se
760
+ second
761
+ secondly
762
+ see
763
+ seeing
764
+ seem
765
+ seemed
766
+ seeming
767
+ seems
768
+ seen
769
+ self
770
+ selves
771
+ sensible
772
+ sent
773
+ serious
774
+ seriously
775
+ seven
776
+ several
777
+ shall
778
+ shan
779
+ shant
780
+ shan't
781
+ she
782
+ she's
783
+ should
784
+ shouldn
785
+ shouldnt
786
+ shouldn't
787
+ should've
788
+ si
789
+ sir
790
+ sir.
791
+ since
792
+ six
793
+ so
794
+ soch
795
+ some
796
+ somebody
797
+ somehow
798
+ someone
799
+ something
800
+ sometime
801
+ sometimes
802
+ somewhat
803
+ somewhere
804
+ soon
805
+ still
806
+ sub
807
+ such
808
+ sup
809
+ sure
810
+ t
811
+ tab
812
+ tabh
813
+ tak
814
+ take
815
+ taken
816
+ tarah
817
+ teen
818
+ teeno
819
+ teesra
820
+ teesre
821
+ teesri
822
+ tell
823
+ tends
824
+ tera
825
+ tere
826
+ teri
827
+ th
828
+ tha
829
+ than
830
+ thank
831
+ thanks
832
+ thanx
833
+ that
834
+ that'll
835
+ thats
836
+ that's
837
+ the
838
+ theek
839
+ their
840
+ theirs
841
+ them
842
+ themselves
843
+ then
844
+ thence
845
+ there
846
+ thereafter
847
+ thereby
848
+ therefore
849
+ therein
850
+ theres
851
+ there's
852
+ thereupon
853
+ these
854
+ they
855
+ they'd
856
+ they'll
857
+ they're
858
+ they've
859
+ thi
860
+ thik
861
+ thing
862
+ think
863
+ thinking
864
+ third
865
+ this
866
+ tho
867
+ thoda
868
+ thodi
869
+ thorough
870
+ thoroughly
871
+ those
872
+ though
873
+ thought
874
+ three
875
+ through
876
+ throughout
877
+ thru
878
+ thus
879
+ tjhe
880
+ to
881
+ together
882
+ toh
883
+ too
884
+ took
885
+ toward
886
+ towards
887
+ tried
888
+ tries
889
+ true
890
+ truly
891
+ try
892
+ trying
893
+ tu
894
+ tujhe
895
+ tum
896
+ tumhara
897
+ tumhare
898
+ tumhari
899
+ tune
900
+ twice
901
+ two
902
+ um
903
+ umm
904
+ un
905
+ under
906
+ unhe
907
+ unhi
908
+ unho
909
+ unhone
910
+ unka
911
+ unkaa
912
+ unke
913
+ unki
914
+ unko
915
+ unless
916
+ unlikely
917
+ unn
918
+ unse
919
+ until
920
+ unto
921
+ up
922
+ upar
923
+ upon
924
+ us
925
+ use
926
+ used
927
+ useful
928
+ uses
929
+ usi
930
+ using
931
+ uska
932
+ uske
933
+ usne
934
+ uss
935
+ usse
936
+ ussi
937
+ usually
938
+ vaala
939
+ vaale
940
+ vaali
941
+ vahaan
942
+ vahan
943
+ vahi
944
+ vahin
945
+ vaisa
946
+ vaise
947
+ vaisi
948
+ vala
949
+ vale
950
+ vali
951
+ various
952
+ ve
953
+ very
954
+ via
955
+ viz
956
+ vo
957
+ waala
958
+ waale
959
+ waali
960
+ wagaira
961
+ wagairah
962
+ wagerah
963
+ waha
964
+ wahaan
965
+ wahan
966
+ wahi
967
+ wahin
968
+ waisa
969
+ waise
970
+ waisi
971
+ wala
972
+ wale
973
+ wali
974
+ want
975
+ wants
976
+ was
977
+ wasn
978
+ wasnt
979
+ wasn't
980
+ way
981
+ we
982
+ we'd
983
+ well
984
+ we'll
985
+ went
986
+ were
987
+ we're
988
+ weren
989
+ werent
990
+ weren't
991
+ we've
992
+ what
993
+ whatever
994
+ what's
995
+ when
996
+ whence
997
+ whenever
998
+ where
999
+ whereafter
1000
+ whereas
1001
+ whereby
1002
+ wherein
1003
+ where's
1004
+ whereupon
1005
+ wherever
1006
+ whether
1007
+ which
1008
+ while
1009
+ who
1010
+ whoever
1011
+ whole
1012
+ whom
1013
+ who's
1014
+ whose
1015
+ why
1016
+ will
1017
+ willing
1018
+ with
1019
+ within
1020
+ without
1021
+ wo
1022
+ woh
1023
+ wohi
1024
+ won
1025
+ wont
1026
+ won't
1027
+ would
1028
+ wouldn
1029
+ wouldnt
1030
+ wouldn't
1031
+ y
1032
+ ya
1033
+ yadi
1034
+ yah
1035
+ yaha
1036
+ yahaan
1037
+ yahan
1038
+ yahi
1039
+ yahin
1040
+ ye
1041
+ yeah
1042
+ yeh
1043
+ yehi
1044
+ yes
1045
+ yet
1046
+ you
1047
+ you'd
1048
+ you'll
1049
+ your
1050
+ you're
1051
+ yours
1052
+ yourself
1053
+ yourselves
1054
+ you've
1055
+ yup