Kaveh
Update README.md
baa062f unverified
metadata
title: Telegram Chat Summarizer
emoji: 🤖
colorFrom: green
colorTo: blue
sdk: docker
app_port: 7860
pinned: false

Telegram Chat Summarizer Bot

توضیحات پروژه (Project Description)

این پروژه یک ربات تلگرامی است که به منظور خلاصه‌سازی گفتگوهای اخیر در گروه‌های تلگرامی طراحی شده است. ربات با دریافت دستوری خاص، پیام‌های اخیر را جمع‌آوری کرده و خلاصه‌ای از آن‌ها را به شما ارائه می‌دهد. این ربات برای زبان فارسی بهینه‌سازی شده است.

قابلیت‌ها (Features)

  • خلاصه‌سازی پیام‌های اخیر در یک گروه تلگرامی.
  • قابلیت تعیین تعداد پیام‌های مورد نظر برای خلاصه‌سازی (مثلاً ۱۰۰ پیام آخر).
  • قابلیت تعیین بازه زمانی برای جمع‌آوری پیام‌ها (مثلاً پیام‌های ۲۴ ساعت گذشته).
  • پاسخ به دستور "خلاصه" در صورتی که ربات در گروه تگ شود.
  • استفاده از مدل‌های به‌روز یادگیری ماشین برای خلاصه‌سازی به زبان فارسی.

تکنولوژی‌های استفاده شده (Technologies Used)

  • زبان برنامه‌نویسی: پایتون نسخه ۳.۱۰ (Python 3.10)
  • کتابخانه اصلی ربات تلگرام: python-telegram-bot
  • مدل‌های زبانی و پردازش متن:
    • کتابخانه transformers از Hugging Face
    • کتابخانه torch (PyTorch)
    • کتابخانه nltk (Natural Language Toolkit) برای توکن‌بندی جملات.
  • مدل خلاصه‌سازی پیش‌فرض: nafisehNik/mt5-persian-summary

راه‌اندازی و پیکربندی (Setup & Configuration)

پیش‌نیازها

  • پایتون نسخه ۳.۱۰ یا بالاتر.
  • ابزار pip برای نصب وابستگی‌ها.

مراحل نصب

  1. کلون کردن ریپازیتوری:

    git clone <URL_ریپازیتوری_شما>
    cd <نام_پوشه_پروژه>
    
  2. نصب وابستگی‌ها: یک محیط مجازی پایتون ایجاد و فعال کنید (اختیاری اما به‌شدت توصیه می‌شود):

    python -m venv venv
    source venv/bin/activate  # در لینوکس و macOS
    # venv\Scripts ctivate    # در ویندوز
    

    سپس وابستگی‌ها را نصب کنید:

    pip install -r requirements.txt
    
  3. تنظیم توکن ربات تلگرام: ربات برای اتصال به API تلگرام نیاز به یک توکن دارد. این توکن را از BotFather در تلگرام دریافت کنید. سپس، توکن را به عنوان یک متغیر محیطی (Environment Variable) با نام BOT_TOKEN تنظیم کنید.

    export BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
    

    یا می‌توانید آن را مستقیماً در فایل app.py قرار دهید (که البته از نظر امنیتی توصیه نمی‌شود).

اجرای ربات

اجرای محلی (Running Locally)

پس از نصب وابستگی‌ها و تنظیم توکن، می‌توانید ربات را به صورت محلی اجرا کنید:

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 سازگار باشد.