Thai NLP / review routing
It started with four labels
Reviews are not only positive or negative. Some are questions; some mix praise and complaints. I wanted to see whether uncertainty could become useful information for a reviewer instead of being hidden behind a label.
What I tried
- Load and validate Wisesight with a shared split so candidate models could be compared fairly.
- Select TF-IDF plus Logistic Regression by macro F1 because the corpus is imbalanced.
- Add confidence routing, question routing, error analysis, and a synthetic review queue around prediction.
From review to review queue
- 1
Wisesight / synthetic fixture → validate and split
- 2
TF-IDF → Logistic Regression → label + score
- 3
Confidence / question routing → dashboard and human review
The number that made me slow down
Accuracy can look fine while a minority label is doing poorly. I used macro F1 as the selection metric and kept the error analysis close by to see where mixed sentiment and context-dependent reviews failed.

What came out of it
The selected baseline reached macro F1 0.5731 on Wisesight. The report contains 4,012 test reviews and 1,386 errors. That describes this corpus, not the accuracy of a business review system in general.

What's still missing
- The offline demo uses ten synthetic fixtures and a rule-based predictor, so it is not an accuracy estimate.
- Wisesight labels may not match a business taxonomy, and each review is forced into one label.
- The monitoring path is a local synthetic demo, not live production monitoring.
What I'd change today
- Write down the business taxonomy and mixed-sentiment examples before choosing the metric.
- Connect human review to error categories instead of only to a confidence threshold.
- Run a full comparison with a larger Thai model on the same split; do not treat debug training as a benchmark.
Source and demo
The repository has the complete setup, tests, and implementation details.