Midnight Wash counselor emotion classifier
A small classifier used by the confession room in Midnight Wash, a 3D late-night laundromat web app. It sorts a short worry (Korean or English) into one of 11 emotions, and the app replies with reviewed, hand-written sentences for that emotion. The model never writes replies itself.
- Base model: intfloat/multilingual-e5-small (MIT), fine-tuned for sequence classification
- Format: int8 ONNX (
onnx/model_quantized.onnx, about 118 MB) for transformers.js; runs on CPU in the browser - Labels:
tired,hurt,guilt,anxious,lonely,grief,angry,future,burnout,crisis,other - Input: prefix the text with
query:(as in training)
import { pipeline } from '@huggingface/transformers';
const clf = await pipeline('text-classification', 'Ayaannnnnnn/midnight-wash-counselor-e5', { dtype: 'q8' });
const [top] = await clf('query: 오늘 회사에서 하루 종일 혼나서 너무 지쳤어요.');
Training data (v2, about 2,600 sentences)
- About 1,175 synthetic worry sentences written for this project (Korean with casual-speech variation, some English)
- First-person comments from KOTE where at least 3 of 5 raters agree on a mapped emotion (MIT, Copyright (c) 2022 Jeon Duyoung; see
KOTE-MIT.txt) - Single-label English examples from GoEmotions (Apache License 2.0, Google Research; see
GoEmotions-Apache-2.0.txt)
Public labels were mapped onto the 11 emotions; lonely, future and crisis come only from the synthetic set.
Evaluation (int8 model)
| Set | Model alone | In the app (crisis rules first, keywords when the model scores below 0.4) |
|---|---|---|
| 28 held-out worry sentences | 20/28 | 25/28 |
| KOTE test split, mapped (86 Korean comments) | 58/86 | 58/86 |
| GoEmotions test split, mapped (60 English comments) | 37/60 | 36/60 |
The public test sets are comments about news, products and posts rather than personal worries, and their labels only partly match ours, so use them to compare versions rather than as absolute accuracy.
Limitations and intended use
- Not a diagnostic or counseling tool. It only picks which pre-written empathetic sentence to show.
- Do not rely on the
crisislabel. In the 28-sentence test the model labeled crisis phrases asfuture. The app checks crisis phrases with rules first and always shows a crisis line (in Korea, 109) when they match. - Trained on a small, partly synthetic set, so it can misread sarcasm, mixed feelings, or wording unlike the training sentences.