Skip to main content

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:

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

  1. First, install the experiment dependencies:
pip install -e ".[experiments]"
  1. For the IWSLT2019 dataset, download the data from the official repository and place them in an "iwslt2019" folder at the root of this project.

  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compression_distance-0.1.0.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

compression_distance-0.1.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

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

Hashes for compression_distance-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7ebbc23dfcd46a526f0afe63597847c4aa8c04a74b8dec1f7de9824365308652
MD5 a74283da4c6b3ed593d6310357cdf226
BLAKE2b-256 93848f22c81f50a5a35f8afac4c32bde8d7b201d0bc9da599a0008b1a18c702b

See more details on using hashes here.

File details

Details for the file compression_distance-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for compression_distance-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 665fb993d787657def853dff0380fe36a320ed14d85ca4560f18228c5b6d0dd5
MD5 59ae310b07f5e6a5562b1eae9276f85b
BLAKE2b-256 ecf6461c1df591659f4f9ba3095ffbc1aa323a0ae1f630bef4f71434c361a475

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page