Skip to main content

🏷️ AutoDDG: Automated Dataset Description Generation using Large Language Models

arXiv UV Ruff Black formatted Python >= 3.10 OpenAI Local LLM

Overview

This repository contains the official implementation for the SIGMOD 2026 paper:

AutoDDG: Automated Dataset Description Generation using Large Language Models

AutoDDG is an automated system for generating comprehensive, accurate, readable, and concise dataset descriptions. The framework combines a data-driven approach to summarize dataset contents with large language models (LLMs) to enrich summaries with semantic information and produce human-readable descriptions. AutoDDG supports both API-based (OpenAI) and local LLM (transformers) modes, providing flexibility for different deployment scenarios.

Installation

Clone the repository and install dependencies via uv (recommended):

git clone https://github.com/VIDA-NYU/AutoDDG.git
cd AutoDDG
uv sync
# If you do not have uv installed:
# * `curl -LsSf https://astral.sh/uv/install.sh | sh`
# * or look at https://docs.astral.sh/uv/getting-started/installation/

Then launch Jupyter Lab to explore:

uv run --with jupyter jupyter lab

Alternatively, install directly via pip:

pip install git+https://github.com/VIDA-NYU/AutoDDG@main

For local LLM support (Qwen, Llama, etc.), install with optional dependencies:

Using uv (recommended):

uv sync --extra local-llm

Using pip:

pip install git+https://github.com/VIDA-NYU/AutoDDG@main[local-llm]
# or
pip install git+https://github.com/VIDA-NYU/AutoDDG@main transformers torch

[!CAUTION] This installation method is temporary. A PyPI release of AutoDDG will soon be available. The git+https method will be deprecated in favor of the PyPI index.


Getting Started

AutoDDG supports both API-based (OpenAI) and local LLM (transformers) modes.

Using OpenAI API

The simplest way to use AutoDDG is with an OpenAI API client:

from openai import OpenAI
from autoddg import AutoDDG

# Setup OpenAI client
client = OpenAI(api_key="sk-...")

# Initialize AutoDDG
autoddg = AutoDDG(client=client, model_name="gpt-4o-mini")

# Generate description from a small CSV sample
sample_csv = """Case_ID,Age,BMI
C3L-00004,72,22.8
C3L-00010,30,34.15
"""

prompt, description = autoddg.describe_dataset(dataset_sample=sample_csv)

print(description)
# >>> This dataset contains medical information about patients, including their unique Case_ID, Age, and Body Mass Index (BMI). etc.

Using Local LLM

AutoDDG also supports local LLMs via transformers (Qwen, Llama, etc.):

from autoddg import AutoDDG

# Initialize AutoDDG with local LLM
autoddg = AutoDDG(
    client=None,
    model_name="Qwen/Qwen2.5-7B-Instruct",  # or any HuggingFace model
    use_local_llm=True,
    local_llm_device="cuda",  # or "cpu" if no GPU
    local_llm_dtype="bfloat16",  # or "float16", "float32"
)

# Generate description
sample_csv = """Case_ID,Age,BMI
C3L-00004,72,22.8
C3L-00010,30,34.15
"""

prompt, description = autoddg.describe_dataset(dataset_sample=sample_csv)
print(description)

Note: For local LLM support, ensure you have installed the optional dependencies:

pip install transformers torch

Semantic Profiler Processing Modes

AutoDDG provides multiple processing modes for semantic profiling to optimize performance based on your use case:

Mode OpenAI API Local LLM Description
Sequential ✅ ✅ Default mode, processes columns one by one
Multi-threading ✅ ❌ Concurrent processing for faster execution
Group-prompting ✅ ✅ Processes multiple columns in one prompt
Batch processing ❌ ✅ Efficient GPU utilization for local models

Sequential Mode (Default)

The default mode processes columns sequentially. Works with both API and local LLMs:

# Sequential mode (default)
semantic_profile = autoddg.analyze_semantics(dataframe)

Multi-threading Mode (OpenAI API Only)

Use multi-threading to process columns concurrently for faster execution. Only available for OpenAI API clients:

# Multi-threading mode (OpenAI API only)
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_multi_threading=True,
    max_workers=32,  # Optional: number of concurrent workers
)

Group-prompting Mode (Both API and Local LLM)

Process multiple columns in a single prompt to reduce API calls. Efficient for both API and local LLMs:

# Group-prompting: process all columns at once
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_group_prompting=True,
    group_size=0,  # 0 = all columns at once, >0 = group size
)

# Or process in groups of 5 columns
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_group_prompting=True,
    group_size=5,
)

Batch Processing Mode (Local LLM Only)

For local LLMs, use batch processing for efficient GPU utilization. Only available for local LLMs:

# Batch processing mode (Local LLM only)
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_batch_processing=True,
    batch_size=32,  # Number of columns to process per batch
)

Important Notes:

  • Multi-threading is only available for OpenAI API clients
  • Batch processing is only available for local LLMs
  • Group-prompting works with both API and local LLMs
  • Batch processing takes precedence over other modes if enabled

Quick Jupyter Notebook Start

For a much better introduction, we highly recommend starting with the quick_start notebook with an example dataset.


How to Cite

If you use AutoDDG in your research, please cite our work:

@article{autoddg-sigmod2026,
Author = {Haoxiang Zhang and Yurong Liu and Wei-Lun Hung and Aécio Santos and Juliana Freire},
Title = {AutoDDG: Automated Dataset Description Generation using Large Language Models},
Journal = {Proceedings of the ACM on Management of Data},
volume = {4},
number = {1},
articleno = {12},
numpages = {27},
url = {https://doi.org/10.1145/3786626},
doi = {10.1145/3786626},
Year = {2026}
}

A preprint of the paper is available on arxiv: https://arxiv.org/abs/2502.01050

@misc{2502.01050,
Author = {Haoxiang Zhang and Yurong Liu and Wei-Lun Hung and Aécio Santos and Juliana Freire},
Title = {AutoDDG: Automated Dataset Description Generation using Large Language Models},
Year = {2025},
Eprint = {arXiv:2502.01050},
}

License

AutoDDG is released under the Apache License 2.0.

Metadata

Release files for autoddg 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autoddg 0.1.2
File Size Uploaded Provenance Actions
autoddg-0.1.2.tar.gz 43.6 kB Without provenance Details for autoddg-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for autoddg 0.1.2
File Interpreter ABI Platform Actions
autoddg-0.1.2-py3-none-any.whl Python 3 none any Details for autoddg-0.1.2-py3-none-any.whl

Total release size: 90.2 kB

Release files / autoddg-0.1.2.tar.gz

Download URL autoddg-0.1.2.tar.gz
Size 43.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6978502bf3843b63f11563cf56da17df1e36b63d8da0583946c297ed09548910
BLAKE2b-256 checksum
How to use checksums
b2d75f2a4041c5221516c32fd3fed6f2bd4d94ba54d51272d3da4867478d0540
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / autoddg-0.1.2-py3-none-any.whl

Download URL autoddg-0.1.2-py3-none-any.whl
Size 46.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1b39a155e34ef99f37e67572d8be32f61b7a969bdbc98dcea0359fb50b3a9242
BLAKE2b-256 checksum
How to use checksums
31de4b3dec6d9653baf8974a9ca4fb958c658f0d5a70e65950629311e4c2038c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for autoddg 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page