diff --git a/dan/datasets/entities/extract.py b/dan/datasets/entities/extract.py
index c6d23d3650db0f2e3afc0d9b806390ae2cc1049a..6991ddba163a2a399b13393eb30bc0b4dc5e408d 100644
--- a/dan/datasets/entities/extract.py
+++ b/dan/datasets/entities/extract.py
@@ -18,6 +18,8 @@ def run(database: Path, output_file: Path) -> None:
     entities = list(
         map(itemgetter(0), EntityType.select(EntityType.name).distinct().tuples())
     )
+
+    output_file.parent.mkdir(exist_ok=True, parents=True)
     output_file.write_text(
         yaml.safe_dump({"entities": entities}, explicit_start=True, allow_unicode=True)
     )
diff --git a/dan/datasets/tokens/generate.py b/dan/datasets/tokens/generate.py
index 6906e2623059a9b77d8b38d4d8078cdff7d3d878..c815ade076100bf4772dcecce7293c8a47d8e9cf 100644
--- a/dan/datasets/tokens/generate.py
+++ b/dan/datasets/tokens/generate.py
@@ -37,6 +37,7 @@ def run(entities: Path, end_tokens: bool, output_file: Path) -> None:
         }
 
     # Save entities & tokens to YAML
+    output_file.parent.mkdir(exist_ok=True, parents=True)
     output_file.write_text(
         yaml.safe_dump(tokens, explicit_start=True, allow_unicode=True, sort_keys=False)
     )