প্রকল্প সম্পর্কে
pii-mask — ক্লাউড LLM-এ টেক্সট পাঠানোর আগে ব্যক্তিগত ডেটা (PII) মাস্ক করার স্থানীয় গেটওয়ে এবং উত্তরে মূল ডেটা পুনঃস্থাপনের ব্যবস্থা। রুশ-কেন্দ্রিক: রাশিয়ার PD ফরম্যাট চেনে, NER ব্যবহার করে এবং রুশ ভাষার রূপতত্ত্ব বিবেচনায় নেয়।
মূল পরিস্থিতি — মিটিংয়ের ট্রান্সক্রিপ্ট (সারাংশ, action items) প্রসেস করা, যাতে মডেল প্রদানকারীর কাছে নাম, ফোন ও কোম্পানির তথ্য ফাঁস না হয়। ক্লাউড মডেল কখনোই আসল ডেটা দেখে না।
কীভাবে কাজ করে:
1. Regex + চেকসাম (ফরম্যাটভিত্তিক রুশ PD): ফোন, email, INN (10/12, চেক ডিজিট), OGRN/OGRNIP (13/15, চেক ডিজিট), SNILS, কার্ড (Luhn), পাসপোর্ট (শুধু "паспорт"/"серия" শব্দের পাশে), telegram-নিক, চুক্তির UID, বড় হাতের অক্ষরে ও আদ্যক্ষরসহ ФИО।
2. NER (Natasha/slovnet, CPU, অফলাইন): নাম ও প্রতিষ্ঠান। ধারাবাহিকতার চাবি — স্বাভাবিক রূপ: "Иван Петров", "Ивана Петрова" ও "Иваном Петровым" একই লেবেল দেয়। একক নাম একমাত্র উপযুক্ত পূর্ণ ФИО-এর সঙ্গে লিংক হয়।
3. LLM-অডিটর (ঐচ্ছিক, --audit, Ollama): ইতিমধ্যে মাস্ক করা টেক্সটে দ্বিতীয় পাস — "কোন PD বাকি আছে?"। পরোক্ষভাবে ধরে: "моя жена Оля", ফরম্যাটবিহীন ঠিকানা, নিক। মডেল শুধু প্রার্থী (আক্ষরিক সাবস্ট্রিং) প্রস্তাব করে, প্রতিস্থাপন সবসময় কোড করে।
নীতিমালা:
- LLM টেক্সট পুনর্লিখন করে না। সব প্রতিস্থাপন নির্ধারিত, স্প্যান অনুযায়ী।
- Stateless। "লেবেল -> মূল" ম্যাপিং কলারকে ফেরত দেওয়া হয় (টাস্কের পাশে ফাইল বা API উত্তরের ফিল্ড)। সার্ভিস কিছু সংরক্ষণ করে না।
- Fail-closed। এটি পাইপলাইনের একটি ধাপ: ব্যর্থ হলে টেক্সট কোথাও যায় না। Ollama অনুপলব্ধ থাকলে অনুরোধকৃত --audit — ত্রুটি, নীরবে অডিট ছাড়া মাস্কিং নয়।
- ফোন (+7 000 ...) ও email ([email protected])-এর জন্য ফরম্যাট-সংরক্ষণকারী ফেক। পুনঃস্থাপনে ফোন ডিজিট দিয়েও মেলানো হয়।
- বানানো তথ্য থেকে সুরক্ষা: ইনপুটে না থাকা লেবেল বা ফেক unmask-এ [неизвестное значение]-এ পরিণত হয়।
- মিস করা অতিরিক্ত মাস্কের চেয়ে ব্যয়বহুল: golden-টেস্ট recall যাচাই করে, ভুল সনাক্তকরণ ত্রুটি হিসেবে গণ্য হয় না।
সচেতনভাবে মাস্ক করা হয় না: শহর/দেশ (LOC), তারিখ ও অর্থ।
ইনস্টলেশন: Python 3.10+, pip install -e . --audit-এর জন্য Ollama দরকার (ডিফল্ট qwen3:1.7b)।
ব্যবহার:
- CLI: pii-mask mask встреча.md -> встреча.masked.md + встреча.mapping.json (0600); pii-mask unmask summary.md --mapping встреча.mapping.json -o summary.final.md।
- একই --mapping দিয়ে পুনরায় mask করলে নম্বরায়ন চলতে থাকে: পুরো সংলাপে এক সত্তা — এক লেবেল।
- ফ্ল্যাগ: --audit, --no-ner, --types PERSON,PHONE,..., --org-dict ফাইল।
- নামযুক্ত সেট: pii-mask presets; pii-mask mask резюме.pdf --preset resume; pii-mask mask счет.xlsx --preset accounting; pii-mask mask файл.md --preset auto।
- মাইক্রোসার্ভিস: pii-mask serve --port 8377 (শুধু 127.0.0.1 শোনে)। POST /mask, POST /unmask, GET /health/live। অনুরোধের বডি লগ করা হয় না।
mapping ফাইলের পরিচ্ছন্নতা: *.mapping.json-এ মূল PD থাকে, অনুমতি 600, .gitignore-এ প্যাটার্ন। ফাইল টাস্কের পাশে থাকে এবং টাস্কের সঙ্গে মুছে যায়।
152-ФЗ-এর সঙ্গে সম্পর্ক: গেটওয়ে — ঝুঁকি কমানোর প্রযুক্তিগত ব্যবস্থা, "বক্সের বাইরে আইন মেনে চলা" নয়। এটি সিউডোনিমাইজেশন, অব্যক্তিকরণ নয় (152-ФЗ-এর ধারা 3-এর অনুচ্ছেদ 9)। প্রসেসিংয়ের আইনি ভিত্তি, নোটিফিকেশন ও সীমান্ত-পারাপার ব্যবহারকারীর দায়িত্বে থাকে। квазиидентификаторы (পদ + শহর + তারিখ) রেগুলার এক্সপ্রেশনে ধরা পড়ে না। সঠিক বাক্য — "বাহ্যিক প্রসেসরের কাছে পাঠানো ব্যক্তিগত ডেটা কমানোর প্রযুক্তিগত ব্যবস্থা"। এটি প্রকৌশলী বর্ণনা, আইনি মতামত নয়।
গুণমানের মানদণ্ড: 36 টেস্ট, pytest -q চালান। যাচাই হয় পূর্ণতা (বিভিন্ন রূপের 9 PD-সহ golden-ট্রান্সক্রিপ্ট), কাঠামো অক্ষত (5 নিয়ন্ত্রণ লাইন), প্রত্যাবর্তনযোগ্যতা (roundtrip, রিফরম্যাট করা ফোনসহ), ভুল সনাক্তকরণ বাদ (18 টেস্ট সনাক্তকারীর), idempotency, বানানো তথ্যের প্রতি সহনশীলতা, LLM-অডিটরের সীমা। টেস্টে আসল PD ব্যবহার করা হয় না। আসল ডেটায় পরিমাণগত recall নেই।
সরকারি নথি: আইন, রেজিস্টার, এক্সপোর্ট। টেক্সট কীভাবে বের করা হয়েছে তা গুরুত্বপূর্ণ: pdftotext -layout সত্তা ভেঙে দেয়, স্ট্রিম — অক্ষত রাখে। 76 পৃষ্ঠার আইনে পরিমাপ: -layout দিয়ে পৃষ্ঠা-প্রতি বড় হাতের পূর্ণ ФИО 55, স্ট্রিমে — 879। বড় হাতের ФИО পিতৃনামের প্রত্যয়ে অ্যাঙ্করসহ রেগুলার এক্সপ্রেশনে ধরা পড়ে। রিকুইজিট (OGRN, চুক্তির UID) নামের চেয়ে কম নয় শনাক্ত করে। PDF-লেআউটে UID হাইফেনে ভেঙে যায়, টেমপ্লেট ভাঙা অংশও নেয় (12-20 হেক্সাডেসিমাল অক্ষরের মাথা)। নির্দেশ, রেজিস্টার ও ইনকামিং নম্বর স্পর্শ করা হয় না।
সীমাবদ্ধতা:
- সিউডোনিমের বদলে লেবেল: পুনঃস্থাপিত টেক্সটে নাম সবসময় কর্তৃকারকে ("заявка для Иван Петров")।
- NER সর্বজ্ঞ নয়: বিদেশি নাম ও প্রতিলিপি-বিকৃতি মিস হতে পারে — সংবেদনশীল টেক্সটে --audit চালু করুন।
- প্রতিষ্ঠানের নাম সব মাস্ক হয় না: সাংগঠনিক-আইনি রূপসহ নাম নিয়মে ধরা হয়, বাকিটা NER-এর দায়িত্বে। আনুষ্ঠানিক চিহ্নবিহীন নাম --org-dict বা --audit দিয়ে বন্ধ করা হয়।
- এজেন্ট পরিস্থিতি (মডেল নিজে ফাইল পড়ে) গেটওয়ে কভার করে না — এটি "টেক্সট পাঠাও — টেক্সট ফেরত" পাইপলাইনের জন্য।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.