3.1. Corpus, Writing Samples, and Analytic Score Bands
We use Version 2.0 of the HSK Dynamic Composition Corpus [
36], which contains error-annotated examination writing produced between 1992 and 2005. The official resource page reports 11,569 compositions (4.24 million Chinese characters), while prior Chinese AES work describes examiner scores on a 40–95, five-point scale and reports that two professional assessors’ scores were averaged [
5,
6]. From the records available through the corpus interface, we aggregate 105,462 annotated sentences into 11,319 essay-level units and reconstruct for each unit (i) the student version, with annotated errors restored, and (ii) the expert-corrected version. Because the source stores retrieved annotated sentences rather than complete manuscripts, our unit of analysis is a writing sample (a median of 263 and a mean of 271 characters), not a full essay. The same unit is used for training, synthesis, and evaluation. Three considerations justify this unit. First, it is a constraint of the data source rather than a modeling choice: complete manuscripts are not distributed through the corpus interface, and no publicly accessible CSL resource pairs complete low-band essays with examiner scores at a comparable scale. Second, because training, synthesis, and the frozen test set all use the identical unit, every between-configuration comparison in this study is internally consistent; no configuration gains an advantage from a longer or more complete input. Third, the unit choice narrows the measured construct in a documented direction: a 270-character sample carries dense evidence about orthographic, lexical, and syntactic control but limited evidence about essay-level organization and argumentation. All claims in this paper, therefore, concern scoring of local linguistic quality, and the reported examiner scores remain meaningful for this construct because the corpus errors were annotated at the sentence level by trained experts. Extension to full-length essays, where macrostructure and discourse contribute additional score variance, is an external validity question that the present design cannot answer and is listed among the study’s limitations (
Section 5.6).
After excluding units without a valid score in
or shorter than 150 characters, 10,067 samples remain. Scores lie on a five-point lattice with 12 observed levels. We define three analysis bands before model comparison: low (L, 40–59), middle (M, 60–79), and high (H, 80–95). The boundary at 60 is used to summarize lower-tail detection and corresponds to the transition between the prespecified L and M bands; it is not asserted to be an official pass/fail standard for the historical HSK writing component. L contains 756 samples (7.5%), compared with 6880 in M and 2431 in H (
Figure 1). We freeze a tail-enriched, stratified test set of 800 samples (L200/M400/H200) and a development set of 400; the remaining 8867 form the training pool (L496/M6240/H2131). The enriched test set provides 200 below-60 cases for tail analysis, but its 25% low-band prevalence is not the operational corpus prevalence; overall test metrics in this paper refer to this frozen evaluation design.
The corpus is publicly searchable, but it is not an openly licensed dataset. Its official copyright notice requires source attribution, restricts commercial use without permission, and limits automated downloads. We therefore report aggregate analyses without redistributing the source texts or corpus-derived text fields. This distinction also governs the availability conditions reported in the Data Availability Statement.
3.2. Empirical Error Profiles
The parser maps the corpus annotations into 18 reporting fields. Fourteen categories have sufficient single-error exemplars to form the injection whitelist: six common character categories (wrong, illegible, missing, redundant, traditional, and variant forms); pinyin substitution; three word categories (misuse, omission, redundancy); syntactic error; and three punctuation categories. Thirteen prevalent categories are used in the error-profile distribution audit; the rare variant-form category is retained for generation but excluded from that descriptive comparison.
Profiles are computed from the training split only.
Figure 2 shows selected densities. Low-band writing has 2.2× the illegible-character density, 2.6× the syntactic-error density, and 6–9× the pinyin-substitution and foreign-word densities of high-band writing. Equally important are counterintuitive patterns. Traditional-character annotations are more common in the high band, reflecting candidates from traditional-script regions rather than lower proficiency. Low-band sentences are also not shorter than mid-band sentences (32.6 versus 31.4 characters per sentence; per-sample means averaged across samples). These observations motivated the calibrated content rules in v3.
We additionally extract 5462 training-split sentences containing exactly one annotated error. Each is stored as a category, erroneous form, and corrected form and supplies authentic few-shot demonstrations during synthesis. Categories without adequate single-error exemplars are not injected even if they remain in the descriptive corpus profile.
3.4. Error-Profile-Conditioned Synthesis (EPCS)
EPCS synthesizes low-band writing samples in four stages.
Step 1: Profile donation. A donor is sampled from the available real low-band training set. Its full injectable error-count vector becomes the synthetic budget, its length becomes the target length, and its examiner score becomes the candidate label. Under simulated scarcity, the donor pool is restricted to the retained low-band subset. Donation preserves per-sample co-occurrence patterns that would be lost if categories were independently sampled from band averages.
Step 2: Substrate selection. The substrate is the expert-corrected version of a mid-band training sample whose length lies within of the donor length. Corrected text avoids double-injecting annotated errors; a corpus substrate retains authentic topic and discourse material that free generation may not reproduce. The design also creates the central label approximation: the content originates from a mid-band response, whereas the error profile and label originate from a low-band donor.
Step 3: Budgeted injection with authentic exemplars. The generator receives the substrate, the per-category budget, and up to two single-error exemplars for every requested category. It returns rewritten text and a manifest of records restricted to the whitelist. In v3 the prompt additionally requests lexical impoverishment, reuse of basic vocabulary, preservation of the substrate’s sentence-boundary rhythm, and compression toward the donor length. These rules follow the measured TTR, sentence length, and length distribution rather than an assumed “beginner” style.
Step 4: Verify–repair and label transfer. The online verifier checks manifest counts against the budget with tolerance per requested category, checks output length, and attempts to locate declared after-spans. Violations trigger up to two repair rounds. A local re-verifier normalizes whitespace, accepts an exact match or a matching five-character window, requires at least 80% of manifest entries to be locatable, and records whether before-spans occur in the substrate. These checks verify manifest consistency, not independently annotated linguistic correctness; this distinction is preserved in our claims. Accepted samples inherit the donor’s real examiner score. The procedure avoids LLM self-labeling but assumes that the transferred profile is sufficiently diagnostic of low proficiency.
Method versions.
Version 1 injects surface errors only. Version 2 adds intuition-driven vocabulary downgrading, sentence simplification, and compression. Version 3 replaces the sentence-simplification heuristic with empirical calibration: preserve the observed sentence rhythm, reduce lexical variety without naming target function words, and match donor length. The versions form an audit trail, not an assumed monotone improvement sequence.
Executable sampling logic. The implementation fixes the synthesis RNG to 42 and executes the following record for sample i: sample donor uniformly from the retained Train-L pool; retain every whitelisted category with donor count and an available exemplar; form the candidate set of corrected Train-M substrates whose original length lies in times the donor length; sample one substrate uniformly; draw at most two single-error demonstrations per requested category; call the generator; verify the returned text and manifest; repair at most twice; and, if accepted, emit . The 14 injectable codes map to wrong, illegible, missing, redundant, traditional, and variant characters; pinyin substitution; word misuse, omission, and redundancy; syntactic error; and punctuation misuse, omission, and redundancy. This mapping, the donor and substrate identifiers, target counts, output text, manifest, verifier status, and repair count are stored for every attempted sample.
Prompt and generation record. The operative Chinese prompt template, translated here, was: “Rewrite the corrected substrate as plausible low-proficiency Chinese; for each listed category inject exactly errors using the supplied correct-to-error demonstrations; distribute the changes; apply the version-specific content rules; and return JSON with a text field and an injections list of cat/before/after records.” v3 further required at least five advanced expressions to be replaced by common vocabulary, preservation of the substrate’s sentence-final boundaries, compression toward donor length, and no deliberate increase in named function words. Generation runs were made in August 2026 through the OpenAI chat-completions endpoint with model identifier gpt-5.6-luna; the generator-change batch used qwen/qwen3-max through OpenRouter. Requests allowed 8000 completion tokens and specified temperature 0.7. When supported by the endpoint (otherwise the unsupported field was omitted and the request retried). Generation and repair used the same model settings; no separate LLM judge was used. Each initial call and repair was logged, yielding approximately 15,000 LLM calls over all version, scarcity, and dose batches.
Representative accepted record. Sample epcs_v3_0001 inherited a score of 50 from its donor and rewrote a score-75 corrected substrate. Its target profile contained two wrong-character, two illegible-character, two word-misuse, and two syntactic errors. One repair produced a 207-character output for a 196-character donor target; all eight manifest after-spans were locatable, and seven of eight before-spans matched the substrate. This case illustrates what the verifier certifies—budget and span consistency—without treating the record as an independent linguistic rating.
3.5. Synthetic Data Fidelity Audit
We compare each synthetic batch with real low-band training text at three levels. First, the 23 surface features are text length; mean and SD of sentence length; character and character-bigram TTR; rates per 100 characters of the illegible-character placeholder, all punctuation, commas, and Latin letters; and 14 character-level high-frequency markers (de, le, zai, shi, bu, wo, ta, men, zhe, jiu, dou, ye, hen, you). For each feature we report a two-sample K–S test. The number with raw is a descriptive no-difference count, not evidence of equivalence and not corrected for multiple testing. Second, logistic regression and gradient boosting discriminators classify real versus synthetic feature vectors under stratified five-fold cross-validation. Third, the batches are used in the fixed downstream scoring pipeline.
3.6. Experimental Conditions and Statistical Analysis
Scorer and training. All configurations fine-tune MacBERT-base [
20] with a regression head. Scores are z-normalized within each training configuration; the objective is MSE, maximum length is 256, and batch size is 32. All reported fine-tuning runs use an NVIDIA RTX 5090 with CUDA bfloat16 autocasting. The optimizer is AdamW with learning rate
and
, epsilon
, and weight decay 0.01. A linear scheduler uses 10% warm-up; gradients are clipped at norm 1.0, and training runs for at most eight epochs with early stopping after two epochs without improvement in development QWK. We report seeds
except for the v1 full-data joint row, for which three runs are available. The retained scarcity subset is fixed with RNG 1234 across training seeds.
Configurations. The evaluated configurations are real only: random oversampling of retained low-band samples; inverse-frequency reweighting; naive role-play synthesis; EPCS without reweighting; and EPCS v1/v2/v3 combined with reweighting. To hold augmentation volume constant across versions and scarcity conditions, the main comparisons add samples; larger amounts are examined only in the dose analysis.
Weighting objective. For a retained real training set with
samples and band count
, the loss weight is
Weights are computed before augmentation, and a synthetic sample receives the weight of its inherited label band. The implementation averages over the batch rather than normalizing by the sum of weights. Consequently, the joint configuration changes both textual support and effective loss mass. With 490 synthetic low-band samples, the low band accounts for 49.8%, 71.2%, and 84.6% of total nominal weighted loss mass at 100%, 25%, and 10% retention, respectively. We therefore describe comparisons with reweighting as the behavior of a joint intervention, not a factorial proof that synthesis and weighting are independently complementary.
Scarcity gradient. We retain of the 496 real low-band training samples with a fixed subset across seeds. Integer truncation yields 496, 124, and 49 samples. The donor pool is restricted to the same subset. The exemplar bank and the empirically derived v3 prompt rules remain fixed training-split resources; the scarcity experiment, therefore, simulates loss of scored low-band writing support, not loss of all previously estimated error statistics.
Metrics and result provenance. Overall metrics are QWK on the 12-level lattice, following the weighted-kappa framework of Cohen [
37], Spearman correlation, and MAE. Tail metrics are low-band MAE and signed bias, below-60 precision, recall, F1, false-positive rate, and the prediction-on-score slope
. Paired bootstrap intervals [
38] resample test items 2000 times and average the metric over the observed training runs. Resampling is paired by test-item index, uses RNG 42, and reports the 2.5th and 97.5th percentiles and computes a two-sided sign-based
p value as twice the smaller bootstrap tail proportion. The intervals are conditional on the observed runs and do not model training-seed uncertainty. Per-run predictions retain essay identifier, band, true score, and predicted score;
Figure 3 displays all five paired seed trajectories rather than only their mean. The analysis matrix contains 138 unique final configuration–seed results, each aligned with its retained per-item prediction file.