| Field | Value | |-------|-------| | **Resource** | DDI Corpus 2013 | | **Category** | Drug-centric / Drug NLP & Text Mining | | **Source** | [GitHub](https://github.com/isegura/DDICorpus) | | **Paper** | [Herrero-Zazo et al., 2013](https://www.sciencedirect.com/science/article/pii/S1532046413001123) | | **Corpus Size** | ~2,740 unique entities, ~5,000 annotated DDI pairs | | **Sources** | DrugBank descriptions + MEDLINE abstracts |
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill ddi_corpus --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ddi Corpus?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-ddi-corpus)More formats (shields.io, HTML) on the badges page.
# DDI Corpus 2013 – Drug-Drug Interaction Query Skill
## Overview
| Field | Value |
|-------|-------|
| **Resource** | DDI Corpus 2013 |
| **Category** | Drug-centric / Drug NLP & Text Mining |
| **Source** | [GitHub](https://github.com/isegura/DDICorpus) |
| **Paper** | [Herrero-Zazo et al., 2013](https://www.sciencedirect.com/science/article/pii/S1532046413001123) |
| **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-administration
- `int` – 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):
```bash
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`:
```python
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
```python
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 (直接运行)
```bash
python 30_DDI_Corpus_2013.py
```
直接运行即输出 demo 结果(corpus 统计 → 单实体查询 → 批量查询 → 未找到示例)。
修改 `__main__` 块中的实体名即可自定义查询。
## Output Format
`query_entities` returns a JSON string. Each element:
```json
{
"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.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!