A compression-based edit distance metric for text comparison
Project description
Compression Distance
A compression-based edit distance metric for comparing texts, as described in Assessing Human Editing Effort on LLM-Generated Texts via Compression-Based Edit Distance.
Installation
# Basic installation
pip install compression-distance
# With development tools
pip install compression-distance[dev]
# With experiment dependencies
pip install compression-distance[experiments]
Example usage
from compression_distance import compression_distance
text1 = "Hello world"
text2 = "Hello there"
distance = compression_distance(text1, text2)
print(f"Distance: {distance}")
Testing
pytest tests/
Experiments
This repository also includes experiments comparing our metric with traditional ones (BLEU, TER, ROUGE, etc.) on two datasets:
- A custom dataset of accounting Q&A edits (HuggingFace link).
- The IWSLT2019 dataset (GitHub link).
For the IWSLT2019 dataset, download the data from the official repository and place them in an "iwslt2019" folder at the root of this project.
Running the Experiments
- First, install the experiment dependencies:
pip install -e ".[experiments]"
-
For the IWSLT2019 dataset, download the data from the official repository and place them in an "iwslt2019" folder at the root of this project.
-
Run the experiments:
python experiments/run_experiments.py
You can modify the distance metrics list in run_experiments.py to include or exclude specific metrics.
Prompts used for the synthetic dataset
The following prompts (in French) were used to generate LLM answers and edits:
Initial answer generation
Tu dois répondre à une question de comptabilité posée dans un email. Je vais te donner la question <QUESTION>.
Tu dois répondre à la question posée de manière détaillée et précise. Réponds avec uniquement le contenu de
la réponse et rien d'autre.
Normal edits
Tu dois répondre à une question de comptabilité posée dans un email. Je vais te donner la question <QUESTION>,
une réponse générée par un modèle non spécialisé <LLM_ANSWER>, et des connaissances spécifiques et spécialisées
qui permettent de répondre à cette question <KNOWLEDGE>. Tu dois éditer la réponse du modèle à partir des
connaissances transmises afin d'améliorer la réponse quand cela est nécessaire. Tu peux modifier la réponse
autant que tu le souhaites de manière à améliorer la réponse initiale avec ces connaissances. Tu ne dois pas
copier/coller les connaissances dans la réponse mais utiliser de manière adaptée les éléments pertinents de
ces connaissances afin de mettre à jour la réponse initiale. Réponds avec uniquement le contenu de la réponse
et rien d'autre.
Similar edits
Tu dois répondre à une question de comptabilité posée dans un email. Je vais te donner la question <QUESTION>,
une réponse générée par un modèle non spécialisé <LLM_ANSWER>, et des connaissances spécifiques et spécialisées
qui permettent de répondre à cette question <KNOWLEDGE>. Tu dois éditer la réponse du modèle à partir des
connaissances transmises afin d'améliorer la réponse quand cela est nécessaire. Tu dois modifier la réponse
de manière à garder la même structure et la même trame que la réponse initiale, en modificant si cela est
nécessaire uniquement le fond à partir des connaissances transmises. Tu ne dois pas copier/coller les
connaissances dans la réponse mais utiliser de manière adaptée les éléments pertinents de ces connaissances
afin de mettre à jour la réponse initiale. Réponds avec uniquement le contenu de la réponse et rien d'autre.
Fast edits
Tu dois répondre à une question de comptabilité posée dans un email. Je vais te donner la question <QUESTION>,
une réponse générée par un modèle non spécialisé <LLM_ANSWER>, et des connaissances spécifiques et spécialisées
qui permettent de répondre à cette question <KNOWLEDGE>. Tu dois éditer la réponse du modèle à partir des
connaissances transmises afin d'améliorer la réponse quand cela est nécessaires. Tu dois prendre le moins de
temps possible pour éditer la réponse initiale tout en réalisant la tâche correctement. Tu ne dois pas
copier/coller les connaissances dans la réponse mais utiliser de manière adaptée les éléments pertinents de
ces connaissances afin de mettre à jour la réponse initiale. Réponds avec uniquement le contenu de la réponse
et rien d'autre.
Citing
If you use this metric in your research, please cite:
@misc{devatine2024assessinghumaneditingeffort,
title={Assessing Human Editing Effort on LLM-Generated Texts via Compression-Based Edit Distance},
author={Nicolas Devatine and Louis Abraham},
year={2024},
eprint={2412.17321},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2412.17321},
}
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 compression_distance-0.1.0.tar.gz.
File metadata
- Download URL: compression_distance-0.1.0.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ebbc23dfcd46a526f0afe63597847c4aa8c04a74b8dec1f7de9824365308652
|
|
| MD5 |
a74283da4c6b3ed593d6310357cdf226
|
|
| BLAKE2b-256 |
93848f22c81f50a5a35f8afac4c32bde8d7b201d0bc9da599a0008b1a18c702b
|
File details
Details for the file compression_distance-0.1.0-py3-none-any.whl.
File metadata
- Download URL: compression_distance-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
665fb993d787657def853dff0380fe36a320ed14d85ca4560f18228c5b6d0dd5
|
|
| MD5 |
59ae310b07f5e6a5562b1eae9276f85b
|
|
| BLAKE2b-256 |
ecf6461c1df591659f4f9ba3095ffbc1aa323a0ae1f630bef4f71434c361a475
|