# Ade Corpus

> 32_ADE_Corpus

- Skill: `gabrielmoreira/ade-corpus` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/ade-corpus`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/ade-corpus/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/gabrielmoreira/ade-corpus

---

# 32_ADE_Corpus

## Overview

**ADE Corpus V2** — Adverse Drug Event relation extraction dataset from annotated PubMed case reports.

| Field | Value |
|-------|-------|
| Category | Drug-centric |
| Subcategory | Drug NLP / Text Mining |
| Source | [GitHub](https://github.com/trunghlt/AdverseDrugReaction/tree/master/ADE-Corpus-V2) |
| Paper | [ACL 2016](https://aclanthology.org/C16-1084/) |
| Local Path | `resources_metadata/drug_nlp/ADECorpus/ADE-Corpus-V2` |

## Data Files

| File | Content |
|------|---------|
| `DRUG-AE.rel` | Drug ↔ Adverse Event relation pairs with source sentences |
| `DRUG-DOSE.rel` | Drug ↔ Dose relation pairs with source sentences |
| `ADE-NEG.txt` | Negative examples (sentences without adverse events) |

## Quick Start

```python
from 32_ADE_Corpus import ADECorpus  # or rename to ade_corpus

corpus = ADECorpus()

# Single entity
print(corpus.query("aspirin"))

# Multiple entities
print(corpus.query(["lithium", "hepatotoxicity"]))

# Corpus statistics
print(corpus.stats())
```

## Query Input / Output

### Input

`corpus.query(entities)` — accepts `str` or `list[str]`.  
Each entity is matched case-insensitively against both drug names and adverse event names.

### Output (JSON)

```json
{
  "aspirin": {
    "entity": "aspirin",
    "matched_as_drug": true,
    "matched_as_adverse_event": false,
    "total_mentions": 42,
    "adverse_events": ["bleeding", "tinnitus", "..."],
    "doses": ["100mg", "..."],
    "related_drugs": null,
    "pubmed_ids": ["12345678", "..."],
    "sample_sentences": ["A 65-year-old patient developed ..."]
  }
}
```

| Field | Description |
|-------|-------------|
| `matched_as_drug` | Entity found as a drug name |
| `matched_as_adverse_event` | Entity found as an adverse event name |
| `total_mentions` | Total matching records |
| `adverse_events` | List of associated adverse events (when matched as drug) |
| `doses` | List of associated doses (when matched as drug) |
| `related_drugs` | List of drugs causing this event (when matched as AE) |
| `pubmed_ids` | Up to 10 source PubMed IDs |
| `sample_sentences` | Up to 3 example sentences |

## Notes

- All matching is **case-insensitive**.
- `query()` returns a **JSON string** directly consumable by LLMs.
- `stats()` returns corpus-level counts (total relations, unique drugs/AEs).
- No external dependencies — stdlib only (`os`, `json`, `collections`).

