مسیر فایل: scripts/manual_sentiment_check.py
مستند کامل زیرسیستم: Sentiment Analysis.
۱. کاراییش به زبان ساده
یک Smoke دستی و خارج از pytest است: مدل واقعی Cardiff XLM-R را لود میکند، چند جملهٔ نمونهٔ انگلیسی و فارسی (مثبت / منفی / خنثیگونه) را طبقهبندی میکند و برچسبها را روی ترمینال چاپ میکند. هدف، یک چک سریع کیفیت/سلامت مدل است — بدون دیتابیس، بدون Kafka، بدون pipeline کامل.
۲. کجا در پروژه کلی استفاده میشود؟
- زیرسیستم
sentiment/: تأیید سریع اینکه classifier و وزن مدل روی ماشین فعلی درست لود میشوند. - بعد از تغییر مدل پیشفرض، ارتقای transformers، یا نصب تازهٔ venv احساس.
- جایگزین تست خودکار نیست؛ سوئیتهای
sentiment-tests/ integration مسیر رسمی تستاند. این اسکریپت برای چشم انسان و دیباگ سریع است. - در فهرست عملیاتی
scripts/عمداً سبک و مستقل نگه داشته شده تا بدون بالا آوردن کل استک قابل اجرا باشد.
۳. چیکارا میکند؟
- ریشهٔ مخزن را به
sys.pathاضافه میکند تاfrom sentiment...هنگام اجرای مستقیم اسکریپت کار کند. - نام مدل پیشفرض را از
sentiment.config.DEFAULT_MODEL_NAMEمیخواند. SentimentClassifierرا با آن مدل میسازد.- یک batch از نمونههای ثابت (en+/en-/en~ و fa+/fa-/fa~) را classify میکند.
- جدول سادهٔ
tag / label / textرا چاپ میکند و با exit 0 خارج میشود.
۴. تصمیمات معماری
- خارج از pytest: لود مدل واقعی کند و سنگین است؛ قاطی کردن آن با unit testهای سریع، بازخورد developer را خراب میکند.
- بدون DB: مرز مسئولیت روشن — فقط مدل و خروجی برچسب، نه صحت pipeline ذخیرهسازی.
- نمونههای دوزبانهٔ ثابت: پروژه reviews فارسی و انگلیسی دارد؛ smoke باید هر دو را لمس کند.
- استفاده از API عمومی زیرسیستم (
SentimentClassifier): همان مسیری که کد production استفاده میکند، نه یک مسیر موازی ad-hoc. - اجرا از ریشهٔ مخزن با venv فعال: وابستگیهای سنگین sentiment فقط در محیط خودش معنی دارند.
۵. دستورات
# از ریشهٔ مخزن، با venv زیرسیستم sentiment فعال
python scripts/manual_sentiment_check.py
پیشنیاز: وابستگیهای بستهٔ sentiment نصب و venv مربوطه فعال باشد. نیازی به Docker / Postgres / Kafka نیست.