Skip to content
Back to skills

Serialization

ASecurity

"Save, load, and share BERTopic models locally or on the Hugging

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
datapythonrustapibackendsecurity

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill serialization --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Serialization?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Serialization
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-serialization/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-serialization)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: serialization
description: "Save, load, and share BERTopic models locally or on the Hugging
  Face Hub with safe format and dependency choices."
disable-model-invocation: true
metadata:
  disco-role: operating
  package: BERTopic
  package-version: "0.17.4"
  parent-skill: bertopic
license: MIT
---

# serialization

Use this sub-skill when the task is about persisting an already fitted BERTopic model, reloading it locally, or publishing/loading it through the Hugging Face Hub.

## Route here for

- `BERTopic.save(...)` and `BERTopic.load(...)` workflows.
- Choosing among `serialization="safetensors"`, `serialization="pytorch"`, and `serialization="pickle"`.
- Deciding whether to include `save_ctfidf=True` for topic-term inspection after reload.
- Deciding how to use `save_embedding_model`: a lightweight model pointer, omitting the backend, or reinjecting a backend at load time.
- Local save/load from a pickle file or from a lightweight model directory.
- Hub upload with `BERTopic.push_to_hf_hub(...)` and Hub loading with `BERTopic.load("namespace/repo")`.
- Serialization-side failures from `BERTopic.merge_models(...)`, such as missing `torch` or `safetensors`; route the model-combination decision itself to topic-modeling.

## Route elsewhere

- Training, fitting, transforming, partial fitting, topic reduction, topic merging, or outlier workflows: use the topic-modeling sub-skill.
- Embedding backend selection, custom backend implementation, API-client setup, or precomputed embedding construction: use the embeddings-backends sub-skill.
- c-TF-IDF or vectorizer tuning before saving: use the vectorizers-ctfidf sub-skill.
- Representation models, custom labels, or multi-aspect labels: use the representations-labeling sub-skill.
- Plotting, visualization, hierarchy dashboards, or figure export: use the analysis-visualization sub-skill.

## Operating references

1. Start with [`references/api-reference.md`](references/api-reference.md) for save/load/push signatures, format behavior, local file layout, and load-path resolution.
2. Use [`references/workflows.md`](references/workflows.md) for local exact round trips, portable lightweight saves, embedding-model restoration, Hub upload/load, and local-vs-Hub decisions.
3. Use [`references/troubleshooting.md`](references/troubleshooting.md) for import failures, optional dependency errors, invalid paths, credential issues, embedding-backend gaps, and version/security warnings.
4. Run [`scripts/smoke_serialization.py`](scripts/smoke_serialization.py) for a tiny local-only smoke check of pickle plus a lightweight format when the BERTopic runtime dependencies are available.

## Minimal decision flow

- If the file will only be loaded in the same trusted Python and dependency environment, `pickle` is the most complete format because it stores the full BERTopic object, including dimensionality-reduction and clustering sub-models.
- If the model should be small, safer to share, production-oriented, or Hub-friendly, prefer `safetensors` with `save_ctfidf=True` when topic-term inspection after reload matters.
- If `safetensors` is unavailable but `torch` is already an accepted dependency, use `pytorch`; it creates the same lightweight directory style with `.bin` weights.
- If future `transform(...)` calls should work without passing `embeddings=`, save a SentenceTransformer-compatible model id with `save_embedding_model="sentence-transformers/..."` or pass a freshly constructed backend to `BERTopic.load(..., embedding_model=...)`.
- If the backend is custom or uses external API credentials, do not expect lightweight serialization to store it; reconstruct that backend separately and inject it at load time.
- If uploading to the Hub, use `push_to_hf_hub(...)` only after confirming `huggingface_hub` is installed and the process is authenticated or has a token.
- If loading locally, pass an existing file or directory. If a missing path contains `/`, BERTopic treats it as a Hub repo id.

## Verification anchors

- Local no-network save/reload: fit or reuse a tiny synthetic model with precomputed embeddings, save as pickle and at least one lightweight format, reload from local file/directory, and assert topic counts plus representative topic metadata survive.
- Local-vs-Hub guidance: confirm local round trips do not require Hugging Face credentials, while `push_to_hf_hub(...)` and `BERTopic.load("namespace/repo")` require Hub-oriented dependencies and network/auth conditions.
- Embedding restoration edge case: load a lightweight model once without an embedding backend and once with an explicit backend or precomputed embeddings, then document the difference in future `transform(...)` behavior.

Files in this skill

  • SKILL.md4.6 KB
  • references/api-reference.md7.5 KB
  • references/troubleshooting.md7.5 KB
  • references/workflows.md7.7 KB
  • scripts/smoke_serialization.py10.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.