--- license: apache-2.0 language: en library_name: transformers.js pipeline_tag: text-classification base_model: sentence-transformers/all-MiniLM-L6-v2 tags: [nodd, onnx, text-classification, synthetic-data] --- # sentiment (v2) What feeling does the writer express about the thing they're talking about (a product, place, service or experience)? A small classifier trained with [nodd](https://github.com/michaljach/nodd), exported as ONNX fp32 and int8 for browser and Node.js inference. This version uses a larger offline synthetic training dataset. | Label | Meaning | |---|---| | `positive` | Happy, satisfied, grateful or recommends it. | | `neutral` | Facts, questions, plans or mixed feelings with no clear lean. | | `negative` | Unhappy, disappointed, angry or warns others away. Includes sarcastic praise. | ## Evaluation | Metric | Value | |---|---:| | Test macro F1, PyTorch | 0.8808 | | Test macro F1, int8 ONNX | 0.8802 | | int8 vs PyTorch label agreement | 96.08% | | int8 download | 24.31 MB | | Train / validation / test | 3238 / 51 / 51 | | Temperature | 1.549442 | | Confidence threshold | 0.946760 | | Validation precision at threshold | 100.00% | | Test accuracy on covered inputs, PyTorch | 96.15% | | Test coverage, PyTorch | 50.98% | | Training seed | 42 | See [baseline comparison](comparison.md), [evaluation report](report.md), and [browser parity results](browser_parity.json). ## Data and limitations Added 1,000 examples per label using deterministic offline templates, with generation seed 20260928. Labels were assigned by construction, not by an independent teacher. Template variants are correlated and do not represent independent scenarios. New rows are training-only; the original validation and test records were preserved. Exact duplicates and examples with embedding cosine similarity above 0.90 to either holdout were rejected. All evaluation inputs are synthetic; real-world accuracy is unmeasured. More data did not consistently improve held-out quality: consult the comparison before replacing an earlier version. The 97% precision target selected on validation was not met on this version's covered PyTorch test subset. Quantization can change individual probabilities substantially, so label parity does not establish confidence equivalence. Prompt-injection detection, where applicable, is not a standalone security boundary. ## Use Download this version and serve it from your own origin: ```sh hf download nodd-repo/sentiment --revision v2 --local-dir public/models/sentiment/v2 npm install @nodd/browser ``` ```ts import { nodd } from "@nodd/browser"; const model = await nodd.load("/models/sentiment/v2"); const decision = await model.decide("Your input text"); if (!model.isConfident(decision)) { /* escalate for review */ } model.dispose(); ``` For Node.js, use `@nodd/node` and the downloaded directory path. Requires nodd JavaScript packages >= 0.2.0. ## Artifacts - `onnx/model_quantized.onnx`, `onnx/model.onnx`: int8 and fp32 browser models. - `nodd.json`, tokenizer files and `config.json`: browser runtime configuration. - `encoder/`: original Transformers checkpoint, loadable with `AutoModelForSequenceClassification.from_pretrained(local_path, subfolder="encoder")`. - `labeled.jsonl`: exact training, validation and test records with split and provenance fields. - `synthetic_manifest.json`: generation metadata and baseline fingerprint. - `model_card.json`, reports and parity files: training, calibration and evaluation evidence. Earlier releases remain available through their version tags. The generation script and cross-task results are in the [source repository](https://github.com/michaljach/nodd/blob/main/scripts/train_synthetic.py).