DDI Corpus 2013 – Drug-Drug Interaction Query Skill
Overview
| Field | Value |
|---|---|
| Resource | DDI Corpus 2013 |
| Category | Drug-centric / Drug NLP & Text Mining |
| Source | GitHub |
| Paper | Herrero-Zazo et al., 2013 |
| Corpus Size | ~2,740 unique entities, ~5,000 annotated DDI pairs |
| Sources | DrugBank descriptions + MEDLINE abstracts |
The DDI Corpus 2013 is the standard benchmark for drug-drug interaction (DDI) extraction from biomedical text. Each XML file contains sentences with annotated drug entities and pairwise DDI labels.
DDI Types:
mechanism– pharmacokinetic mechanism described (e.g., altered absorption/metabolism)effect– clinical effect of the interaction (e.g., increased bleeding risk)advise– recommendation or warning about co-administrationint– stated interaction without further detail
Entity Types: drug, group, brand, drug_n (active substance not approved for human use)
Setup
1. Download & extract (one-time):
git clone https://github.com/isegura/DDICorpus.git
cd DDICorpus
unzip DDICorpus-2013.zip
2. Set the corpus path in 30_DDI_Corpus_2013.py:
CORPUS_ROOT = "/path/to/DDICorpus-master" # contains DDICorpus/Train/ and DDICorpus/Test/
Or pass --root at runtime or set env var DDI_CORPUS_ROOT.
Usage
Python API
from 30_DDI_Corpus_2013 import query_entities, list_all_entities, corpus_stats
# Query a single drug
result = query_entities("aspirin")
# Query multiple drugs at once
result = query_entities(["warfarin", "metformin", "digoxin"])
# List all entity names in the corpus
names = list_all_entities()
# Get corpus-level statistics
stats = corpus_stats()
CLI (直接运行)
python 30_DDI_Corpus_2013.py
直接运行即输出 demo 结果(corpus 统计 → 单实体查询 → 批量查询 → 未找到示例)。
修改 __main__ 块中的实体名即可自定义查询。
Output Format
query_entities returns a JSON string. Each element:
{
"query": "aspirin",
"found": true,
"canonical_names": ["ASPIRIN", "Aspirin", "aspirin"],
"entity_types": ["brand", "drug"],
"total_interactions": 65,
"interactions": [
{
"partner": "ketoprofen",
"ddi_type": "mechanism",
"sentence": "concurrent administration of aspirin decreased ketoprofen protein binding...",
"source": "Train/DrugBank"
}
],
"example_sentences": ["..."]
}
If an entity is not found: {"query": "xyz", "found": false}.
Parameters
| Parameter | Default | Description |
|---|---|---|
entities |
(required) | str or list[str] — drug names to look up (case-insensitive) |
corpus_root |
CORPUS_ROOT |
Path to the extracted DDICorpus-master directory |
max_interactions |
20 |
Maximum interaction records returned per entity |
max_sentences |
5 |
Maximum example sentences returned per entity |
Dependencies
Python 3.10+ standard library only (xml.etree.ElementTree, json, os, collections). No third-party packages required.