
Semantisches Wasserzeichen mit ordnungsrobuster Erkennung über Teilsatz-Einheiten
SwordStamp fügt robuste Erkennung gegenüber Reihenfolgeänderungen und semantische Span-Einheiten zu einbettungsbasierten semantischen Wasserzeichen hinzu. Dieses Artefakt enthält die exakte Paper-Konfiguration, Generierungs- und Erkennungscode, die unveränderte Angriffssuite, Qualitätsbewertung sowie deterministische Ergebnisextraktion und -darstellung.
Bei einer Falsch-Positiv-Rate von 5 % und einer Anforderung von 90 % Inhaltserhaltung erreicht der schemenspezifische Einbettungsverschiebungsangriff (EDA-S):
| Wasserzeichen | EDA-S-Angriffserfolgsrate |
|---|---|
| SemStamp | 47,9 % |
| k-SemStamp | 33,3 % |
| PMark | 46,1 % |
| SAMark | 32,6 % |
| SwordStamp | 18,7 % |
| k-SwordStamp | 10,8 % |
Relativ zu ihren veröffentlichten Basislinien reduzieren SwordStamp und k-SwordStamp den EDA-S-Erfolg um 29,2 bzw. 22,5 Prozentpunkte, bei Kosten für die saubere Wiedergabetreue von 1,8 bzw. 4,4 Punkten. Ihre sauberen Erkennungsraten betragen 94,9 % und 97,0 %. Unter dem stärkeren Detektorzugriffs-Stresstest EDA-D beträgt der maximale qualitätsgesperrte Erfolg 39,7 % bei k-SwordStamp gegenüber 65,5 % bei k-SemStamp.


Diese Ergebnisse decken englische Nachrichtenfortsetzungen, ein Anbietermodell, zwei Anbieter-Encoder und ein EDA-Umschreiber/Surrogat-Paar ab.
visualization konsumiert ausschließlich das kompilierte CSV/Parquet-Bündel. Es schlägt bei
fehlenden Paper-Zellen fehl, anstatt eine unvollständige Abbildung zu zeichnen.
uv sync --frozen --only-group plot --no-install-project
uv run --no-sync python -m visualization extract \
--bundle results/paper --output results/paper
uv run --no-sync python -m visualization render \
--bundle results/paper --output results/paper
Dies schreibt prüfbare Tabellen unter results/paper/tables/ und sieben Abbildungen in
PNG und PDF unter results/paper/figures/. Der anonyme Review-Zweig enthält das
kompilierte Bündel; ein vollständiger Lauf auf dem Release-Zweig erstellt dieselben Dateien
mit python -m visualization compile.
Der Einbettungsverschiebungsangriff (EDA) ist ein adaptiver Ganztext-Umschreibungsangriff.
Bei jeder Ausgabeeinheit
sampelt er K Fortsetzungen und behält den Kandidaten mit der größten Kosinus-
Verschiebung von seinem Quellanker unter einem Surrogat-Encoder. Da jeder
Kandidat das vollständige Umschreibungspräfix fortsetzt, kann ein Ziel Inhalt umformulieren,
neu anordnen und Detektoreinheiten aufteilen oder zusammenführen.
No-Box-EDA sieht den markierten Text und das öffentliche Wasserzeichen-Design. Er fragt weder den Detektor noch den Generator ab und erhält keinen geheimen Schlüssel, Anbieter-Encoder oder Qualitäts-Orakel.
Für Bag-Ankerung verwendet das Paper attack.bag_agg=min: Maximierung der Distanz zum
nächsten Quellanker. Gemeldete No-Box-Läufe verwenden
Qwen/Qwen2.5-3B-Instruct, BAAI/bge-base-en-v1.5,
K={1,2,4,8,16,32,64}, Temperatur 1,0, Top-p 0,95, höchstens 96 Tokens pro
Kandidat und höchstens 512 Umschreibungs-Tokens.
Andere Wasserzeichen-Designer können EDA direkt aufrufen:
from attacks.paraphrasing.adaptive import adaptive_attack_paraphrase
attacked = adaptive_attack_paraphrase(
texts,
base_model="Qwen/Qwen2.5-3B-Instruct",
surrogate_model="BAAI/bge-base-en-v1.5",
num_candidates=32,
anchor="positional", # EDA-P; verwenden Sie "bag" für ein reihenfolgerobustes Design
bag_agg="min",
segmentation_type="sentence",
segmentation_backend="nltk",
)
Für das EDA-S des Papers mit SwordStamp-Bewusstsein setzen Sie anchor="bag",
segmentation_type="semspan", semcut_max_words=15 und
semcut_window=5. Innerhalb dieses Repositorys lautet die äquivalente CLI:
uv run python -m attacks DATA_PATH --config PRESET \
--set attack.paraphraser=adaptive \
--set attack.custom_model=Qwen/Qwen2.5-3B-Instruct \
--set attack.surrogate_model=BAAI/bge-base-en-v1.5 \
--set attack.num_candidates=32 \
--set attack.anchor=bag --set attack.bag_agg=min \
--set segmentation.attacker_type=semspan \
--set segmentation.attacker_backend=nltk
DATA_PATH ist immer das Basiskorpus und PRESET identifiziert die mit Wasserzeichen
versehene Zelle. Siehe attacks/README.md für alle beibehaltenen Angriffe und Konfigurationsfelder.

config/paper.py ist die einzige Quelle der Wahrheit. Für jeweils LSH und k-means
führt scripts/experiments/swordstamp.sh diese fünfsprossige additive Leiter mit 64
Anbieter-Kandidaten aus:
Das Raster enthält nur diese zehn Zellen und eine No-Watermark-Basislinie. PMark ist
nur online; SAMark verwendet ein Flag-Muster pro Lauf. EDA-D-Budgets sind
K={4,8,16,32,64}.
Die Vergleichs-Submodule passen die öffentlichen PMark- und SAMark-Auswertungsquellen nur an ihren Datensatz-/Ergebnisgrenzen und der gemeinsamen Falsch-Positiv-Kalibrierung an; die Wasserzeichen-Algorithmen sind unverändert.
Voraussetzungen sind Git, uv, Python 3.11, CUDA für Modellläufe, Zugriff auf die festgepinnten Modellrevisionen und Scratch-Speicher.
git clone --recurse-submodules [email protected]:D-Diaa/SwordStamp.git
cd SwordStamp
bash scripts/setup.sh
uv run --frozen python scripts/check_artifact.py
Bereiten Sie die deterministischen, disjunkten C4-Partitionen vor:
uv run --frozen python scripts/prepare_c4.py --output-dir data
Installieren und konfigurieren Sie den festgepinnten Scheduler. Der Installer druckt seine Nebenwirkungen auf Benutzerebene aus, bevor er etwas ändert:
bash scripts/install_gpu_scheduler.sh --print-plan
bash scripts/install_gpu_scheduler.sh --yes
gpu-scheduler init --gpus 0,1
gpu-scheduler start
Vorschauen und dann jeden physischen Shard einreichen:
for shard in c4-val-def-256 c4-val-def-256b c4-val-def-512; do
BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/swordstamp.sh
BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/pmark.sh
BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/samark.sh
done
# Entfernen Sie DRY_RUN=1 nach der Inspektion der exakten DAGs.
Kompilieren, extrahieren und rendern:
uv run --frozen python -m visualization all \
--bundle results/paper --output results/paper
Der Scheduler liefert CUDA_VISIBLE_DEVICES; wählen Sie GPUs nicht durch Abfragen von
nvidia-smi aus. Die vollständige Reproduktion ist eine mehrtägige GPU-Workload. ARTIFACT.md
listet Hardware, Modellrevisionen, erwartete Ausgaben und die Anspruch-zu-Befehl-
Zuordnung auf. scripts/experiments/README.md dokumentiert Fortsetzungs- und Force-Verhalten.
config/, segmentation/, sampling/, watermarking/: SwordStamp.attacks/: EDA und die beibehaltene Angriffssuite.quality/: Bewertung von Wiedergabetreue und Inhaltserhalt.visualization/: Nur-Paper-Kompilierung, Tabellen und Matplotlib-Abbildungen.scripts/experiments/: Scheduler-gestützte exakte Paper-Workflows.external/: festgepinnte PMark- und SAMark-Vergleichs-Submodule.Erstpartei-Code wird unter der MIT-Lizenz veröffentlicht. Modelle, Datensätze, generierter
Text und Vergleichs-Submodule behalten ihre eigenen Bedingungen; siehe THIRD_PARTY.md.
SwordStamp-Software wurde von Abdulrahman Diaa erstellt. Die Paper-Autoren sind
Abdulrahman Diaa, Jonathan Petit und Florian Kerschbaum. Maschinenlesbare
Zitier-Metadaten finden sich in CITATION.cff.
| Variante | Anker und Einheit | Konfiguration |
|---|
| EDA-P | positioneller Satz | adaptive, anchor=positional, Angreifereinheit sentence |
| EDA-S | öffentliches Design des Ziels | positionelle Sätze für SemStamp, k-SemStamp und PMark; Bag/Satz für SAMark; Bag/Semspan für beide SwordStamp-Varianten |
| EDA-D | Anbieter-Detektor | oracle; erbt den Verteidiger-Encoder, die Partition und die Segmentierung |