Thai NLP / review routing

Live demo / core result is on Wisesight

Thai Review Sentiment Intelligence

If the model can give a label but is unsure, which reviews should go to a person?

A Thai review classifier that treats the label as a starting point and exposes cases that may need human follow-up.

Thai sentiment prediction dashboard with class probabilities
Primary evidenceThe prediction view keeps the label and uncertainty visible together.

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. 1

    Wisesight / synthetic fixture → validate and split

  2. 2

    TF-IDF → Logistic Regression → label + score

  3. 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.

Thai sentiment prediction dashboard with class probabilities
The prediction view keeps the label and uncertainty visible together.

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.

Batch analysis view for Thai reviews
A batch view for finding reviews that deserve a closer look.

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.

See the code on GitHubTry the demo