Privacy Filter؛ تشخیص PII تو متن با Laravel
خلاصهٔ کاملتر
Privacy Filter یه پکیج Laravelه که موجودیتهای خصوصی — اسمها، ایمیلها و بقیهٔ اطلاعات شناساییِ شخصی (PII) — رو تو یه متن دلخواه تشخیص میده. این پکیج در واقع یه باینری خطفرمانِ privacy-filter.cpp رو که یه موتور استنتاج GGML برای مدلهای دستهبندی توکنِ OpenAIه دور میزنه و نتیجه رو از طریق یه API تو PHP در دسترس میذاره.
نقطهٔ ورود اصلی متد entities()ه که مدل رو روی یه رشته اجرا میکنه و یهسری آبجکت Entity برمیگردونه. هر موجودیت نوعش، متن تطبیقدادهشده، جای شروع و پایانش (بهصورت آفست بایتی) و یه امتیاز اطمینان رو با خودش داره:
use DirectoryTree\PrivacyFilter\Facades\PrivacyFilter;
$entities = PrivacyFilter::entities('Contact John Doe at jdoe@example.com.');
foreach ($entities as $entity) {
echo $entity->type; // private_email
echo $entity->text; // jdoe@example.com
}چون آفستها دقیقاً موقعیت بایتی تو متن UTF-8 هستن، میتونی هر موجودیت شناساییشده رو دقیق به جای خودش تو متن اصلی نگاشت کنی. آستانهٔ اطمینان هم پیشفرض ۰٫۵ه و میتونی هر بار بالا یا پایینش ببری تا بین recall و precision توازن بذاری؛ آستانهٔ بالاتر موجودیتهای کمتر ولی مطمئنتر برمیگردونه.
خود پکیج فقط تشخیص میده و اینکه با نتیجه چیکار کنی دست خودته — مثلاً برای سانسور متن میتونی روی موجودیتها یه reduce بزنی و هرکدوم رو با [redacted] جایگزین کنی. چون اجرای باینری و لود مدل تو تست کنده، پکیج یه متد fake() داره که بدون فراخوانی باینری، موجودیتهای ازپیشتعیینشده رو برمیگردونه تا تستها سریع بمونن.
نصبش با Composerه و بعدش یه دستور artisan اجرا میکنی که باینری کامپایلشدهٔ سیستمعاملت و مدل GGUF موردنیاز رو دانلود میکنه؛ باینریهای آماده برای لینوکس، مک (از جمله ARM64) و ویندوز هم هست. یه نکتهٔ مهم برای محیط production اینه که هر بار دستهبندی، مدل رو تو حافظه لود میکنه، پس پکیج توصیه میکنه دستهبندیها رو روی queue workerهای اختصاصی اجرا کنی تا مصرف حافظه قابلپیشبینی بمونه. سورس و مستنداتش هم روی GitHub هست.
نکات کلیدی:
- Privacy Filter یه پکیج Laravel برای تشخیص PII (اسم، ایمیل و ...) تو متنه
- زیر کاپوت یه باینری privacy-filter.cpp و مدل GGML/GGUF رو با APIای تو PHP اجرا میکنه
- متد entities() نوع، متن، آفست بایتی و امتیاز اطمینان هر موجودیت رو میده
- آستانهٔ اطمینان قابلتنظیمه و برای تست هم متد fake() داره
- چون مدل تو حافظه لود میشه، اجرا روی queue worker اختصاصی توصیه شده




