Spaces:
Sleeping
Sleeping
File size: 5,197 Bytes
ced22e1 a00ff89 ced22e1 4c32405 ced22e1 95a596a 865820b 95a596a a00ff89 77f27da a00ff89 77f27da a00ff89 77f27da a00ff89 77f27da a00ff89 865820b a00ff89 865820b a00ff89 865820b a00ff89 865820b a00ff89 865820b a00ff89 77f27da a00ff89 865820b 902d69b 865820b a00ff89 77f27da a00ff89 77f27da a00ff89 902d69b a0a65f3 902d69b 865820b 902d69b |
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 |
import streamlit as st
from transformers import pipeline
import time
# تحميل النموذج
classifier = pipeline("zero-shot-classification", model="cross-encoder/nli-distilroberta-base")
# عنوان التطبيق
st.title("Text Classification App")
# إدخال الملف النصي
uploaded_file = st.file_uploader("Upload a text file containing keywords", type=["txt"])
if uploaded_file is not None:
# قراءة الملف النصي
content = uploaded_file.read().decode("utf-8")
keywords = [line.strip() for line in content.splitlines() if line.strip()]
# تحديد الفئات
categories = ["shopping", "gaming", "streaming"]
# قوائم لتخزين الكلمات حسب الفئة
shopping_words = []
gaming_words = []
streaming_words = []
unknown_words = [] # قائمة جديدة للكلمات غير المعروفة
# متغيرات للتحكم في العملية
progress_bar = st.progress(0)
pause_button = st.button("Pause")
stop_button = st.button("Stop")
continue_button = st.button("Continue") # زر جديد للاستمرار
paused = False
stopped = False
current_index = 0 # مؤشر للكلمة الحالية
# دالة تصنيف الكلمات
def classify_keywords(keywords, categories, start_index=0):
global paused, stopped, current_index # استخدام المتغيرات العالمية
total_keywords = len(keywords)
for i, word in enumerate(keywords[start_index:], start=start_index):
current_index = i # تحديث المؤشر الحالي
if stopped:
break
if paused:
time.sleep(0.5) # توقف مؤقت عند الضغط على Pause
continue
# تصنيف الكلمة
result = classifier(word, categories)
best_category = result['labels'][0]
score = result['scores'][0]
# إضافة الكلمة إلى القائمة المناسبة
if best_category == "shopping" and score > 0.5:
shopping_words.append(word)
elif best_category == "gaming" and score > 0.5:
gaming_words.append(word)
elif best_category == "streaming" and score > 0.5:
streaming_words.append(word)
else:
unknown_words.append(word) # إضافة الكلمة إلى قائمة Unknown إذا لم تكن ضمن الفئات
# تحديث شريط التقدم
progress = (current_index + 1) / total_keywords
progress_bar.progress(progress)
# تحديث النتائج في الوقت الحقيقي
update_results()
# إبطاء العملية قليلاً للسماح بتحديث الواجهة
time.sleep(0.1)
# دالة تحديث النتائج
def update_results():
# تحديث محتوى المربعات النصية باستخدام session_state
st.session_state.shopping_text = "\n".join(shopping_words)
st.session_state.gaming_text = "\n".join(gaming_words)
st.session_state.streaming_text = "\n".join(streaming_words)
st.session_state.unknown_text = "\n".join(unknown_words)
# زر البدء
if st.button("Start"):
stopped = False
paused = False
current_index = 0 # إعادة تعيين المؤشر إلى البداية
classify_keywords(keywords, categories, start_index=current_index)
# زر الإيقاف المؤقت
if pause_button:
paused = True
st.write("Classification paused.")
# زر الاستمرار
if continue_button and paused:
paused = False
st.write("Classification resumed.")
classify_keywords(keywords, categories, start_index=current_index)
# زر التوقف الكامل
if stop_button:
stopped = True
st.write("Classification stopped.")
# عرض النتائج مرة واحدة فقط (بدون إعادة إنشاء العناصر)
st.header("Shopping Keywords")
if 'shopping_text' not in st.session_state:
st.session_state.shopping_text = ""
st.text_area("Copy the shopping keywords here:", value=st.session_state.shopping_text, height=200, key="shopping")
st.header("Gaming Keywords")
if 'gaming_text' not in st.session_state:
st.session_state.gaming_text = ""
st.text_area("Copy the gaming keywords here:", value=st.session_state.gaming_text, height=200, key="gaming")
st.header("Streaming Keywords")
if 'streaming_text' not in st.session_state:
st.session_state.streaming_text = ""
st.text_area("Copy the streaming keywords here:", value=st.session_state.streaming_text, height=200, key="streaming")
st.header("Unknown Keywords")
if 'unknown_text' not in st.session_state:
st.session_state.unknown_text = ""
st.text_area("Copy the unknown keywords here:", value=st.session_state.unknown_text, height=200, key="unknown")
else:
st.warning("Please upload a text file to classify the keywords.") |