"Routes Flair annotation, tokenization, splitting, prediction-label
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill tagging-and-annotations --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tagging And Annotations?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-tagging-and-annotations)More formats (shields.io, HTML) on the badges page.
---
name: tagging-and-annotations
description: "Routes Flair annotation, tokenization, splitting, prediction-label
inspection, serialization, regex tagging, and HTML visualization tasks for
CPU-first package workflows."
disable-model-invocation: true
metadata:
disco-role: operating
license: NOASSERTION
---
# Tagging and Annotations
Use this sub-skill when a task is about creating or inspecting Flair `Sentence` objects, token/span/relation labels, pretrained prediction outputs, tokenization, sentence splitting, regex tagging, serialization, or simple HTML visualization in a pip-installed `flair` workflow.
## Route here for
- Building `Sentence`, `Token`, `Span`, `Relation`, `Label`, or `DataPair` objects and attaching labels to the correct layer.
- Running pretrained inference with `Classifier.load(...)`, `SequenceTagger.load(...)`, or `TextClassifier.load(...)`, then reading predictions from `get_labels(...)`, `get_spans(...)`, or `get_relations(...)`.
- Choosing `SegtokTokenizer`, `SpaceTokenizer`, `NoTokenizer`, `SpacyTokenizer`, `SciSpacyTokenizer`, `JapaneseTokenizer`, `StaccatoTokenizer`, or sentence splitters.
- Using `RegexpTagger` for no-download rule-based span labels.
- Round-tripping annotations with `Sentence.to_dict()` / `Sentence.from_dict()` or rendering NER-style HTML with `render_ner_html(...)`.
Use the training-and-datasets sub-skill instead for corpus readers, label dictionaries for training, `ModelTrainer`, fine-tuning, TARS, or multi-GPU launch. Use the embeddings-and-optimization sub-skill for embedding selection, vector shapes, ONNX/provider runtimes, TorchScript, or cache-heavy embedding optimization. Use the biomedical-nlp sub-skill for HunFlair/HunFlair2 entity linking, SciSpaCy-heavy biomedical workflows, abbreviations, or pyab3p-specific behavior.
## Start safely
1. Treat CPU as the verified baseline. If device placement matters, set `FLAIR_DEVICE=cpu` before importing `flair`.
2. Do not load pretrained model names unless downloads are allowed or the model is already cached. `Classifier.load("ner")`, `SequenceTagger.load("ner")`, and `TextClassifier.load("sentiment")` may download public resources.
3. If downloads are allowed, set a deliberate cache root before importing `flair` (for example a project-local cache) so future agents know where models went.
4. Keep CUDA, ONNX/provider runtimes, SciSpaCy, Japanese tokenizer backends, pyab3p, and model downloads marked optional/unverified unless the active environment proves them.
5. For no-download validation of the annotation stack, run the bundled smoke script from this sub-skill directory:
```bash
python scripts/annotation_smoke.py --json
```
The script uses only local in-memory sentences, manual labels, rule-based tagging, tokenizers, splitters, serialization, and HTML rendering.
## Core workflow
1. **Create sentences with an explicit tokenization choice.** Use `Sentence(text)` for the default SegTok route, `Sentence(text, use_tokenizer=False)` for whitespace tokenization, `Sentence(text, use_tokenizer=Tokenizer())` for a custom tokenizer, or `Sentence(["pre", "tokenized"])` when token boundaries are already decided.
2. **Attach or predict labels into named layers.** The first argument to `add_label` / `set_label` is the layer name such as `"ner"`, `"pos"`, `"sentiment"`, or `"relation"`; the second argument is the class value such as `"PER"` or `"POSITIVE"`.
3. **Extract labels by layer.** Use `sentence.get_labels("ner")` for `Label` objects, `sentence.get_spans("ner")` for span data points, and `sentence.get_relations("relation")` for relation data points. Calling `get_labels()` with no argument returns all layers and is a common source of mixed output.
4. **Preserve offsets deliberately.** Token and span offsets are relative to `sentence.text`; `sentence.start_position` records the sentence offset in a larger document.
5. **Serialize only what can be reconstructed.** `Sentence.from_dict(sentence.to_dict())` preserves sentence/span/relation labels and tokenizer configuration when the tokenizer class and optional dependencies are available.
## Read these references
- [Annotation workflows](references/annotation-workflows.md): concrete APIs for labels, layers, pretrained predictions, `RegexpTagger`, relations, `DataPair`, serialization, and HTML visualization.
- [Tokenization and splitting](references/tokenization-and-splitting.md): tokenizer/splitter decision rules, offset behavior, retokenization caveats, optional dependency routes, and serializer implications.
- [Troubleshooting](references/troubleshooting.md): fixes for tokenization drift, model downloads/cache, label-layer confusion, offsets/serialization, optional tokenizer dependencies, and visualization issues.
## Practical rules for future agents
- Prefer `Classifier.load(model_id)` in examples because it dispatches to the appropriate Flair classifier class. Use `SequenceTagger.load(...)` or `TextClassifier.load(...)` only when the task specifically needs that concrete class.
- Pass `label_name="new_layer"` to prediction methods when preserving an existing layer matters; prediction normally removes existing labels in the target layer before adding new ones.
- For sequence taggers, span-predicting models put predictions on `Span` objects by default; use `force_token_predictions=True` only when token-level outputs are required.
- For `RegexpTagger`, regex match spans must align exactly with token boundaries. If a match cuts through a token, adjust tokenization or the regex before treating the output as valid.
- Use `render_ner_html(..., label_name="layer")` only for non-overlapping span-style labels that should be shown in one visual layer.
- Keep generated guidance self-contained: future use should require only a public pip-installed `flair` package plus explicitly permitted optional resources, not the original source checkout.
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!