RatanPrakash commited on
Commit
89bed1b
·
1 Parent(s): 4038dfd

first commit

Browse files
Files changed (5) hide show
  1. .gitignore +3 -1
  2. app.py +85 -0
  3. main.ipynb +0 -0
  4. preprocessor.py +230 -0
  5. stop_hinglish.txt +1070 -0
.gitignore CHANGED
@@ -1,3 +1,5 @@
1
  WhatsApp*
2
  /chat-analyser/*
3
- chat-analyser
 
 
 
1
  WhatsApp*
2
  /chat-analyser/*
3
+ chat-analyser
4
+ .DS_Store
5
+ __pycache__
app.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import preprocessor
3
+ import matplotlib.pyplot as plt
4
+
5
+
6
+ st.sidebar.title('Whatsapp Chat Analyzer')
7
+ st.sidebar.write('Upload your whatsapp chat file to analyze the chat')
8
+ st.sidebar.write('The chat file should be a .txt file exported from whatsapp')
9
+ uploaded_file = st.sidebar.file_uploader('Choose a file')
10
+
11
+ if uploaded_file is not None:
12
+ chat_data = uploaded_file.getvalue().decode('utf-8')
13
+ df = preprocessor.preprocess_data(chat_data)
14
+ # st.write(df)
15
+
16
+ #unique users dropdown menu to select user
17
+ unique_users = df['user'].unique()
18
+ unique_users = list(unique_users)
19
+ unique_users.sort()
20
+ unique_users.insert(0, 'All')
21
+ selected_user = st.sidebar.selectbox('Select a user', unique_users)
22
+ st.sidebar.write(selected_user)
23
+
24
+ #fetch stats
25
+ user_df, total_messages, media_messages, links, emojis, total_words = preprocessor.fetch_stats(selected_user, df)
26
+ st.title(f'User: {selected_user}')
27
+ # st.write(user_df)
28
+ #display below data side by side
29
+ col1, col2, col3 = st.columns(3)
30
+ with col1:
31
+ st.write('Total messages:', total_messages)
32
+ st.write('Media messages:', media_messages)
33
+ with col2:
34
+ st.write('Links shared:', links)
35
+ st.write('Emojis shared:', emojis)
36
+ with col3:
37
+ st.write('Total words:', total_words)
38
+
39
+ #busiest users (users with most messages)
40
+ with st.expander('Busiest users'):
41
+ if selected_user == 'All':
42
+ busiest_users, plot = preprocessor.busiest_users(df)
43
+ st.write('Busiest users:')
44
+ st.write(busiest_users)
45
+ st.pyplot(plot)
46
+
47
+ with st.expander('View word cloud and most common words'):
48
+ st.pyplot(preprocessor.word_cloud(df, selected_user))
49
+
50
+ with st.expander('Most common words'):
51
+ st.write('Most common words')
52
+ temp_df, plot = preprocessor.most_common_words(selected_user, df)
53
+ st.write(temp_df)
54
+ st.pyplot(plot)
55
+ st.write("Most common emojis")
56
+ temp_df = preprocessor.most_common_emojis(selected_user, df)
57
+ st.write(temp_df)
58
+
59
+ with st.expander("Activity over time"):
60
+ col1, col2 = st.columns(2)
61
+ with col1: #left
62
+ _, plot = preprocessor.daily_timeline(selected_user, df)
63
+ st.pyplot(plot)
64
+ _, plot = preprocessor.weekday_activity_map(selected_user, df)
65
+ st.pyplot(plot)
66
+ with col2: #right
67
+ _, plot = preprocessor.monthly_timeline(selected_user, df)
68
+ st.pyplot(plot)
69
+ _, plot = preprocessor.month_activity_map(selected_user, df)
70
+ st.pyplot(plot)
71
+
72
+ st.write("Messages sent by hour")
73
+ _, plot = preprocessor.hour_activity_map(selected_user, df)
74
+ st.pyplot(plot)
75
+
76
+ st.write("weekly heatmap")
77
+ plot = preprocessor.activity_heatmap(selected_user, df)
78
+ st.pyplot(plot)
79
+
80
+
81
+
82
+
83
+
84
+
85
+
main.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
preprocessor.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from turtle import back
2
+ import pandas as pd
3
+ import re
4
+ import matplotlib.pyplot as plt
5
+ from wordcloud import WordCloud
6
+ from collections import Counter
7
+ import emoji
8
+ import numpy as np
9
+ import seaborn as sns
10
+
11
+ def preprocess_data(chat_data):
12
+ date_time_pattern = r'\d{1,2}/\d{1,2}/\d{2,4},\s\d{1,2}:\d{2}\s[APap][mM]\s-\s'
13
+ messages = re.split(date_time_pattern, chat_data)[1:]
14
+ date_times = re.findall(date_time_pattern, chat_data)
15
+ df = pd.DataFrame({'date_time': date_times, 'message': messages})
16
+ df['date_time'] = df['date_time'].str.replace('\u202f', ' ')
17
+ df['date_time'] = pd.to_datetime(df['date_time'], format='%m/%d/%y, %I:%M %p - ')
18
+ #separate users and their corresponding messages
19
+ users = []
20
+ messages = []
21
+ for message in df['message']:
22
+ entry = re.split('([\w\W]+?):\s', message)
23
+ if len(entry) > 1:
24
+ users.append(entry[1])
25
+ messages.append(entry[2])
26
+ else:
27
+ users.append('group_notification')
28
+ messages.append(entry[0])
29
+ df['user'] = users
30
+ df['message'] = messages
31
+ # extract date month year hour and minute from date_time
32
+ df['date'] = df['date_time'].dt.date
33
+ df['time'] = df['date_time'].dt.time
34
+ df['hour'] = df['date_time'].dt.hour
35
+ df['minute'] = df['date_time'].dt.minute
36
+ df['day'] = df['date_time'].dt.day
37
+ df['month'] = df['date_time'].dt.month
38
+ df['year'] = df['date_time'].dt.year
39
+ df['weekday'] = df['date_time'].dt.weekday
40
+ df['weekday_en'] = df['weekday'].map({0: 'Mon', 1: 'Tue', 2: 'Wed', 3: 'Thu', 4: 'Fri', 5: 'Sat', 6: 'Sun'})
41
+ df['month_en'] = df['month'].map({1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'Jun', 7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec'})
42
+ # df['only_date'] = df['date_time'].dt.date
43
+ df.sample(20)
44
+ return df
45
+
46
+
47
+ def fetch_stats(selected_user, df):
48
+ if selected_user == 'All':
49
+ user_df = df
50
+ else:
51
+ user_df = df[df['user'] == selected_user]
52
+ total_messages = user_df.shape[0]
53
+ media_messages = user_df[user_df['message'] == '<Media omitted>\n']
54
+ media_messages = media_messages.shape[0]
55
+ links = user_df[user_df['message'].str.contains('http')]
56
+ print(links)
57
+ links = links.shape[0]
58
+ emojis = user_df[user_df['message'].str.contains('[\U0001F600-\U0001F650]')].shape[0]
59
+ words = user_df['message'].apply(lambda x: len(x.split()))
60
+ total_words = words.sum()
61
+ return user_df, total_messages, media_messages, links, emojis, total_words
62
+
63
+ def busiest_users(df):
64
+ user_message_counts = df['user'].value_counts().reset_index()
65
+ user_message_counts.columns = ['user', 'message_count']
66
+ user_message_counts['percentage'] = (user_message_counts['message_count'] / user_message_counts['message_count'].sum()) * 100
67
+ user_message_counts['percentage'] = user_message_counts['percentage'].round(2)
68
+ user_message_counts = user_message_counts.sort_values(by='message_count', ascending=False)
69
+ busiest_users = user_message_counts
70
+ plt.bar(busiest_users.user, busiest_users.message_count)
71
+ plt.xticks(rotation=45)
72
+ plt.title('Busiest users')
73
+ plt.xlabel('Users')
74
+ plt.ylabel('Total messages')
75
+ return busiest_users, plt
76
+
77
+ def word_cloud(df, selected_user):
78
+ if selected_user == 'All':
79
+ user_df = df
80
+ else:
81
+ user_df = df[df['user'] == selected_user]
82
+
83
+ f = open('stop_hinglish.txt','r')
84
+ stop_words = f.read()
85
+
86
+ temp = user_df[user_df['user'] != 'group_notification']
87
+ temp = temp[temp['message'] != '<Media omitted>\n']
88
+ temp = temp[temp['message'] != 'This message was deleted\n']
89
+ temp = temp[temp['message'] != 'You deleted this message\n']
90
+
91
+ words = []
92
+ for message in temp['message']:
93
+ for word in message.lower().split():
94
+ if word not in stop_words:
95
+ words.append(word)
96
+ words = ' '.join(words)
97
+
98
+ wordcloud = WordCloud(width=800, height=400, random_state=21, max_font_size=110, background_color='white')
99
+ wordcloud = wordcloud.generate(words)
100
+ plt.figure(figsize=(20, 10))
101
+ plt.imshow(wordcloud, interpolation="bilinear")
102
+ plt.axis('off')
103
+ return plt
104
+
105
+ def most_common_words(selected_user, df):
106
+ f = open('stop_hinglish.txt','r')
107
+ stop_words = f.read()
108
+
109
+ if selected_user != 'All':
110
+ df = df[df['user'] == selected_user]
111
+
112
+ temp = df[df['user'] != 'group_notification']
113
+ temp = temp[temp['message'] != '<Media omitted>\n']
114
+ temp = temp[temp['message'] != 'This message was deleted\n']
115
+ temp = temp[temp['message'] != 'You deleted this message\n']
116
+
117
+ words = []
118
+ for message in temp['message']:
119
+ for word in message.lower().split():
120
+ if word not in stop_words:
121
+ words.append(word)
122
+
123
+ most_common_df = pd.DataFrame(Counter(words).most_common(50))
124
+ most_common_df.columns = ['word', 'word_count']
125
+ fig, ax = plt.subplots(figsize=(10, 15))
126
+ ax.barh(most_common_df.word, most_common_df.word_count, height=0.8)
127
+ ax.set_xlabel('Word count')
128
+ ax.set_ylabel('Words')
129
+ ax.set_title('Most common words')
130
+ return most_common_df, fig
131
+
132
+ def most_common_emojis(selected_user, df):
133
+ if selected_user != 'All':
134
+ df = df[df['user'] == selected_user]
135
+ emojis = []
136
+ for message in df['message']:
137
+ emojis.extend([c for c in message if c in emoji.EMOJI_DATA])
138
+
139
+ emoji_df = pd.DataFrame(Counter(emojis).most_common(len(Counter(emojis))))
140
+ emoji_df.columns = ['emoji', 'emoji_count']
141
+ return emoji_df
142
+
143
+ def monthly_timeline(selected_user, df):
144
+ if selected_user != 'All':
145
+ df = df[df['user'] == selected_user]
146
+
147
+ monthly_timeline = df.groupby(['year', 'month_en']).count()['message'].reset_index()
148
+ monthly_timeline['month_year'] = monthly_timeline['month_en'] + ' ' + monthly_timeline['year'].astype(str)
149
+
150
+ fig, ax = plt.subplots(figsize=(10, 5))
151
+ ax.plot(monthly_timeline['month_year'], monthly_timeline['message'])
152
+ ax.set_title('Messages sent over Months')
153
+ ax.set_xlabel('Month-Year')
154
+ ax.set_ylabel('Total messages')
155
+ return monthly_timeline, fig
156
+
157
+ def daily_timeline(selected_user, df):
158
+ if selected_user != 'All':
159
+ df = df[df['user'] == selected_user]
160
+
161
+ daily_timeline = df.groupby('date').count()['message'].reset_index()
162
+ daily_timeline.columns = ['date', 'message_count']
163
+
164
+ fig, ax = plt.subplots(figsize=(10, 5))
165
+ ax.plot(daily_timeline['date'], daily_timeline['message_count'])
166
+ ax.set_title('Messages sent over time')
167
+ ax.set_xlabel('Date')
168
+ ax.set_ylabel('Total messages')
169
+ return daily_timeline, fig
170
+
171
+ def weekday_activity_map(selected_user, df):
172
+ if selected_user != 'All':
173
+ df = df[df['user'] == selected_user]
174
+
175
+ week_df = df['weekday_en'].value_counts().reset_index()
176
+ week_df.columns = ['weekday', 'message_count']
177
+ fig, ax = plt.subplots(figsize=(10, 5))
178
+ ax.bar(week_df['weekday'], week_df['message_count'])
179
+ ax.set_title('Messages sent per weekday')
180
+ ax.set_xlabel('Weekday')
181
+ ax.set_ylabel('Total messages')
182
+ return None, fig
183
+
184
+ def month_activity_map(selected_user, df):
185
+ if selected_user != 'All':
186
+ df = df[df['user'] == selected_user]
187
+
188
+ month_df = df['month_en'].value_counts().reset_index()
189
+ month_df.columns = ['month', 'message_count']
190
+ fig, ax = plt.subplots(figsize=(10, 5))
191
+ ax.bar(month_df['month'], month_df['message_count'])
192
+ ax.set_title('Messages sent per month')
193
+ ax.set_xlabel('Month')
194
+ ax.set_ylabel('Total messages')
195
+
196
+ return month_df, fig
197
+
198
+ def hour_activity_map(selected_user, df):
199
+ if selected_user != 'All':
200
+ df = df[df['user'] == selected_user]
201
+
202
+ # Count the number of messages per hour
203
+ hour_counts = df['hour'].value_counts().sort_index()
204
+ # Convert hours to radians
205
+ hours = np.arange(24)
206
+ radians = 2 * np.pi * (hours / 24)
207
+
208
+ # Create a polar plot
209
+ fig, ax = plt.subplots(figsize=(10, 10), subplot_kw={'projection': 'polar'})
210
+ ax.bar(radians, hour_counts, width=0.3, bottom=0.2)
211
+ ax.set_theta_direction(-1) # Clockwise
212
+ ax.set_theta_offset(np.pi / 2.0) # Start from top
213
+ ax.set_xticks(radians)
214
+ ax.set_xticklabels(hours)
215
+ ax.set_yticklabels([])
216
+ ax.set_title('Busiest Hours of the Day', va='bottom')
217
+
218
+ return hour_counts, fig
219
+
220
+ def activity_heatmap(selected_user, df):
221
+ if selected_user != 'All':
222
+ df = df[df['user'] == selected_user]
223
+
224
+ heatmap_data = df.pivot_table(index='weekday_en', columns='hour', values='message', aggfunc='count', fill_value=0)
225
+ plt.figure(figsize=(10, 6))
226
+ sns.heatmap(heatmap_data, cmap='gray_r', linewidths=.5, fmt='d')
227
+ plt.title('Activity Heatmap')
228
+ plt.xlabel('Hour of Day')
229
+ plt.ylabel('Day of Week')
230
+ return plt
stop_hinglish.txt ADDED
@@ -0,0 +1,1070 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
1056
+ ,
1057
+ kia
1058
+ diya
1059
+ dia
1060
+ =
1061
+ {
1062
+ +
1063
+ :
1064
+ ;
1065
+ .
1066
+ +=
1067
+ ??
1068
+ <
1069
+ >
1070
+ }