Skip to content
Back to skills

Tagging And Annotations

ASecurity

"Routes Flair annotation, tokenization, splitting, prediction-label

  • 247 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
ai-agentspythonbashapibackend

Works with

  • 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 tagging-and-annotations --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Tagging And Annotations
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-tagging-and-annotations/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-tagging-and-annotations)

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: 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.

Files in this skill

  • SKILL.md5.8 KB
  • references/annotation-workflows.md10 KB
  • references/tokenization-and-splitting.md8.3 KB
  • references/troubleshooting.md8 KB
  • scripts/annotation_smoke.py6.7 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.