Spaces:
Runtime error
Runtime error
| title: Telegram Chat Summarizer | |
| emoji: 🤖 | |
| colorFrom: green | |
| colorTo: blue | |
| sdk: docker | |
| app_port: 7860 # Port your app's health check server listens on | |
| pinned: false | |
| # Telegram Chat Summarizer Bot | |
| ## توضیحات پروژه (Project Description) | |
| این پروژه یک ربات تلگرامی است که به منظور خلاصهسازی گفتگوهای اخیر در گروههای تلگرامی طراحی شده است. ربات با دریافت دستوری خاص، پیامهای اخیر را جمعآوری کرده و خلاصهای از آنها را به شما ارائه میدهد. این ربات برای زبان فارسی بهینهسازی شده است. | |
| ## قابلیتها (Features) | |
| * خلاصهسازی پیامهای اخیر در یک گروه تلگرامی. | |
| * قابلیت تعیین تعداد پیامهای مورد نظر برای خلاصهسازی (مثلاً ۱۰۰ پیام آخر). | |
| * قابلیت تعیین بازه زمانی برای جمعآوری پیامها (مثلاً پیامهای ۲۴ ساعت گذشته). | |
| * پاسخ به دستور "خلاصه" در صورتی که ربات در گروه تگ شود. | |
| * استفاده از مدلهای بهروز یادگیری ماشین برای خلاصهسازی به زبان فارسی. | |
| ## تکنولوژیهای استفاده شده (Technologies Used) | |
| * **زبان برنامهنویسی:** پایتون نسخه ۳.۱۰ (Python 3.10) | |
| * **کتابخانه اصلی ربات تلگرام:** [`python-telegram-bot`](https://python-telegram-bot.org/) | |
| * **مدلهای زبانی و پردازش متن:** | |
| * کتابخانه [`transformers`](https://huggingface.co/docs/transformers/index) از Hugging Face | |
| * کتابخانه [`torch`](https://pytorch.org/) (PyTorch) | |
| * کتابخانه [`nltk`](https://www.nltk.org/) (Natural Language Toolkit) برای توکنبندی جملات. | |
| * **مدل خلاصهسازی پیشفرض:** [`nafisehNik/mt5-persian-summary`](https://huggingface.co/nafisehNik/mt5-persian-summary) | |
| ## راهاندازی و پیکربندی (Setup & Configuration) | |
| ### پیشنیازها | |
| * پایتون نسخه ۳.۱۰ یا بالاتر. | |
| * ابزار `pip` برای نصب وابستگیها. | |
| ### مراحل نصب | |
| 1. **کلون کردن ریپازیتوری:** | |
| ```bash | |
| git clone <URL_ریپازیتوری_شما> | |
| cd <نام_پوشه_پروژه> | |
| ``` | |
| 2. **نصب وابستگیها:** | |
| یک محیط مجازی پایتون ایجاد و فعال کنید (اختیاری اما بهشدت توصیه میشود): | |
| ```bash | |
| python -m venv venv | |
| source venv/bin/activate # در لینوکس و macOS | |
| # venv\Scripts ctivate # در ویندوز | |
| ``` | |
| سپس وابستگیها را نصب کنید: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. **تنظیم توکن ربات تلگرام:** | |
| ربات برای اتصال به API تلگرام نیاز به یک توکن دارد. این توکن را از BotFather در تلگرام دریافت کنید. | |
| سپس، توکن را به عنوان یک متغیر محیطی (Environment Variable) با نام `BOT_TOKEN` تنظیم کنید. | |
| ```bash | |
| export BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN" | |
| ``` | |
| یا میتوانید آن را مستقیماً در فایل `app.py` قرار دهید (که البته از نظر امنیتی توصیه نمیشود). | |
| ## اجرای ربات | |
| ### اجرای محلی (Running Locally) | |
| پس از نصب وابستگیها و تنظیم توکن، میتوانید ربات را به صورت محلی اجرا کنید: | |
| ```bash | |
| python app.py | |
| ``` | |
| لاگهای مربوط به بارگذاری مدل و شروع به کار ربات در ترمینال نمایش داده خواهند شد. | |
| اجرای با Docker (Docker Deployment) | |
| این پروژه شامل یک Dockerfile است که امکان کانتینری کردن برنامه و اجرای آن در محیطهایی مانند Hugging Face Spaces را فراهم میکند. | |
| ساخت ایمیج داکر: | |
| docker build -t telegram-summarizer-bot . | |
| اجرای کانتینر داکر: | |
| docker run -e BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN" telegram-summarizer-bot | |
| تنظیمات کش در Dockerfile: Dockerfile به گونهای تنظیم شده است که پوشههای کش برای مدلهای Hugging Face و دادههای NLTK را در مسیرهای مناسب داخل کانتینر ایجاد و تنظیم کند: | |
| ENV TRANSFORMERS_CACHE=/tmp/hf_cache | |
| ENV HF_HOME=/tmp/hf_cache | |
| ENV NLTK_DATA=/app/nltk_data این تنظیمات برای سازگاری بهتر با پلتفرمهایی مانند Hugging Face Spaces انجام شده است. | |
| نحوه استفاده (Usage) | |
| ربات را به گروه تلگرامی مورد نظر خود اضافه کنید. | |
| برای درخواست خلاصه، پیامی حاوی کلمه "خلاصه" ارسال کنید و ربات را در آن پیام تگ (mention) کنید. مثالها: | |
| @نام_کاربری_ربات خلاصه (خلاصهسازی با تنظیمات پیشفرض، معمولاً حدود ۵۰ پیام آخر) | |
| @نام_کاربری_ربات خلاصه ۱۰۰ پیام (خلاصهسازی ۱۰۰ پیام آخر) | |
| @نام_کاربری_ربات خلاصه در ۲ ساعت اخیر (خلاصهسازی پیامهای ۲ ساعت گذشته) | |
| @نام_کاربری_ربات خلاصه ۱۰۰ پیام در ۳ ساعت اخیر | |
| ربات پیامهای مشخص شده را جمعآوری کرده و خلاصهای از آنها را در گروه ارسال میکند. | |
| مدل خلاصهسازی (Summarization Model) | |
| مدل پیشفرض استفاده شده برای خلاصهسازی nafisehNik/mt5-persian-summary است. در صورت تمایل، میتوانید این مدل را با ویرایش متغیر MODEL_NAME در فایل app.py تغییر دهید. مطمئن شوید مدلی که انتخاب میکنید با AutoModelForSeq2SeqLM از کتابخانه transformers سازگار باشد. | |