
هندسة عكسية لـ SynthID للنصوص
يحتوي هذا الدليل على أدوات لتحليل وإزالة العلامات المائية SynthID من النصوص المُنشأة بواسطة الذكاء الاصطناعي. تم تطوير العلامة المائية بواسطة Google DeepMind ونشرت في مجلة Nature (2024).
سياق N-gram: لكل موضع رمز، تأخذ SynthID الرموز السابقة ngram_len - 1 (الافتراضي: 4 رموز) كسياق.
حساب التجزئة: تحسب تجزئة لـ:
تعيين القيمة G: يتم استخدام التجزئة لتعيين قيمة ثنائية g (0 أو 1) لكل رمز تالي محتمل لكل طبقة مفتاح.
تعديل الاحتمالات: يتم تعديل احتمالات الرموز لتفضيل الرموز ذات القيمة g = 1:
new_prob[i] = prob[i] * (1 + g[i] - mean(g * prob))
أخذ العينات: يقوم النموذج بأخذ عينات من التوزيع المعدل.
الفعالية: 90-100%
يتم تضمين العلامة المائية في تسلسل الرموز المحدد، وليس في المعنى. إعادة الصياغة باستخدام نموذج غير مميز بالعلامة المائية يعيد توليد تسلسل الرموز بالكامل.
from reverse_synthid import ParaphrasingAttack
attack = ParaphrasingAttack(model_name="gpt2")
clean_text = attack.paraphrase(watermarked_text)
الفعالية: 50-70%
استبدال الرموز بمرادفاتها يكسر أنماط n-gram:
from reverse_synthid import TokenPerturbationAttack
attack = TokenPerturbationAttack()
clean_text = attack.substitute_synonyms(text, rate=0.3)
الفعالية: 95-100%
استبدال الأحرف بأحرف Unicode متطابقة بصريًا يكسر التجزئة:
from reverse_synthid import HomoglyphAttack
attack = HomoglyphAttack()
clean_text = attack.apply_homoglyphs(text, rate=0.1)
الفعالية: 30-50%
إدراج الكلمات أو حذفها يزيح جميع حدود n-gram اللاحقة:
from reverse_synthid import TokenPerturbationAttack
attack = TokenPerturbationAttack()
clean_text = attack.insert_fillers(text, rate=0.1)
reverse_synthid.py - مجموعة أدوات الهجوم الرئيسية مع طرق متعددةanalyze_watermark.py - أداة كشف وتحليل العلامة المائيةtest_removal.py - برنامج اختبار يوضح إزالة العلامة المائيةpython analyze_watermark.py --input text.txt --verbose
# باستخدام إعادة الصياغة (الأكثر فعالية، يتطلب نموذجًا)
python analysis/reverse_synthid.py --input text.txt --output clean.txt --method paraphrase
# باستخدام الاضطراب (لا يتطلب نموذجًا)
python analysis/reverse_synthid.py --input text.txt --output clean.txt --method perturb
# باستخدام هجوم مشترك
python reverse_synthid.py --input text.txt --output clean.txt --method combined
python analysis/test_removal.py
تعتمد العلامة المائية على:
عند إعادة صياغة النص:
لنص طوله N بقوة علامة مائية W:
1 - (1-r)^(ngram_len)N*r من n-gramsهذا الكود لأغراض تعليمية وبحثية فقط. يوضح نقاط الضعف في أنظمة العلامات المائية للمساعدة في تطوير طرق أكثر متانة.