Mohzen321 commited on
Commit
df2f2ca
·
verified ·
1 Parent(s): 142433f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -46
app.py CHANGED
@@ -23,6 +23,11 @@ if uploaded_file is not None:
23
  # تحديد الفئات
24
  categories = ["shop", "game", "stream"]
25
 
 
 
 
 
 
26
  # قوائم لتخزين النتائج
27
  shopping_items = []
28
  gaming_items = []
@@ -40,9 +45,6 @@ if uploaded_file is not None:
40
  # قائمة لتحليل الصيغ (Extensions)
41
  extensions = {}
42
 
43
- # قائمة لتحليل أنماط الصفحات الكاملة (Full PageType)
44
- full_page_types = []
45
-
46
  # متغيرات للتحكم في العملية
47
  progress_bar = st.progress(0)
48
  pause_button = st.button("Pause")
@@ -51,9 +53,9 @@ if uploaded_file is not None:
51
  paused = False
52
  stopped = False
53
  current_index = 0 # مؤشر للكلمة الحالية
54
- batch_size = 10 # عدد العناصر التي يتم معالجتها في الدفعة الواحدة
55
 
56
- # دالة تصنيف الكلمات باستخدام الدفعات
57
  def classify_keywords_batch(items, categories, start_index=0):
58
  global paused, stopped, current_index
59
  total_items = len(items)
@@ -66,26 +68,34 @@ if uploaded_file is not None:
66
 
67
  # معالجة دفعة من العناصر
68
  batch = items[i:i + batch_size]
69
- results = classifier(batch, categories)
70
-
71
- for j, result in enumerate(results):
72
- best_category = result['labels'][0]
73
- score = result['scores'][0]
74
-
75
- if best_category == "shop" and score > 0.5:
76
- shopping_items.append(batch[j])
77
- elif best_category == "game" and score > 0.5:
78
- gaming_items.append(batch[j])
79
- elif best_category == "stream" and score > 0.5:
80
- streaming_items.append(batch[j])
81
  else:
82
- unknown_items.append(batch[j])
 
 
 
 
 
 
 
 
 
 
 
 
83
 
84
  # تحديث المؤشر الحالي
85
- current_index = min(i + batch_size, total_items) # تأكد من عدم تجاوز المؤشر للعدد الإجمالي
86
 
87
  # تحديث شريط التقدم
88
- progress = min((current_index) / total_items, 1.0) # تأكد من أن قيمة التقدم لا تتجاوز 1.0
89
  progress_bar.progress(progress)
90
 
91
  # تحديث النتائج في الوقت الحقيقي
@@ -109,7 +119,7 @@ if uploaded_file is not None:
109
  batch = items[i:i + batch_size]
110
  for url in batch:
111
  # استخراج الباراميترات من الرابط باستخدام RegEx
112
- params = re.findall(r'(\w+)=\w+', url)
113
  for param in params:
114
  # تصنيف الباراميتر باستخدام zero-shot-classification
115
  result = classifier(param, categories)
@@ -125,26 +135,27 @@ if uploaded_file is not None:
125
  else:
126
  param_categories["unknown_params"].append(param)
127
 
128
- # استخراج الصيغ (Extensions) من الروابط
129
- match = re.search(r'\.([a-zA-Z0-9]+)$', url)
130
- if match:
131
- ext = match.group(1)
 
 
 
 
 
 
 
 
132
  if ext not in extensions:
133
  extensions[ext] = 0
134
  extensions[ext] += 1
135
 
136
- # استخراج أنماط الصفحات الكاملة (Full PageType)
137
- page_type_match = re.search(r'(\w+\.php|\w+\.html)\?', url)
138
- if page_type_match:
139
- page_type = page_type_match.group(1)
140
- if page_type not in full_page_types:
141
- full_page_types.append(page_type)
142
-
143
  # تحديث المؤشر الحالي
144
- current_index = min(i + batch_size, total_items) # تأكد من عدم تجاوز المؤشر للعدد الإجمالي
145
 
146
  # تحديث شريط التقدم
147
- progress = min((current_index) / total_items, 1.0) # تأكد من أن قيمة التقدم لا تتجاوز 1.0
148
  progress_bar.progress(progress)
149
 
150
  # تحديث النتائج في الوقت الحقيقي
@@ -155,7 +166,7 @@ if uploaded_file is not None:
155
 
156
  # دالة تحديث النتائج
157
  def update_results():
158
- # تحديث محتوى المربعات النصية
159
  st.session_state.shopping_text = "\n".join(shopping_items)
160
  st.session_state.gaming_text = "\n".join(gaming_items)
161
  st.session_state.streaming_text = "\n".join(streaming_items)
@@ -171,7 +182,7 @@ if uploaded_file is not None:
171
  st.session_state.extensions_text = "\n".join(extensions.keys())
172
 
173
  # تحديث محتوى المربع الخاص بأنماط الصفحات الكاملة
174
- st.session_state.full_page_types = "\n".join(full_page_types)
175
 
176
  # دالة تصدير النتائج
177
  def export_results(key, filename):
@@ -193,12 +204,12 @@ if uploaded_file is not None:
193
  # زر الإيقاف المؤقت
194
  if pause_button:
195
  paused = True
196
- st.write("Classification paused.")
197
 
198
  # زر الاستمرار
199
  if continue_button and paused:
200
  paused = False
201
- st.write("Classification resumed.")
202
  if operation == "Filter Keywords":
203
  classify_keywords_batch(items, categories, start_index=current_index)
204
  elif operation == "Extra & Filter Param (URLs)":
@@ -207,7 +218,7 @@ if uploaded_file is not None:
207
  # زر التوقف الكامل
208
  if stop_button:
209
  stopped = True
210
- st.write("Classification stopped.")
211
 
212
  # عرض النتائج بناءً على الخيار المختار
213
  if operation == "Filter Keywords":
@@ -262,13 +273,6 @@ if uploaded_file is not None:
262
  st.text_area("Copy the unknown parameters here:", value=st.session_state.unknown_params, height=200, key="unknown_params")
263
  st.button("Export Unknown Parameters", on_click=export_results, args=("unknown_params", "unknown_params.txt"))
264
 
265
- # عرض الصيغ (Extensions)
266
- st.header("File Extensions")
267
- if 'extensions_text' not in st.session_state:
268
- st.session_state.extensions_text = ""
269
- st.text_area("Copy the file extensions here:", value=st.session_state.extensions_text, height=200, key="extensions")
270
- st.button("Export File Extensions", on_click=export_results, args=("extensions_text", "file_extensions.txt"))
271
-
272
  # عرض أنماط الصفحات الكاملة (Full PageType)
273
  st.header("Full PageType")
274
  if 'full_page_types' not in st.session_state:
@@ -276,5 +280,12 @@ if uploaded_file is not None:
276
  st.text_area("Copy the full page types here:", value=st.session_state.full_page_types, height=200, key="full_page_types")
277
  st.button("Export Full PageTypes", on_click=export_results, args=("full_page_types", "full_page_types.txt"))
278
 
 
 
 
 
 
 
 
279
  else:
280
  st.warning("Please upload a text file to start classification.")
 
23
  # تحديد الفئات
24
  categories = ["shop", "game", "stream"]
25
 
26
+ # قوائم مرجعية لكل فئة لتحسين الدقة
27
+ shopping_keywords = ["buy", "shop", "purchase", "product", "categories", "supplier", "delivered"]
28
+ gaming_keywords = ["play", "game", "player", "level", "score"]
29
+ streaming_keywords = ["watch", "stream", "video", "live"]
30
+
31
  # قوائم لتخزين النتائج
32
  shopping_items = []
33
  gaming_items = []
 
45
  # قائمة لتحليل الصيغ (Extensions)
46
  extensions = {}
47
 
 
 
 
48
  # متغيرات للتحكم في العملية
49
  progress_bar = st.progress(0)
50
  pause_button = st.button("Pause")
 
53
  paused = False
54
  stopped = False
55
  current_index = 0 # مؤشر للكلمة الحالية
56
+ batch_size = 50 # عدد العناصر التي يتم معالجتها في الدفعة الواحدة
57
 
58
+ # دالة تصنيف الكلمات باستخدام القوائم المرجعية أولاً ثم النموذج
59
  def classify_keywords_batch(items, categories, start_index=0):
60
  global paused, stopped, current_index
61
  total_items = len(items)
 
68
 
69
  # معالجة دفعة من العناصر
70
  batch = items[i:i + batch_size]
71
+ for word in batch:
72
+ # تصنيف الكلمة باستخدام القوائم المرجعية أولاً
73
+ if word.lower() in shopping_keywords:
74
+ shopping_items.append(word)
75
+ elif word.lower() in gaming_keywords:
76
+ gaming_items.append(word)
77
+ elif word.lower() in streaming_keywords:
78
+ streaming_items.append(word)
 
 
 
 
79
  else:
80
+ # تصنيف الكلمة باستخدام النموذج إذا لم تكن في القوائم المرجعية
81
+ result = classifier(word, categories)
82
+ best_category = result['labels'][0]
83
+ score = result['scores'][0]
84
+
85
+ if best_category == "shop" and score > 0.5:
86
+ shopping_items.append(word)
87
+ elif best_category == "game" and score > 0.5:
88
+ gaming_items.append(word)
89
+ elif best_category == "stream" and score > 0.5:
90
+ streaming_items.append(word)
91
+ else:
92
+ unknown_items.append(word)
93
 
94
  # تحديث المؤشر الحالي
95
+ current_index = i + batch_size
96
 
97
  # تحديث شريط التقدم
98
+ progress = min((current_index) / total_items, 1.0)
99
  progress_bar.progress(progress)
100
 
101
  # تحديث النتائج في الوقت الحقيقي
 
119
  batch = items[i:i + batch_size]
120
  for url in batch:
121
  # استخراج الباراميترات من الرابط باستخدام RegEx
122
+ params = re.findall(r'(\w+)=', url)
123
  for param in params:
124
  # تصنيف الباراميتر باستخدام zero-shot-classification
125
  result = classifier(param, categories)
 
135
  else:
136
  param_categories["unknown_params"].append(param)
137
 
138
+ # استخراج ا��أنماط الكاملة للصفحات (Full PageType)
139
+ page_type_match = re.search(r'(\w+\.[a-z]+)\?', url)
140
+ if page_type_match:
141
+ page_type = page_type_match.group(1)
142
+ if 'full_page_types' not in st.session_state:
143
+ st.session_state.full_page_types = set()
144
+ st.session_state.full_page_types.add(page_type)
145
+
146
+ # استخراج الصيغ (Extensions) بدون علامات الاستفهام
147
+ extension_match = re.search(r'\.([a-z]+)(\?|$)', url)
148
+ if extension_match:
149
+ ext = extension_match.group(1)
150
  if ext not in extensions:
151
  extensions[ext] = 0
152
  extensions[ext] += 1
153
 
 
 
 
 
 
 
 
154
  # تحديث المؤشر الحالي
155
+ current_index = i + batch_size
156
 
157
  # تحديث شريط التقدم
158
+ progress = min((current_index) / total_items, 1.0)
159
  progress_bar.progress(progress)
160
 
161
  # تحديث النتائج في الوقت الحقيقي
 
166
 
167
  # دالة تحديث النتائج
168
  def update_results():
169
+ # تحديث محتوى المربعات النصية للكلمات المفتاحية
170
  st.session_state.shopping_text = "\n".join(shopping_items)
171
  st.session_state.gaming_text = "\n".join(gaming_items)
172
  st.session_state.streaming_text = "\n".join(streaming_items)
 
182
  st.session_state.extensions_text = "\n".join(extensions.keys())
183
 
184
  # تحديث محتوى المربع الخاص بأنماط الصفحات الكاملة
185
+ st.session_state.full_page_types = "\n".join(st.session_state.full_page_types)
186
 
187
  # دالة تصدير النتائج
188
  def export_results(key, filename):
 
204
  # زر الإيقاف المؤقت
205
  if pause_button:
206
  paused = True
207
+ st.write("Process paused.")
208
 
209
  # زر الاستمرار
210
  if continue_button and paused:
211
  paused = False
212
+ st.write("Process resumed.")
213
  if operation == "Filter Keywords":
214
  classify_keywords_batch(items, categories, start_index=current_index)
215
  elif operation == "Extra & Filter Param (URLs)":
 
218
  # زر التوقف الكامل
219
  if stop_button:
220
  stopped = True
221
+ st.write("Process stopped.")
222
 
223
  # عرض النتائج بناءً على الخيار المختار
224
  if operation == "Filter Keywords":
 
273
  st.text_area("Copy the unknown parameters here:", value=st.session_state.unknown_params, height=200, key="unknown_params")
274
  st.button("Export Unknown Parameters", on_click=export_results, args=("unknown_params", "unknown_params.txt"))
275
 
 
 
 
 
 
 
 
276
  # عرض أنماط الصفحات الكاملة (Full PageType)
277
  st.header("Full PageType")
278
  if 'full_page_types' not in st.session_state:
 
280
  st.text_area("Copy the full page types here:", value=st.session_state.full_page_types, height=200, key="full_page_types")
281
  st.button("Export Full PageTypes", on_click=export_results, args=("full_page_types", "full_page_types.txt"))
282
 
283
+ # عرض الصيغ (File Extensions)
284
+ st.header("File Extensions")
285
+ if 'extensions_text' not in st.session_state:
286
+ st.session_state.extensions_text = ""
287
+ st.text_area("Copy the file extensions here:", value=st.session_state.extensions_text, height=200, key="extensions")
288
+ st.button("Export File Extensions", on_click=export_results, args=("extensions_text", "file_extensions.txt"))
289
+
290
  else:
291
  st.warning("Please upload a text file to start classification.")