Differentially private document generation leveraging semantic triples.
Project description
Code repository for the EMNLP 2025 paper: Leveraging Semantic Triples for Private Document Generation with Local Differential Privacy Guarantees
Getting Started
Installation
You can now install DP-ST directly as a Python package.
# Install the core runtime engine
pip install dpst
# Install the optional data-preparation extensions required for the initial setup
pip install "dpst[setup]"
Note on Heavy Runtimes: We highly recommend installing the correct flavor of PyTorch matching your hardware's CUDA capability before installing this package.
Automated Database & Cluster Setup
In order to run DP-ST, you must first run the preparation stage as described in the paper. This includes booting up your local vector database, extracting triples from a public text corpus, clustering them, and storing them locally.
Ensure your local Weaviate instance is running, then execute the following automated command in your terminal:
dpst setup
Note: This can take a very long time! We recommend you set it and forget it. Alternatively, you can tweak the max_rows parameter of initialize_database to use less texts for the database preparation.
The above replaces the legacy workflow of manually executing Triple2DB.ipynb and triple_cluster.ipynb. The command will automatically stream the FineWeb public corpus dataset, extract/embed triples into Weaviate, run the MiniBatchKMeans allocations (50k, 100k, and 200k), and write the resulting cluster assets straight into the package data directory. If you prefer a more tailored approach, we still recommend using the notebooks.
Usage
Running DP-ST is simple once the automated setup has completed:
from dpst import DPST
# Initialize the engine (specify mode: "50k", "100k", or "200k")
X = DPST(mode="50k", model_checkpoint=MODEL_NAME, hf_token=TOKEN)
# Privatize your text corpus
private_texts = X.privatize([TEXTS], epsilon=DOC_PRIVACY_BUDGET)
MODEL_NAME refers to the model used for text reconstruction (i.e., the Llama-3.2 models we use in the work), and hf_token is only necessary for gated models on Hugging Face.
Running other DP Methods
In this repository (under the comparison directory), you will find a number of scripts (*_perturb.py) to reproduce the privatized texts as performed in our work.
The code for DP-BART and DP-Prompt can be found in LLMDP.py. DP-MLM can be found here and the code for TEM can be found here.
We also include the evaluation code for cosine similarity (CS.py) and G-Eval (Geval.ipynb), located in evaluation.
NOTE: in all provided notebooks, please make sure to include the correct libraries and link the paths accordingly. This is necessary for the code to run correctly!
Citation
If you use this code in your research, please consider citing the published work:
@inproceedings{meisenbacher-etal-2025-leveraging,
title = "Leveraging Semantic Triples for Private Document Generation with Local Differential Privacy Guarantees",
author = "Meisenbacher, Stephen and
Chevli, Maulik and
Matthes, Florian",
editor = "Christodoulopoulos, Christos and
Chakraborty, Tanmoy and
Rose, Carolyn and
Peng, Violet",
booktitle = "Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing",
month = nov,
year = "2025",
address = "Suzhou, China",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2025.emnlp-main.455/",
doi = "10.18653/v1/2025.emnlp-main.455",
pages = "8976--8992",
ISBN = "979-8-89176-332-6"
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dpst-0.1.0.tar.gz.
File metadata
- Download URL: dpst-0.1.0.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31e6105c35737a7cdfdd117c421f980cb8ac195c086b8786c448a65c33885880
|
|
| MD5 |
dbaf54d73cabf7ab5bd1beae1a4c61c6
|
|
| BLAKE2b-256 |
b86b87c6c32da25a3fbe4e1c5bed4a47b33770fe4f8e31669cae2ba18fdcd39c
|
File details
Details for the file dpst-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dpst-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eebd51d81009858d2985812c91a01140bcd35acc68077c0df391442d5ca5c751
|
|
| MD5 |
f6e0857e6490f9632fbb74ed160c0c91
|
|
| BLAKE2b-256 |
0e090e7836aee7710ddf1b5325ee72eb00d0641b2b8a21fc7836eb207a2c9cc0
|