mrmft commited on
Commit
0c969fd
1 Parent(s): 146bdf9

adding project files to space

Browse files
Dockerfile ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.9
2
+
3
+ RUN mkdir /app
4
+ WORKDIR /app
5
+
6
+
7
+ # download model and put in trained_model folder
8
+ # RUN wget https://drive.ahdsoft.dev/s/xp5Mb7bQ34Z7BRX/download/trained_model_10000.pt
9
+ # RUN mkdir trained_model
10
+ # RUN mv trained_model_10000.pt trained_model/
11
+
12
+ # download packages
13
+ COPY requirements.txt .
14
+
15
+ ENV HTTP_PROXY http://172.17.0.1:10805
16
+ ENV HTTPS_PROXY http://172.17.0.1:10805
17
+ ENV http_proxy http://172.17.0.1:10805
18
+ ENV https_proxy http://172.17.0.1:10805
19
+
20
+ RUN pip install -r requirements.txt
21
+ COPY . .
22
+
23
+ ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=7272", "--server.address=0.0.0.0", "--client.showErrorDetails=false"]
app.py ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ # import numpy as np
3
+ import pandas as pd
4
+ from topic_modeling import TopicModeling
5
+ st.set_page_config(page_title='تحلیل‌گر متن عهد', page_icon = './ahd_logo.png', layout = 'wide')
6
+ @st.cache
7
+ def get_model():
8
+ tp_model = TopicModeling()
9
+ return tp_model
10
+
11
+ tp_model = get_model()
12
+
13
+
14
+
15
+ col1, col2, col3 = st.columns(3)
16
+ with col2:
17
+ st.title("تحلیل اسناد متنی")
18
+
19
+ # Upload CSV file
20
+ uploaded_file = st.file_uploader("آپلود فایل")
21
+ if uploaded_file is not None:
22
+ filename = uploaded_file.name
23
+ if filename.endswith('.xlsx'):
24
+ df = pd.read_excel(uploaded_file)
25
+ elif filename.endswith('.csv'):
26
+ df = pd.read_csv(uploaded_file)
27
+ else:
28
+ raise ValueError('Unsupported file format')
29
+
30
+ # Show first 10 rows of dataframe
31
+ st.write(df.head(10))
32
+
33
+ # Select columns to use for topic modeling
34
+ cols = st.multiselect("ستون‌های متنی موردنظر را انتخاب نمایید", df.columns)
35
+ ratio = st.slider('چند درصد از کل دادگان پردازش شود',min_value=0, max_value=100)
36
+ col1, col2, col3 , col4, col5 = st.columns(5)
37
+ with col3:
38
+ done_button = st.button("پردازش دادگان")
39
+ if done_button:
40
+ # print('colssssssssssssss ', cols)
41
+ # Concatenate selected text columns
42
+ df = df[cols]
43
+ df = df.head(int(len(df) * (ratio/100)))
44
+ df = df.dropna()
45
+ # text = df.apply(lambda x:' '.join(x), axis=1)
46
+
47
+ # Run topic modeling function
48
+ col1, col2, col3 = st.columns(3)
49
+ with col2:
50
+ data_progress = st.spinner('در حال پردازش دادگان')
51
+ with data_progress:
52
+ docs = tp_model.add_data(df)
53
+ st.success('پردازش دادگان با موفقیت به پایان رسید')
54
+ # print('before docs')
55
+ with st.spinner('در حال آموزش مدل'):
56
+ # print('fittttttttttt')
57
+ tp_model.fit(docs)
58
+ st.success('آموزش پایان یافت')
59
+ col1, col2, col3 = st.columns(3)
60
+ with col3:
61
+ st.title(" فضای تاپیک‌ها ")
62
+ st.header("")
63
+ fig = tp_model.get_vis_topics()
64
+ st.plotly_chart(
65
+ fig,
66
+ use_container_width=True,
67
+ theme="streamlit", # ✨ Optional, this is already set by default!
68
+ )
69
+ col1, col2, col3 = st.columns(3)
70
+ with col3:
71
+ st.title(" کلمات هر تاپیک ")
72
+ st.header("")
73
+ fig = tp_model.get_barchart()
74
+ st.plotly_chart(
75
+ fig,
76
+ use_container_width=True,
77
+ theme="streamlit", # ✨ Optional, this is already set by default!
78
+ )
79
+
80
+
81
+ col1, col2, col3 = st.columns(3)
82
+ with col3:
83
+ st.title("لیست تاپیک‌ها")
84
+ st.header("")
85
+ topics_info = tp_model.get_topic_info()
86
+ st.write(topics_info)
87
+
88
+ col1, col2, col3 = st.columns(3)
89
+ with col3:
90
+ st.title(" ابر کلمات ")
91
+ st.header("")
92
+ # # figs = tp_model.get_wordcloud()
93
+ # topic_counts = len(tp_model.topic_model.get_topic_info())
94
+ # print('topic count ', topic_counts)
95
+ # if topic_counts > 15:
96
+ # topic_counts = 15
97
+ # for topic_index in range(topic_counts):
98
+ # fig = tp_model.get_wordcloud_by_topic(topic_index)
99
+ # if fig:
100
+ figs = tp_model.get_wordcloud()
101
+ for fig in figs:
102
+ st.header("")
103
+ st.markdown('topic:')
104
+ # st.title(f'topic:{topic_index}')
105
+ st.pyplot(fig)
106
+
107
+
108
+
109
+
110
+
111
+
assets/shahrara_stopwords.txt ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ کوچک
assets/stopwords.txt ADDED
@@ -0,0 +1,1390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ آنها
69
+ آنهاست
70
+ آنچنان
71
+ آنچنان که
72
+ اونجور
73
+ اونجوری
74
+ اونجوری که
75
+ آنچه
76
+ آنکه
77
+ آنگاه
78
+ آن‌ها
79
+ آهان
80
+ آهای
81
+ آور
82
+ آورد
83
+ آوردن
84
+ آورده
85
+ آوه
86
+ آی
87
+ آیا
88
+ آید
89
+ آیند
90
+ ا
91
+ اتفاقا
92
+ اثرِ
93
+ اجراست
94
+ احتراما
95
+ احتمالا
96
+ احیاناً
97
+ اخیر
98
+ اخیراً
99
+ اری
100
+ از
101
+ از آن پس
102
+ از بس که
103
+ از جمله
104
+ ازاین رو
105
+ ازجمله
106
+ ازش
107
+ اساسا
108
+ اساساً
109
+ است
110
+ استفاد
111
+ استفاده
112
+ اسلامی اند
113
+ اش
114
+ اشتباها
115
+ اشکارا
116
+ اصلا
117
+ اصلاً
118
+ اصولا
119
+ اصولاً
120
+ اعلام
121
+ اغلب
122
+ افزود
123
+ افسوس
124
+ اقل
125
+ اقلیت
126
+ الا
127
+ الان
128
+ البته
129
+ البتّه
130
+ الهی
131
+ الی
132
+ ام
133
+ اما
134
+ امروز
135
+ امروزه
136
+ امسال
137
+ امشب
138
+ امور
139
+ امیدوارم
140
+ امیدوارند
141
+ امیدواریم
142
+ ان
143
+ ان شاأالله
144
+ انشالا
145
+ انتها
146
+ انجام
147
+ اند
148
+ اندکی
149
+ انشاالله
150
+ انصافا
151
+ انطور
152
+ انقدر
153
+ انها
154
+ انچنان
155
+ انکه
156
+ انگار
157
+ او
158
+ اوست
159
+ اول
160
+ اولا
161
+ اولاً
162
+ اولین
163
+ اون
164
+ اکثر
165
+ اکثرا
166
+ اکثراً
167
+ اکثریت
168
+ اکنون
169
+ اگر
170
+ اگر چه
171
+ اگرچه
172
+ اگه
173
+ ای
174
+ ایا
175
+ اید
176
+ ایشان
177
+ ایم
178
+ این
179
+ این جوری
180
+ این قدر
181
+ این گونه
182
+ اینان
183
+ اینجا
184
+ اینجاست
185
+ ایند
186
+ اینطور
187
+ اینقدر
188
+ اینها
189
+ اینهاست
190
+ اینو
191
+ اینچنین
192
+ اینک
193
+ اینکه
194
+ اینگونه
195
+ ب
196
+ با
197
+ بااین حال
198
+ بااین وجود
199
+ باد
200
+ بار
201
+ بارة
202
+ باره
203
+ بارها
204
+ باز
205
+ باز هم
206
+ بازهم
207
+ بازی کنان
208
+ بازیگوشانه
209
+ باش
210
+ باشد
211
+ باشم
212
+ باشند
213
+ باشی
214
+ باشید
215
+ باشیم
216
+ بالا
217
+ بالاخره
218
+ بالاخص
219
+ بالاست
220
+ بالای
221
+ بالایِ
222
+ بالطبع
223
+ بالعکس
224
+ باوجودی که
225
+ باورند
226
+ باید
227
+ بتدریج
228
+ بتوان
229
+ بتواند
230
+ بتوانی
231
+ بتوانیم
232
+ بجز
233
+ بخش
234
+ بخشه
235
+ بخشی
236
+ بخصوص
237
+ بخواه
238
+ بخواهد
239
+ بخواهم
240
+ بخواهند
241
+ بخواهی
242
+ بخواهید
243
+ بخواهیم
244
+ بخوبی
245
+ بد
246
+ بدان
247
+ بدانجا
248
+ بدانها
249
+ بدهید
250
+ بدون
251
+ بدین
252
+ بدین ترتیب
253
+ بدینجا
254
+ بر
255
+ برآنند
256
+ برا
257
+ برابر
258
+ برابرِ
259
+ براحتی
260
+ براساس
261
+ براستی
262
+ برای
263
+ برایت
264
+ برایش
265
+ برایشان
266
+ برایم
267
+ برایمان
268
+ برایِ
269
+ برخوردار
270
+ برخوردارند
271
+ برخی
272
+ برداری
273
+ برعکس
274
+ برنامه سازهاست
275
+ بروز
276
+ بروشنی
277
+ بزرگ
278
+ بزودی
279
+ بس
280
+ بسا
281
+ بسادگی
282
+ بسختی
283
+ بسوی
284
+ بسی
285
+ بسیار
286
+ بسیاری
287
+ بشدت
288
+ بطور
289
+ بطوری که
290
+ بعد
291
+ بعد از این که
292
+ بعدا
293
+ بعدازظهر
294
+ بعداً
295
+ بعدها
296
+ بعری
297
+ بعضا
298
+ بعضی
299
+ بعضی شان
300
+ بعضیهایشان
301
+ بعضی‌ها
302
+ بعلاوه
303
+ بعید
304
+ بفهمی نفهمی
305
+ بلافاصله
306
+ بله
307
+ بلکه
308
+ بلی
309
+ بماند
310
+ بنابراین
311
+ بندی
312
+ به
313
+ به آسانی
314
+ به تازگی
315
+ به تدریج
316
+ به تمامی
317
+ به جای
318
+ به جز
319
+ به خوبی
320
+ به درشتی
321
+ به دلخواه
322
+ به راستی
323
+ به رغم
324
+ به روشنی
325
+ به زودی
326
+ به سادگی
327
+ به سرعت
328
+ به شان
329
+ به شدت
330
+ به طور کلی
331
+ به طوری که
332
+ به علاوه
333
+ به قدری
334
+ به مراتب
335
+ به ناچار
336
+ به هرحال
337
+ به هیچ وجه
338
+ به وضوح
339
+ به ویژه
340
+ به کرات
341
+ به گرمی
342
+ بهت
343
+ بهتر
344
+ بهترین
345
+ بهش
346
+ بود
347
+ بودم
348
+ بودن
349
+ بودند
350
+ بوده
351
+ بودی
352
+ بودید
353
+ بودیم
354
+ بویژه
355
+ بپا
356
+ بکار
357
+ بکن
358
+ بکند
359
+ بکنم
360
+ بکنند
361
+ بکنی
362
+ بکنید
363
+ بکنیم
364
+ بگذاریم
365
+ بگو
366
+ بگوید
367
+ بگویم
368
+ بگویند
369
+ بگویی
370
+ بگویید
371
+ بگوییم
372
+ بگیر
373
+ بگیرد
374
+ بگیرم
375
+ بگیرند
376
+ بگیری
377
+ بگیرید
378
+ بگیریم
379
+ بی
380
+ بی آنکه
381
+ بی اطلاعند
382
+ بی تردید
383
+ بی تفاوتند
384
+ بی نیازمندانه
385
+ بی هدف
386
+ بیا
387
+ بیاب
388
+ بیابد
389
+ بیابم
390
+ بیابند
391
+ بیابی
392
+ بیابید
393
+ بیابیم
394
+ بیاور
395
+ بیاورد
396
+ بیاورم
397
+ بیاورند
398
+ بیاوری
399
+ بیاورید
400
+ بیاوریم
401
+ بیاید
402
+ بیایم
403
+ بیایند
404
+ بیایی
405
+ بیایید
406
+ بیاییم
407
+ بیرون
408
+ بیرونِ
409
+ بیست
410
+ بیش
411
+ بیشتر
412
+ بیشتری
413
+ بین
414
+ بیگمان
415
+ ت
416
+ تا
417
+ تازه
418
+ تان
419
+ تاکنون
420
+ تحت
421
+ تحریم هاست
422
+ تر
423
+ تر براساس
424
+ تریلیارد
425
+ تریلیون
426
+ ترین
427
+ تصریحاً
428
+ تعدادی
429
+ تعمدا
430
+ تقریبا
431
+ تقریباً
432
+ تلویحا
433
+ تلویحاً
434
+ تمام
435
+ تمام قد
436
+ تماما
437
+ تمامشان
438
+ تمامی
439
+ تند تند
440
+ تنها
441
+ تو
442
+ توؤماً
443
+ توان
444
+ تواند
445
+ توانست
446
+ توانستم
447
+ توانستن
448
+ توانستند
449
+ توانسته
450
+ توانستی
451
+ توانستیم
452
+ توانم
453
+ توانند
454
+ توانی
455
+ توانید
456
+ توانیم
457
+ توسط
458
+ تولِ
459
+ توی
460
+ تویِ
461
+ تک تک
462
+ ث
463
+ ثالثاً
464
+ ثانیا
465
+ ثانیاً
466
+ ج
467
+ جا
468
+ جای
469
+ جایی
470
+ جدا
471
+ جداً
472
+ جداگانه
473
+ جدید
474
+ جدیدا
475
+ جرمزاست
476
+ جریان
477
+ جز
478
+ جلو
479
+ جلوگیری
480
+ جلوی
481
+ جلویِ
482
+ جمع اند
483
+ جمعا
484
+ جمعی
485
+ جنابعالی
486
+ جناح
487
+ جنس اند
488
+ جهت
489
+ جور
490
+ ح
491
+ حاشیه‌ای
492
+ حاضر
493
+ حاضرم
494
+ حال
495
+ حالا
496
+ حاکیست
497
+ حتما
498
+ حتماً
499
+ حتی
500
+ حداقل
501
+ حداکثر
502
+ حدود
503
+ حدودا
504
+ حدودِ
505
+ حسابگرانه
506
+ حضرتعالی
507
+ حق
508
+ حقیرانه
509
+ حقیقتا
510
+ حول
511
+ حکماً
512
+ خ
513
+ خارجِ
514
+ خالصانه
515
+ خب
516
+ خداحافظ
517
+ خداست
518
+ خدمات
519
+ خسته‌ای
520
+ خصوصا
521
+ خصوصاً
522
+ خلاصه
523
+ خواست
524
+ خواستم
525
+ خواستن
526
+ خواستند
527
+ خواسته
528
+ خواستی
529
+ خواستید
530
+ خواستیم
531
+ خواه
532
+ خواهد
533
+ خواهم
534
+ خواهند
535
+ خواهی
536
+ خواهید
537
+ خواهیم
538
+ خوب
539
+ خود
540
+ خود به خود
541
+ خودبه خودی
542
+ خودت
543
+ خودتان
544
+ خودتو
545
+ خودش
546
+ خودشان
547
+ خودم
548
+ خودمان
549
+ خودمو
550
+ خوش
551
+ خوشبختانه
552
+ خویش
553
+ خویشتن
554
+ خویشتنم
555
+ خیاه
556
+ خیر
557
+ خیره
558
+ خیلی
559
+ د
560
+ دا
561
+ داام
562
+ دااما
563
+ داخل
564
+ داد
565
+ دادم
566
+ دادن
567
+ دادند
568
+ داده
569
+ دادی
570
+ دادید
571
+ دادیم
572
+ دار
573
+ داراست
574
+ دارد
575
+ دارم
576
+ دارند
577
+ داری
578
+ دارید
579
+ داریم
580
+ داشت
581
+ داشتم
582
+ داشتن
583
+ داشتند
584
+ داشته
585
+ داشتی
586
+ داشتید
587
+ داشتیم
588
+ دامم
589
+ دانست
590
+ دانند
591
+ دایم
592
+ دایما
593
+ در
594
+ در باره
595
+ در بارهٌ
596
+ در ثانی
597
+ در مجموع
598
+ در نهایت
599
+ در واقع
600
+ در کل
601
+ در کنار
602
+ دراین میان
603
+ درباره
604
+ درحالی که
605
+ درحالیکه
606
+ درست
607
+ درست و حسابی
608
+ درسته
609
+ درصورتی که
610
+ درعین حال
611
+ درمجموع
612
+ درواقع
613
+ درون
614
+ دریغ
615
+ دریغا
616
+ درین
617
+ دسته دسته
618
+ دشمنیم
619
+ دقیقا
620
+ دم
621
+ دنبالِ
622
+ ده
623
+ دهد
624
+ دهم
625
+ دهند
626
+ دهی
627
+ دهید
628
+ دهیم
629
+ دو
630
+ دو روزه
631
+ دوباره
632
+ دوم
633
+ دیده
634
+ دیر
635
+ دیرت
636
+ دیرم
637
+ دیروز
638
+ دیشب
639
+ دیوانه‌ای
640
+ دیوی
641
+ دیگر
642
+ دیگران
643
+ دیگری
644
+ دیگه
645
+ ذ
646
+ ذاتاً
647
+ ر
648
+ را
649
+ راجع به
650
+ راحت
651
+ راسا
652
+ راست
653
+ راستی
654
+ راه
655
+ رسما
656
+ رسید
657
+ رسیده
658
+ رشته
659
+ رفت
660
+ رفتارهاست
661
+ رفته
662
+ رنجند
663
+ رهگشاست
664
+ رو
665
+ رواست
666
+ روب
667
+ روبروست
668
+ روز
669
+ روز به روز
670
+ روزانه
671
+ روزه ایم
672
+ روزه ست
673
+ روزه م
674
+ روزهای
675
+ روزه‌ای
676
+ روش
677
+ روی
678
+ رویش
679
+ رویِ
680
+ ریزی
681
+ ز
682
+ زشتکارانند
683
+ زمان
684
+ زمانی
685
+ زمینه
686
+ زنند
687
+ زهی
688
+ زود
689
+ زودتر
690
+ زیاد
691
+ زیاده
692
+ زیر
693
+ زیرا
694
+ زیرِ
695
+ زیرچشمی
696
+ س
697
+ سابق
698
+ ساخته
699
+ ساده اند
700
+ سازی
701
+ سالانه
702
+ سالته
703
+ سالم‌تر
704
+ سالهاست
705
+ سالیانه
706
+ ساکنند
707
+ سایر
708
+ سخت
709
+ سخته
710
+ سر
711
+ سراسر
712
+ سرانجام
713
+ سراپا
714
+ سری
715
+ سریع
716
+ سریعا
717
+ سریعاً
718
+ سریِ
719
+ سعی
720
+ سمتِ
721
+ سه باره
722
+ سهواً
723
+ سوم
724
+ سوی
725
+ سویِ
726
+ سپس
727
+ سیاه چاله هاست
728
+ سیخ
729
+ ش
730
+ شان
731
+ شاهدند
732
+ شاهدیم
733
+ شاید
734
+ شبهاست
735
+ شخصا
736
+ شخصاً
737
+ شد
738
+ شدم
739
+ شدن
740
+ شدند
741
+ شده
742
+ شدی
743
+ شدید
744
+ شدیدا
745
+ شدیداً
746
+ شدیم
747
+ شش
748
+ شش نداشته
749
+ شما
750
+ شماری
751
+ شماست
752
+ شمایند
753
+ شناسی
754
+ شو
755
+ شود
756
+ شوراست
757
+ شوقم
758
+ شوم
759
+ شوند
760
+ شونده
761
+ شوی
762
+ شوید
763
+ شویم
764
+ شیرین
765
+ شیرینه
766
+ شیک
767
+ ص
768
+ صد
769
+ صددرصد
770
+ صرفا
771
+ صرفاً
772
+ صریحاً
773
+ صندوق هاست
774
+ صورت
775
+ ض
776
+ ضدِّ
777
+ ضدِّ
778
+ ضمن
779
+ ضمناً
780
+ ط
781
+ طبعا
782
+ طبعاً
783
+ طبقِ
784
+ طبیعتا
785
+ طرف
786
+ طریق
787
+ طلبکارانه
788
+ طور
789
+ طی
790
+ ظ
791
+ ظاهرا
792
+ ظاهراً
793
+ ع
794
+ عاجزانه
795
+ عاقبت
796
+ عبارتند
797
+ عجب
798
+ عجولانه
799
+ عدم
800
+ عرفانی
801
+ عقب
802
+ عقبِ
803
+ علاوه بر
804
+ علاوه بر آن
805
+ علاوه برآن
806
+ علناً
807
+ علّتِ
808
+ علی الظاهر
809
+ علی رغم
810
+ علیرغم
811
+ علیه
812
+ عمدا
813
+ عمداً
814
+ عمدتا
815
+ عمدتاً
816
+ عمده
817
+ عمل
818
+ عملا
819
+ عملاً
820
+ عملی اند
821
+ عموم
822
+ عموما
823
+ عموماً
824
+ عنقریب
825
+ عنوان
826
+ عنوانِ
827
+ عیناً
828
+ غ
829
+ غالبا
830
+ غزالان
831
+ غیر
832
+ غیرقانونی
833
+ ف
834
+ فاقد
835
+ فبها
836
+ فر
837
+ فردا
838
+ فعلا
839
+ فعلاً
840
+ فقط
841
+ فلان
842
+ فلذا
843
+ فوق
844
+ فکر
845
+ ق
846
+ قاالند
847
+ قابل
848
+ قاطبه
849
+ قاطعانه
850
+ قاعدتاً
851
+ قانوناً
852
+ قبل
853
+ قبلا
854
+ قبلاً
855
+ قبلند
856
+ قدر
857
+ قدری
858
+ قصدِ
859
+ قضایاست
860
+ قطعا
861
+ قطعاً
862
+ ل
863
+ لااقل
864
+ لاجرم
865
+ لب
866
+ لذا
867
+ لزوماً
868
+ لطفا
869
+ لطفاً
870
+ لیکن
871
+ م
872
+ ما
873
+ مادامی
874
+ ماست
875
+ مامان مامان گویان
876
+ مان
877
+ مانند
878
+ مانندِ
879
+ مبادا
880
+ متؤسفانه
881
+ متاسفانه
882
+ متعاقبا
883
+ متفاوتند
884
+ مثل
885
+ مثلا
886
+ مثلِ
887
+ مجانی
888
+ مجبورند
889
+ مجددا
890
+ مجدداً
891
+ مجموعا
892
+ مجموعاً
893
+ محتاجند
894
+ محکم
895
+ محکم‌تر
896
+ مخالفند
897
+ مختلف
898
+ مخصوصاً
899
+ مدام
900
+ مدت
901
+ مدتهاست
902
+ مدّتی
903
+ مذهبی اند
904
+ مرا
905
+ مرتب
906
+ مردانه
907
+ مردم
908
+ مردم اند
909
+ مرسی
910
+ مستحضرید
911
+ مستقیما
912
+ مستند
913
+ مسلما
914
+ مشت
915
+ مشترکاً
916
+ مشغولند
917
+ مطمانا
918
+ مطمانم
919
+ مطمینا
920
+ مع الاسف
921
+ مع ذلک
922
+ معتقدم
923
+ معتقدند
924
+ معتقدیم
925
+ معدود
926
+ معذوریم
927
+ معلومه
928
+ معمولا
929
+ معمولاً
930
+ معمولی
931
+ مغرضانه
932
+ مفیدند
933
+ مقابل
934
+ مقدار
935
+ مقصرند
936
+ مقصری
937
+ ملیارد
938
+ ملیون
939
+ ممکن
940
+ ممیزیهاست
941
+ من
942
+ منتهی
943
+ منطقی
944
+ منی
945
+ مواجهند
946
+ موارد
947
+ موجودند
948
+ مورد
949
+ موقتا
950
+ مکرر
951
+ مکرراً
952
+ مگر
953
+ مگر آن که
954
+ مگر این که
955
+ مگو
956
+ می
957
+ میان
958
+ میزان
959
+ میلیارد
960
+ میلیون
961
+ میکند
962
+ میکنم
963
+ میکنند
964
+ میکنی
965
+ میکنید
966
+ میکنیم
967
+ می‌تواند
968
+ می‌خواهیم
969
+ می‌داند
970
+ می‌رسد
971
+ می‌رود
972
+ می‌شود
973
+ می‌کنم
974
+ می‌کنند
975
+ می‌کنیم
976
+ ن
977
+ ناامید
978
+ ناخواسته
979
+ ناراضی اند
980
+ ناشی
981
+ نام
982
+ ناگاه
983
+ ناگزیر
984
+ ناگهان
985
+ ناگهانی
986
+ نباید
987
+ نبش
988
+ نبود
989
+ نخست
990
+ نخستین
991
+ نخواهد
992
+ نخواهم
993
+ نخواهند
994
+ نخواهی
995
+ نخواهید
996
+ نخواهیم
997
+ نخودی
998
+ ندارد
999
+ ندارم
1000
+ ندارند
1001
+ نداری
1002
+ ندارید
1003
+ نداریم
1004
+ نداشت
1005
+ نداشتم
1006
+ نداشتند
1007
+ نداشته
1008
+ نداشتی
1009
+ نداشتید
1010
+ نداشتیم
1011
+ نزد
1012
+ نزدِ
1013
+ نزدیک
1014
+ نزدیکِ
1015
+ نسبتا
1016
+ نشان
1017
+ نشده
1018
+ نظیر
1019
+ نفرند
1020
+ نماید
1021
+ نموده
1022
+ نمی
1023
+ نمی‌شود
1024
+ نمی‌کند
1025
+ نه
1026
+ نه تنها
1027
+ نهایتا
1028
+ نهایتاً
1029
+ نوع
1030
+ نوعاً
1031
+ نوعی
1032
+ نکرده
1033
+ نکن
1034
+ نکند
1035
+ نکنم
1036
+ نکنند
1037
+ نکنی
1038
+ نکنید
1039
+ نکنیم
1040
+ نگاه
1041
+ نگو
1042
+ نیازمندند
1043
+ نیز
1044
+ نیست
1045
+ نیستم
1046
+ نیستند
1047
+ نیستیم
1048
+ نیمی
1049
+ ه
1050
+ ها
1051
+ های
1052
+ هایی
1053
+ هبچ
1054
+ هر
1055
+ هر از گاهی
1056
+ هر چند
1057
+ هر چند که
1058
+ هر چه
1059
+ هرچند
1060
+ هرچه
1061
+ هرکس
1062
+ هرگاه
1063
+ هرگز
1064
+ هزار
1065
+ هست
1066
+ هستم
1067
+ هستند
1068
+ هستی
1069
+ هستید
1070
+ هستیم
1071
+ هفت
1072
+ هق هق کنان
1073
+ هم
1074
+ هم اکنون
1075
+ هم اینک
1076
+ همان
1077
+ همان طور که
1078
+ همان گونه که
1079
+ همانا
1080
+ همانند
1081
+ همانها
1082
+ همدیگر
1083
+ همزمان
1084
+ همه
1085
+ همه روزه
1086
+ همه ساله
1087
+ همه شان
1088
+ همهٌ
1089
+ همه‌اش
1090
+ همواره
1091
+ همچنان
1092
+ همچنان که
1093
+ همچنین
1094
+ همچون
1095
+ همچین
1096
+ همگان
1097
+ همگی
1098
+ همیشه
1099
+ همین
1100
+ همین که
1101
+ هنوز
1102
+ هنگام
1103
+ هنگامِ
1104
+ هنگامی
1105
+ هنگامی که
1106
+ هوی
1107
+ هی
1108
+ هیچ
1109
+ هیچ گاه
1110
+ هیچکدام
1111
+ هیچکس
1112
+ هیچگاه
1113
+ هیچگونه
1114
+ هیچی
1115
+ و
1116
+ و لا غیر
1117
+ وابسته اند
1118
+ واقعا
1119
+ واقعاً
1120
+ واقعی
1121
+ واقفند
1122
+ واما
1123
+ وای
1124
+ وجود
1125
+ وحشت زده
1126
+ وسطِ
1127
+ وضع
1128
+ وقتی
1129
+ وقتی که
1130
+ وقتیکه
1131
+ ولی
1132
+ وگرنه
1133
+ وگو
1134
+ وی
1135
+ ویا
1136
+ ویژه
1137
+ ّه
1138
+ ٪
1139
+ پ
1140
+ پارسال
1141
+ پارسایانه
1142
+ پاره‌ای
1143
+ پاعینِ
1144
+ پایین ترند
1145
+ پدرانه
1146
+ پرسان
1147
+ پروردگارا
1148
+ پریروز
1149
+ پس
1150
+ پس از
1151
+ پس فردا
1152
+ پشت
1153
+ پشتوانه اند
1154
+ پشیمونی
1155
+ پنج
1156
+ پهن شده
1157
+ پی
1158
+ پی درپی
1159
+ پیدا
1160
+ پیداست
1161
+ پیرامون
1162
+ پیش
1163
+ پیشاپیش
1164
+ پیشتر
1165
+ پیشِ
1166
+ پیوسته
1167
+ چ
1168
+ چاپلوسانه
1169
+ چت
1170
+ چته
1171
+ چرا
1172
+ چرا که
1173
+ چشم بسته
1174
+ چطور
1175
+ چقدر
1176
+ چنان
1177
+ چنانچه
1178
+ چنانکه
1179
+ چند
1180
+ چند روزه
1181
+ چندان
1182
+ چنده
1183
+ چندین
1184
+ چنین
1185
+ چه
1186
+ چه بسا
1187
+ چه طور
1188
+ چهار
1189
+ چو
1190
+ چون
1191
+ چکار
1192
+ چگونه
1193
+ چی
1194
+ چیز
1195
+ چیزی
1196
+ چیزیست
1197
+ چیست
1198
+ چیه
1199
+ ژ
1200
+ ک
1201
+ کارند
1202
+ کاش
1203
+ کاشکی
1204
+ کامل
1205
+ کاملا
1206
+ کاملاً
1207
+ کتبا
1208
+ کجا
1209
+ کجاست
1210
+ کدام
1211
+ کرد
1212
+ کردم
1213
+ کردن
1214
+ کردند
1215
+ کرده
1216
+ کردی
1217
+ کردید
1218
+ کردیم
1219
+ کس
1220
+ کسانی
1221
+ کسی
1222
+ کل
1223
+ کلا
1224
+ کلی
1225
+ کلیه
1226
+ کم
1227
+ کم کم
1228
+ کمااینکه
1229
+ کماکان
1230
+ کمتر
1231
+ کمتره
1232
+ کمتری
1233
+ کمی
1234
+ کن
1235
+ کنار
1236
+ کنارش
1237
+ کنارِ
1238
+ کنایه‌ای
1239
+ کند
1240
+ کنم
1241
+ کنند
1242
+ کننده
1243
+ کنون
1244
+ کنونی
1245
+ کنی
1246
+ کنید
1247
+ کنیم
1248
+ که
1249
+ کو
1250
+ کَی
1251
+ کی
1252
+ گ
1253
+ گاه
1254
+ گاهی
1255
+ گذاری
1256
+ گذاشته
1257
+ گذشته
1258
+ گردد
1259
+ گردند
1260
+ گرفت
1261
+ گرفتارند
1262
+ گرفتم
1263
+ گرفتن
1264
+ گرفتند
1265
+ گرفته
1266
+ گرفتی
1267
+ گرفتید
1268
+ گرفتیم
1269
+ گروهی
1270
+ گرچه
1271
+ گفت
1272
+ گفتم
1273
+ گفتن
1274
+ گفتند
1275
+ گفته
1276
+ گفتی
1277
+ گفتید
1278
+ گفتیم
1279
+ گه
1280
+ گهگاه
1281
+ گو
1282
+ گونه
1283
+ گوی
1284
+ گویا
1285
+ گوید
1286
+ گویم
1287
+ گویند
1288
+ گویی
1289
+ گویید
1290
+ گوییم
1291
+ گیر
1292
+ گیرد
1293
+ گیرم
1294
+ گیرند
1295
+ گیری
1296
+ گیرید
1297
+ گیریم
1298
+ ی
1299
+ یا
1300
+ یاب
1301
+ یابد
1302
+ یابم
1303
+ یابند
1304
+ یابی
1305
+ یابید
1306
+ یابیم
1307
+ یارب
1308
+ یافت
1309
+ یافتم
1310
+ یافتن
1311
+ یافته
1312
+ یافتی
1313
+ یافتید
1314
+ یافتیم
1315
+ یعنی
1316
+ یقینا
1317
+ یقیناً
1318
+ یه
1319
+ یواش یواش
1320
+ یک
1321
+ یک جوری
1322
+ یک کم
1323
+ یک کمی
1324
+ یکدیگر
1325
+ یکریز
1326
+ یکسال
1327
+ یکهزار
1328
+ یکی
1329
+ ۰
1330
+ ۱
1331
+ ۲
1332
+ ۳
1333
+ ۴
1334
+ ۵
1335
+ ۶
1336
+ ۷
1337
+ ۸
1338
+ ۹
1339
+
1340
+ و
1341
+ ‏‏‏علاقه مند
1342
+ میخونم
1343
+ میخوانم
1344
+ می خوانم
1345
+ میخونید
1346
+ میخوانید
1347
+ می خوانید
1348
+ در آینده
1349
+ بشم
1350
+ بشی
1351
+ بشید
1352
+ بشین
1353
+ یک چیزی
1354
+ بهتون
1355
+ اینم
1356
+ بیفته
1357
+ محض رضای خدا
1358
+ هیچوقت
1359
+ دونستن
1360
+ میفرستین
1361
+ میفرستی
1362
+ میفرستم
1363
+ عه
1364
+ هستش
1365
+ همه‌مون
1366
+ همه مون
1367
+ جدی
1368
+ بدجور
1369
+ بد جور
1370
+ خداروشکر
1371
+ شی
1372
+ وجدانا
1373
+ روم
1374
+ بگین
1375
+ هیچ جور
1376
+ هیچجور
1377
+ هیچ‌جور
1378
+ مثل اینکه
1379
+ دوهزاری
1380
+ هستا
1381
+ شون
1382
+ هامو
1383
+ هام رو
1384
+ مارو
1385
+ ما رو
1386
+ رو
1387
+ داره
1388
+ این دفعه
1389
+ دفعه
1390
+ nan
docker-compose.yml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.8"
2
+
3
+
4
+ services:
5
+ kpe:
6
+ build: .
7
+ ports:
8
+ - "7272:7272"
9
+
requirements.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ scikit-learn
2
+ num2fawords
3
+ wordcloud-fa
4
+ streamlit
5
+ altair==4.2.2
6
+ bertopic
7
+ pandas
8
+ parsinorm
9
+ matplotlib
10
+ scipy
topic_modeling.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from bertopic import BERTopic
2
+ from scipy.cluster import hierarchy as sch
3
+ from sklearn.feature_extraction.text import CountVectorizer
4
+ from sklearn.datasets import fetch_20newsgroups
5
+ from bertopic import BERTopic
6
+ # from wordcloud import WordCloud
7
+ import matplotlib.pyplot as plt
8
+ from wordcloud_fa import WordCloudFa
9
+
10
+ import utils
11
+
12
+ class TopicModeling:
13
+ def __init__(self, stopwords_path='./assets/stopwords.txt', specific_stopwords_path='./assets/shahrara_stopwords.txt', embedding_model='paraphrase-multilingual-mpnet-base-v2') -> None:
14
+ stopwords = open(stopwords_path).read().splitlines()
15
+ specific_stopwords = open(specific_stopwords_path).read().splitlines()
16
+ stopwords = stopwords + specific_stopwords
17
+ vectorizer_model = CountVectorizer(stop_words=stopwords)
18
+ self.topic_model = BERTopic(embedding_model=embedding_model, vectorizer_model=vectorizer_model, verbose=True)
19
+
20
+
21
+ def add_data(self, df):
22
+ print('add data')
23
+ # df = df.dropna()
24
+ df['FINAL_CONCATED_TEXT_FOR_TOPIC'] = df.apply(lambda x: '. '.join(x), axis=1)
25
+ df['FINAL_CONCATED_TEXT_FOR_TOPIC'] = df['FINAL_CONCATED_TEXT_FOR_TOPIC'].apply(utils.normalize)
26
+ docs = list(set(df['FINAL_CONCATED_TEXT_FOR_TOPIC'].tolist()))
27
+ docs = [d for d in docs if d and type(d) == str and len(d.split())>3]
28
+ print('len docs ', len(docs))
29
+ return docs
30
+
31
+
32
+ def fit(self, docs):
33
+ print('self docs : ', len(docs))
34
+ print(docs[:5])
35
+ self.topics, self.probs = self.topic_model.fit_transform(docs)
36
+
37
+ def get_barchart(self):
38
+ return self.topic_model.visualize_barchart()
39
+
40
+
41
+ def get_vis_topics(self):
42
+ return self.topic_model.visualize_topics()
43
+
44
+
45
+ def get_h_topics(self):
46
+ linkage_function = lambda x: sch.linkage(x, 'single', optimal_ordering=True)
47
+ hierarchical_topics = self.topic_model.hierarchical_topics(self.docs, linkage_function=linkage_function)
48
+ return self.topic_model.visualize_hierarchy(hierarchical_topics=hierarchical_topics)
49
+
50
+ def topic_over_tome(self):
51
+ # # Create topics over time
52
+ # model = BERTopic(verbose=True)
53
+ topics_over_time = self.topic_model.topics_over_time(self.docs, self.timestamps, datetime_format="%m-%d")
54
+ return self.topic_model.visualize_topics_over_time(topics_over_time, top_n_topics=5)
55
+
56
+
57
+ def visualize_documents(self, docs):
58
+ self.topic_model.visualize_documents(docs, embeddings=embeddings)
59
+ reduced_embeddings = UMAP(n_neighbors=10, n_components=2, min_dist=0.0, metric='cosine').fit_transform(embeddings)
60
+ topic_model.visualize_documents(docs, reduced_embeddings=reduced_embeddings)
61
+
62
+
63
+ def get_topic_info(self):
64
+ return self.topic_model.get_topic_info()
65
+
66
+
67
+ def get_wordcloud(self):
68
+ all_plts = []
69
+ topic_counts = len(self.topic_model.get_topic_info())
70
+ if topic_counts > 30:
71
+ topic_counts = 30
72
+ print('topic count ', topic_counts)
73
+ for topic_index in range(topic_counts):
74
+ print(topic_index)
75
+ top_n_words = self.topic_model.get_topic(topic_index)
76
+ if type(top_n_words) != bool:
77
+ text = {word: value for word, value in top_n_words}
78
+ wc = WordCloudFa(background_color="white", max_words=1000, no_reshape=True)
79
+ wc.generate_from_frequencies(text)
80
+ plt.imshow(wc, interpolation="bilinear")
81
+ plt.axis("off")
82
+ fig = plt.figure()
83
+ all_plts.append(fig)
84
+ # plt.show()
85
+ return all_plts
86
+
87
+ def get_wordcloud_by_topic(self, topic_index):
88
+ top_n_words = self.topic_model.get_topic(topic_index)
89
+ if type(top_n_words) != bool:
90
+ text = {word: value for word, value in top_n_words}
91
+ wc = WordCloudFa(background_color="white", max_words=1000, no_reshape=True)
92
+ wc.generate_from_frequencies(text)
93
+ plt.imshow(wc, interpolation="bilinear")
94
+ plt.axis("off")
95
+ fig = plt.figure()
96
+ return fig
97
+ return None
utils.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from parsinorm import General_normalization
2
+
3
+ #normalize
4
+ def normalize(txt):
5
+ general_normalization = General_normalization()
6
+ txt = general_normalization.alphabet_correction(txt)
7
+ txt = general_normalization.semi_space_correction(txt)
8
+ txt = general_normalization.english_correction(txt)
9
+ txt = general_normalization.html_correction(txt)
10
+ txt = general_normalization.arabic_correction(txt)
11
+ txt = general_normalization.punctuation_correction(txt)
12
+ txt = general_normalization.specials_chars(txt)
13
+ txt = general_normalization.remove_emojis(txt)
14
+ txt = general_normalization.number_correction(txt)
15
+ txt = general_normalization.remove_not_desired_chars(txt)
16
+ txt = general_normalization.remove_repeated_punctuation(txt)
17
+ return ' '.join(txt.replace('\n', ' ').replace('\t', ' ').replace('\r', ' ').split())
18
+