CoolFace
Modelpublic

kaishuiji/vheart-affect-v9

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes9downloads
Model Card

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

use caseadapter
Tight inter-rater on 24 labels, consumer GPU, fastv8
Finer mixed-feeling resolution, anticipation modeling, 4B GPU availablev9

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

python
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

python
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

bibtex
@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).