{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2605-01065","title":"A Systematic Exploration of Text Decomposition and Budget Distribution in Differentially Private Text Obfuscation","arxiv_id":"2605.01065","date":"2026-05-01","proceeding":null,"authors":["Stephen Meisenbacher","Angelo Kleinert","Florian Matthes"],"abstract":"The goal of differentially private text obfuscation is to obfuscate, or \"perturb\", input texts with Differential Privacy (DP) guarantees, such that the private output texts are quantifiably indistinguishable from the originals. While perturbation at the word level is intuitive, meaningful text privatization happens on complete documents. Recent research has laid the groundwork for reasoning about privacy budget distribution, namely, how an overall $\\varepsilon$ budget can be sensibly distributed among the component pieces of a text. We perform a systematic evaluation of multiple text decomposition and budget distribution techniques in the context of DP text obfuscation, testing how different methods for chunking texts can be combined with techniques for allocating $\\varepsilon$ to these chunks. Our experiments reveal that such design choices are very important, as even with comparable privacy budgets, significantly different results can occur based on which methods are chosen. In this, we provide credible evidence of the feasibility of maximizing empirical trade-offs by optimizing DP obfuscation procedures.","url_abs":"https://arxiv.org/abs/2605.01065","url_pdf":"https://arxiv.org/pdf/2605.01065","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.01065","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.01065"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/sjmeis/DP-Decompose-Distribute","reach":null}],"summary":{"ran":10},"by_repo_kind":{"found_in_text":{"samples":10,"ran":10,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"4d2e718dcf30e172","entry":"calculate_class_weights","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"eval_scripts/adaptive_attacker.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/eval_scripts/adaptive_attacker.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4d2e718dcf30e172"}},{"code_sha256_prefix":"d4e130fdfcc35ecd","entry":"chunk_document_worker","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"chunker.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/chunker.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d4e130fdfcc35ecd"}},{"code_sha256_prefix":"fd41c5fa76336833","entry":"focal_loss","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"eval_scripts/adaptive_attacker.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/eval_scripts/adaptive_attacker.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fd41c5fa76336833"}},{"code_sha256_prefix":"896218207cdc28d0","entry":"get_chunked_budgets","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"privatizer.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/privatizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"896218207cdc28d0"}},{"code_sha256_prefix":"c96f9eceeee904de","entry":"load_ngrams_to_dict","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"association_measures.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/association_measures.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c96f9eceeee904de"}},{"code_sha256_prefix":"3e515c5b1a8a70f4","entry":"load_unigrams","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"association_measures.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/association_measures.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3e515c5b1a8a70f4"}},{"code_sha256_prefix":"87cd9dd4f015d968","entry":"prepare_dataset","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"eval_scripts/adaptive_attacker.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/eval_scripts/adaptive_attacker.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"87cd9dd4f015d968"}},{"code_sha256_prefix":"2927da7397153f77","entry":"prepare_dataset","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"eval_scripts/baseline_attacker.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/eval_scripts/baseline_attacker.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2927da7397153f77"}},{"code_sha256_prefix":"1daa66ecef3d5172","entry":"privatize_text","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"privatizer.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/privatizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1daa66ecef3d5172"}},{"code_sha256_prefix":"ca51c7388260b4b4","entry":"reconstruct_with_template","repo":"sjmeis/DP-Decompose-Distribute","repo_kind":"found_in_text","path":"privatizer.py","file_url":"https://github.com/sjmeis/DP-Decompose-Distribute/blob/HEAD/privatizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ca51c7388260b4b4"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}