kaishuiji/vheart-affect-v9
09
vheart-affect-v9
A LoRA adapter that turns Qwen3-4B into a fine-tuned affect source for the feltstate felt-state library.
This is the larger / finer reference. For a smaller / faster variant on the v8 24-label vocab, see `kaishuiji/vheart-affect-v8`.
What it does
Same shape as v8 — reads a dialogue turn, emits an AffectDelta JSON. What changed:
- Base bumped to Qwen3-4B — broader Chinese coverage, sharper context handling.
- Label vocab expanded to 50. v8's 24 labels collapsed bittersweet and wistful; v9 separates them. New labels span four regions:
- Fine-grained high arousal (excited → thrilled / euphoric / exhilarated)
- Fine-grained negative (angry / scared / panicked / indignant differentiated from frustrated)
- Anticipation-class (dreading / longing / anticipating / nostalgic)
- Social affect (embarrassed / proud / envious / grateful / ashamed)
- Anticipation as a first-class field. v8 hinted at it; v9 outputs
anticipation: {valence, arousal, weight}so the consumer can model forward-looking mood, not just present.
Why v9 over v8
Training data — not released
~800 SFT samples, hand-curated Chinese-first dialogue snippets. Data not released to protect contributor privacy. The schema and label vocabulary are documented; reproduction requires your own corpus.
Label vocab — 50 labels (v9)
24 v8 labels retained (backward-compatible) plus 26 new. Anchor table follows the same (valence, arousal) format as v8 — see label_anchors_v9.json in this repo for the full table.
Usage
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = "Qwen/Qwen3-4B"
tok = AutoTokenizer.from_pretrained(base)
mdl = AutoModelForCausalLM.from_pretrained(
base, device_map="auto", torch_dtype="auto",
)
mdl = PeftModel.from_pretrained(mdl, "kaishuiji/vheart-affect-v9")
mdl.eval()With feltstate
from feltstate import Engine
from feltstate.sources import VheartSource
eng = Engine(source=VheartSource("kaishuiji/vheart-affect-v9"))
eng.observe("今晚跑通了三周的实验。")
print(eng.state.mood.mixed_blend)Limitations
- GPU required. 4B + LoRA is ~6GB VRAM in fp16. v8 if you don't have one.
- Chinese-first. Same caveat as v8.
- Single-character measurement. Same caveat as v8.
- Schema bound to feltstate. Same caveat as v8.
- v9 vs v8 isn't a clean win on every metric. Internal stress test (mvev02 baseline) had v8 slightly ahead on simple emotionscore; v9 wins on mixed-feeling and anticipation tasks. Pick what you measure for.
Citation
@software{feltstate_vheart_v9,
author = {morephine},
title = {feltstate / vheart-affect-v9},
url = {https://huggingface.co/kaishuiji/vheart-affect-v9},
year = {2026}
}License
Apache 2.0 (matches Qwen3 base).
