Define the scoring task
Translate a rubric into numeric labels and decide whether to predict coarse categories or continuous scores; capture inter-rater variability.
Score essays automatically. Align predictions to a scoring rubric.
Automated essay scoring assigns a score or grade to free-text student responses using features from the text and a supervised model. Key practical issues include aligning labels to a rubric, handling length and topical variation, fairness across demographic groups, and human-in-the-loop review of borderline cases.
Learning concept · Not a validated service
Automated essay scoring assigns a score or grade to free-text student responses using features from the text and a supervised model. Key practical issues include aligning labels to a rubric, handling length and topical variation, fairness across demographic groups, and human-in-the-loop review of borderline cases.
A proposed application: pre-score student essays to prioritise manual grading and provide formative feedback, with a human teacher reviewing all final grades. This extension is not implemented by the supplied starter.
Translate a rubric into numeric labels and decide whether to predict coarse categories or continuous scores; capture inter-rater variability.
Collect real student essays with rubric-aligned labels, remove duplicates, and stratify by score and prompt before splitting.
Fit a TF-IDF or embedding-based representation with a regression or ordinal classifier and track per-prompt performance.
Measure quadratic-weighted kappa or mean absolute error, inspect disparate impact across subgroups, and route uncertain cases to human graders.
The supplied starter builds a binary text classifier: it defines six short, non-essay texts with binary labels, splits them, fits a TF-IDF + LogisticRegression pipeline, prints a classification report on the tiny test split, and shows one sample prediction. It does not use essay-length inputs, rubric scores, regression or ordinal models, nor any real essay dataset.
model = Pipeline(
steps=[
("tfidf", TfidfVectorizer(ngram_range=(1, 2), min_df=1)),
("classifier", LogisticRegression(max_iter=1000)),
]
)
model.fit(X_train, y_train)
predictions = model.predict(X_test)The code uses six short non-essay sentences with binary labels rather than essay texts and rubric-aligned numeric scores. It trains a classifier, not a regression/ordinal scoring model, and the dataset is far too small to validate essay-scoring performance.
A proposed extension: train on real rubric-labelled essays to produce a provisional score plus a confidence estimate, and surface low-confidence or high-disagreement items to teachers for final grading.
This is a potential application pathway, not a delivered product. The supplied starter does not implement this service or validate it with real users.
Networkers Home runs this topic inside its AI Engineer Course, with placement support and hands-on labs.