Kaveh commited on
Commit
baa062f
·
unverified ·
1 Parent(s): 2778e4f

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +89 -0
README.md CHANGED
@@ -7,3 +7,92 @@ sdk: docker
7
  app_port: 7860 # Port your app's health check server listens on
8
  pinned: false
9
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  app_port: 7860 # Port your app's health check server listens on
8
  pinned: false
9
  ---
10
+ # Telegram Chat Summarizer Bot
11
+
12
+ ## توضیحات پروژه (Project Description)
13
+
14
+ این پروژه یک ربات تلگرامی است که به منظور خلاصه‌سازی گفتگوهای اخیر در گروه‌های تلگرامی طراحی شده است. ربات با دریافت دستوری خاص، پیام‌های اخیر را جمع‌آوری کرده و خلاصه‌ای از آن‌ها را به شما ارائه می‌دهد. این ربات برای زبان فارسی بهینه‌سازی شده است.
15
+
16
+ ## قابلیت‌ها (Features)
17
+
18
+ * خلاصه‌سازی پیام‌های اخیر در یک گروه تلگرامی.
19
+ * قابلیت تعیین تعداد پیام‌های مورد نظر برای خلاصه‌سازی (مثلاً ۱۰۰ پیام آخر).
20
+ * قابلیت تعیین بازه زمانی برای جمع‌آوری پیام‌ها (مثلاً پیام‌های ۲۴ ساعت گذشته).
21
+ * پاسخ به دستور "خلاصه" در صورتی که ربات در گروه تگ شود.
22
+ * استفاده از مدل‌های به‌روز یادگیری ماشین برای خلاصه‌سازی به زبان فارسی.
23
+
24
+ ## تکنولوژی‌های استفاده شده (Technologies Used)
25
+
26
+ * **زبان برنامه‌نویسی:** پایتون نسخه ۳.۱۰ (Python 3.10)
27
+ * **کتابخانه اصلی ربات تلگرام:** [`python-telegram-bot`](https://python-telegram-bot.org/)
28
+ * **مدل‌های زبانی و پردازش متن:**
29
+ * کتابخانه [`transformers`](https://huggingface.co/docs/transformers/index) از Hugging Face
30
+ * کتابخانه [`torch`](https://pytorch.org/) (PyTorch)
31
+ * کتابخانه [`nltk`](https://www.nltk.org/) (Natural Language Toolkit) برای توکن‌بندی جملات.
32
+ * **مدل خلاصه‌سازی پیش‌فرض:** [`nafisehNik/mt5-persian-summary`](https://huggingface.co/nafisehNik/mt5-persian-summary)
33
+
34
+ ## راه‌اندازی و پیکربندی (Setup & Configuration)
35
+
36
+ ### پیش‌نیازها
37
+ * پایتون نسخه ۳.۱۰ یا بالاتر.
38
+ * ابزار `pip` برای نصب وابستگی‌ها.
39
+
40
+ ### مراحل نصب
41
+ 1. **کلون کردن ریپازیتوری:**
42
+ ```bash
43
+ git clone <URL_ریپازیتوری_شما>
44
+ cd <نام_پوشه_پروژه>
45
+ ```
46
+
47
+ 2. **نصب وابستگی‌ها:**
48
+ یک محیط مجازی پایتون ایجاد و فعال کنید (اختیاری اما به‌شدت توصیه می‌شود):
49
+ ```bash
50
+ python -m venv venv
51
+ source venv/bin/activate # در لینوکس و macOS
52
+ # venv\Scripts ctivate # در ویندوز
53
+ ```
54
+ سپس وابستگی‌ها را نصب کنید:
55
+ ```bash
56
+ pip install -r requirements.txt
57
+ ```
58
+
59
+ 3. **تنظیم توکن ربات تلگرام:**
60
+ ربات برای اتصال به API تلگرام نیاز به یک توکن دارد. این توکن را از BotFather در تلگرام دریافت کنید.
61
+ سپس، توکن را به عنوان یک متغیر محیطی (Environment Variable) با نام `BOT_TOKEN` تنظیم کنید.
62
+ ```bash
63
+ export BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
64
+ ```
65
+ یا می‌توانید آن را مستقیماً در فایل `app.py` قرار دهید (که البته از نظر امنیتی توصیه نمی‌شود).
66
+
67
+ ## اجرای ربات
68
+
69
+ ### اجرای محلی (Running Locally)
70
+ پس از نصب وابستگی‌ها و تنظیم توکن، می‌توانید ربات را به صورت محلی اجرا کنید:
71
+ ```bash
72
+ python app.py
73
+ ```
74
+ لاگ‌های مربوط به بارگذاری مدل و شروع به کار ربات در ترمینال نمایش داده خواهند شد.
75
+
76
+ اجرای با Docker (Docker Deployment)
77
+ این پروژه شامل یک Dockerfile است که امکان کانتینری کردن برنامه و اجرای آن در محیط‌هایی مانند Hugging Face Spaces را فراهم می‌کند.
78
+
79
+ ساخت ایمیج داکر:
80
+ docker build -t telegram-summarizer-bot .
81
+ اجرای کانتینر داکر:
82
+ docker run -e BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN" telegram-summarizer-bot
83
+ تنظیمات کش در Dockerfile: Dockerfile به گونه‌ای تنظیم شده است که پوشه‌های کش برای مدل‌های Hugging Face و داده‌های NLTK را در مسیرهای مناسب داخل کانتینر ایجاد و تنظیم کند:
84
+
85
+ ENV TRANSFORMERS_CACHE=/tmp/hf_cache
86
+ ENV HF_HOME=/tmp/hf_cache
87
+ ENV NLTK_DATA=/app/nltk_data این تنظیمات برای سازگاری بهتر با پلتفرم‌هایی مانند Hugging Face Spaces انجام شده است.
88
+ نحوه استفاده (Usage)
89
+ ربات را به گروه تلگرامی مورد نظر خود اضافه کنید.
90
+ برای درخواست خلاصه، پیامی حاوی کلمه "خلاصه" ا��سال کنید و ربات را در آن پیام تگ (mention) کنید. مثال‌ها:
91
+ @نام_کاربری_ربات خلاصه (خلاصه‌سازی با تنظیمات پیش‌فرض، معمولاً حدود ۵۰ پیام آخر)
92
+ @نام_کاربری_ربات خلاصه ۱۰۰ پیام (خلاصه‌سازی ۱۰۰ پیام آخر)
93
+ @نام_کاربری_ربات خلاصه در ۲ ساعت اخیر (خلاصه‌سازی پیام‌های ۲ ساعت گذشته)
94
+ @نام_کاربری_ربات خلاصه ۱۰۰ پیام در ۳ ساعت اخیر
95
+ ربات پیام‌های مشخص شده را جمع‌آوری کرده و خلاصه‌ای از آن‌ها را در گروه ارسال می‌کند.
96
+
97
+ مدل خلاصه‌سازی (Summarization Model)
98
+ مدل پیش‌فرض استفاده شده برای خلاصه‌سازی nafisehNik/mt5-persian-summary است. در صورت تمایل، می‌توانید این مدل را با ویرایش متغیر MODEL_NAME در فایل app.py تغییر دهید. مطمئن شوید مدلی که انتخاب می‌کنید با AutoModelForSeq2SeqLM از کتابخانه transformers سازگار باشد.