
Ordinal Review Classification
Role
ML Engineer
Year
2026
Category
NLP
Context
ETH CIL 2026
01.
Problem
Predict an integer rating in {0, 1, 2, 3, 4} on about 168k English and German product reviews, after training on about 252k labeled examples. The official score is L = 1 - MAE/4, so an off-by-one error costs less than predicting the opposite extreme. A softmax classifier decoded with argmax treats those ratings as unordered categories. That does not match the metric.
Every review is a title, a blank line, then a body. Extra text cleaning did not help. We encoded title and body separately with a shared XLM-RoBERTa-large, fused [t, b, |t-b|, t*b] with a learned gate, and kept auxiliary heads on each view during training. Losses on the same split: MSE+CE, OLL, SORD, EMD2, CORAL, and CORN+R-Drop. At test time we decode with the posterior median, the Bayes-optimal rule for MAE. Seven models trained on the ETH student GPU cluster with Slurm. About 26 hours in total.
02.
Approach
03. Outcome
Averaging six XLM-R-large models (three dual-view seeds and three single-view seeds) scores L = 0.910 on the public leaderboard, up from 0.906 for the first large baseline. The CSV we submitted is 85% that ensemble and 15% a dual-view CORN+R-Drop model. CORN had the best single validation score at L = 0.9088. A nine-model stack reached validation L = 0.9107 but 0.909 on the public set, so we kept the simpler blend.

