Ordinal Review Classification
2026 · NLP

Ordinal Review Classification

PythonPyTorchXLM-RoBERTaOrdinal RegressionNLPSlurm

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.

Gallery

Ordinal Review Classification evidence 1
01
Ordinal Review Classification evidence 2
02