Submit final system code, manifest, and predictions for team-riswan
Browse files- .gitignore +8 -0
- ENVIRONMENT.md +17 -0
- README.md +79 -25
- REPRODUCIBILITY.md +49 -0
- checks/test_reconstruction.py +60 -0
- data/README.md +5 -0
- data/few_shot_examples.json +252 -0
- inference.ipynb +26 -16
- inference.py +460 -161
- model_manifest.json +79 -0
- predictions.jsonl +45 -45
- requirements.txt +4 -5
- submission_manifest.json +72 -0
- training/README.md +15 -14
- training/ensemble_v9.py +139 -0
- training/evidence/dataset_loader_check.json +7 -0
- training/evidence/kaggle_environment.json +31 -0
- training/evidence/kaggle_parameter_metadata.json +22 -0
- training/evidence/notebook09f65026da.ipynb +0 -0
- training/evidence/original_cell5_pass4_pass5.py +113 -0
- training/evidence/pass4_pass5_log.txt +73 -0
- training/evidence/plumbing_checks.json +6 -0
- training/evidence/requirements.original-kaggle-observed.txt +16 -0
- training/evidence/requirements.packaging-check.txt +15 -0
- training/evidence/verification_report.json +120 -0
- training/kaggle_cells/cell1_pass1.py +143 -0
- training/kaggle_cells/cell3_pass2.py +149 -0
- training/kaggle_cells/cell4_pass3.py +158 -0
- training/kaggle_cells/cell5_pass4_pass5.py +124 -0
- training/passes/baseline_cot_4shot.jsonl +0 -0
- training/passes/baseline_direct_4shot.jsonl +0 -0
- training/passes/mac_think_2048_orig.jsonl +0 -0
- training/passes/pass1_think_2048_orig.jsonl +0 -0
- training/passes/pass2_think_4096_rot1.jsonl +0 -0
- training/passes/pass3_think_4096_hint.jsonl +720 -0
- training/passes/pass4_think_4096_rot2.jsonl +712 -0
- training/passes/pass5_think_4096_rot3.jsonl +712 -0
- training/passes/positional_option_keys.json +1 -0
- training/src/baseline_runner.py +456 -0
- training/src/few_shot_prompts.py +250 -0
- training/src/few_shot_runner.py +209 -0
- training/src/package_submission.py +85 -0
- training/src/prompts.py +70 -0
- verify_submission.py +98 -0
.gitignore
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__pycache__/
|
| 2 |
+
*.py[cod]
|
| 3 |
+
.DS_Store
|
| 4 |
+
.venv/
|
| 5 |
+
inference_work/
|
| 6 |
+
rerun/
|
| 7 |
+
predictions_rerun.jsonl
|
| 8 |
+
predictions_v9_rebuilt.jsonl
|
ENVIRONMENT.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Environment evidence
|
| 2 |
+
|
| 3 |
+
## Historical Kaggle export
|
| 4 |
+
|
| 5 |
+
The participant supplied `notebook09f65026da.ipynb`, copied unchanged under `training/evidence/`. Its metadata records Python **3.13.15** and Kaggle docker image version ID **28755**. Metadata records no active accelerator at export, while the setup cell and run outputs describe two T4-backed Ollama servers. The freeze output includes **torch 2.11.0+cu128**, **transformers 5.16.1**, and **accelerate 1.14.0**; the complete observed subset is in `training/evidence/requirements.original-kaggle-observed.txt`. These packages do not implement the shown inference: those requests use Python's standard-library HTTP client and the Ollama server. The freeze cell's execution count does not prove these versions were present for every earlier pass.
|
| 6 |
+
|
| 7 |
+
No historical Ollama server version, complete model digest, complete pip freeze, or full-run wall time is contained in the supplied notebook export. A subsequent participant-provided Kaggle diagnostic reports **Ollama server 0.40.12** on both ports 11434 and 11435. Neither server had a model loaded at that diagnostic. This establishes the inspected version, not the version of every earlier pass.
|
| 8 |
+
|
| 9 |
+
## Current Mac inspection
|
| 10 |
+
|
| 11 |
+
The installed Ollama **client** reports 0.40.7; there was no running server during inspection. This is not proof of the server version used for the submitted Mac predictions. `model_manifest.json` records the local model manifest hash and component inventory observed on 28 October 2026.
|
| 12 |
+
|
| 13 |
+
## Reconstruction test environment
|
| 14 |
+
|
| 15 |
+
The cleaned replay and metadata checks use an isolated Python environment. `requirements.txt` pins **huggingface_hub==2.3.0**, the package tested for dataset access during packaging, not an assertion about original Kaggle versions. The resolved packages are in `training/evidence/requirements.packaging-check.txt`.
|
| 16 |
+
|
| 17 |
+
Ollama is a separate system dependency. The original notebook installs it from `https://ollama.com/install.sh` and downloads `gemma4:e4b`; both moving references need exact version/model identity evidence. The runner checks for a provisioned server/model and does not silently install a different one. This leaves a setup discrepancy against the provided Hugging-Face-only template; organiser approval or a verified equivalent packaging path is still needed.
|
README.md
CHANGED
|
@@ -1,31 +1,85 @@
|
|
| 1 |
-
# Team
|
| 2 |
|
| 3 |
-
#
|
| 4 |
-
- **Base model(s):** `google/gemma-4-E4B-it` (Apache 2.0 license, released April 2, 2026).
|
| 5 |
-
- **What we did:** Zero-shot curriculum-contextualized prompt engineering (combining subject domain context, grade levels 6–13, and explicit Sinhala negation-awareness instructions) coupled with native test-time reasoning traces (`think=True`) and option-order permutation consensus to eliminate multiple-choice position bias. No fine-tuning or training was performed, adhering strictly to Rule 04.
|
| 6 |
-
- **Total inference parameters:** `7.52B` (active causal language model backbone `model.language_model.*` = 7,521,605,888 parameters; strictly $\le 8.0\text{B}$ per Rule 02).
|
| 7 |
-
- **Extra data used for training or retrieval:** None.
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
-
## How to run
|
| 16 |
```bash
|
| 17 |
pip install -r requirements.txt
|
| 18 |
-
|
|
|
|
|
|
|
| 19 |
```
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
- `
|
| 28 |
-
- `inference.ipynb`
|
| 29 |
-
- `
|
| 30 |
-
- `
|
| 31 |
-
- `training/`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Team riswan — SinhalaMMLU Shared Task, ICTer 2026
|
| 2 |
|
| 3 |
+
This repository preserves **Codabench submission #138**, `submission_think_ens_v9_final.zip`, with provisional macro accuracy **64.2482** (Easy 65.2648, Medium 56.3456, Hard 71.134), as shown in the participant's 28 October 2026 screenshot. Ranking remains subject to organiser verification.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
+
**Reproduction status:** the eight saved passes reproduce `predictions.jsonl` byte-for-byte. Fresh model inference has not been shown to reproduce the score. The supplied organiser template's no-sampling and Hugging-Face-only setup guidance differs from the historical system. See [REPRODUCIBILITY.md](REPRODUCIBILITY.md) for the full disclosure; this package does not certify rules compliance.
|
| 6 |
+
|
| 7 |
+
## Team and resources
|
| 8 |
+
|
| 9 |
+
- Team: **riswan**. Codabench participant: **riswan**. The registered team name was confirmed by the participant.
|
| 10 |
+
- [Team repository](https://huggingface.co/SinhalaMMLU-SharedTask/team-riswan) — configured repository destination; packaging changes are local until uploaded.
|
| 11 |
+
- [Base model: google/gemma-4-E4B-it](https://huggingface.co/google/gemma-4-E4B-it) — upstream model card lists Apache 2.0.
|
| 12 |
+
- [Ollama model: gemma4:e4b](https://ollama.com/library/gemma4:e4b) — the actual serving tag used by the original scripts; a moving tag is not an immutable model revision.
|
| 13 |
+
- [Competition dataset](https://huggingface.co/datasets/SinhalaMMLU-SharedTask/Sinhala-MMLU-SharedTask-Test-Dataset).
|
| 14 |
+
- [Task website](https://sinhalammlu.ucsc.cmb.ac.lk/) and [rules](https://sinhalammlu.ucsc.cmb.ac.lk/rules.html).
|
| 15 |
+
- No trained model or adapter is evidenced in the submitted pipeline; it uses frozen model inference. No additional model repository is currently included.
|
| 16 |
+
|
| 17 |
+
## Method actually used
|
| 18 |
+
|
| 19 |
+
Two four-shot baselines (English analysis and direct-answer modes) contribute low-weight votes and identify disagreements. Five thinking passes use the original option order, cyclic rotations, or an additional terminology instruction. A separate Mac thinking run contributes another vote. A deterministic, difficulty-specific weighted merge combines the saved answers. Rotated votes are ignored when the positional-option regex matches. The entire system is **not zero-shot**: the four-shot examples are supplied in [data/few_shot_examples.json](data/few_shot_examples.json).
|
| 20 |
+
|
| 21 |
+
| Source | Saved answers | Thinking | Output-token limit | Temperature | Option order |
|
| 22 |
+
|---|---:|---|---:|---:|---|
|
| 23 |
+
| CoT baseline | 2238 | false | 260 | 0 | Original; four examples |
|
| 24 |
+
| Direct baseline | 2238 | false | 15 | 0 | Original; four examples |
|
| 25 |
+
| Pass 1 | 2238 | true | 2048 | 0 | Original |
|
| 26 |
+
| Pass 2 | 1100 | true | 4096 | 0 | Rotation +1 |
|
| 27 |
+
| Pass 3 | 720 | true | 4096 | 0.1, top_p 0.95 | Original; terminology hint |
|
| 28 |
+
| Pass 4 | 712 | true | 4096 | 0 | Rotation +2 |
|
| 29 |
+
| Pass 5 | 712 | true | 4096 | 0 | Rotation +3 |
|
| 30 |
+
| Mac | 1160 | true | 2048 | 0 | Original |
|
| 31 |
+
|
| 32 |
+
The generation requests in the archived code do **not** specify an Ollama seed. `training/ensemble_v9.py` is the exact weighted merge logic, with added validation. Ties use `Counter.most_common`: the first answer encountered in the fixed source order among tied totals wins. This is not an unweighted majority vote.
|
| 33 |
+
|
| 34 |
+
## Parameters, hardware, and timing
|
| 35 |
+
|
| 36 |
+
- **Ollama-reported parameter count: 7,996,157,674 (approximately 7.996B)**, comprising **7,518,069,290** main-model parameters plus **478,088,384** projector parameters. Both Kaggle servers running Ollama **0.40.12** reported these same component counts. This sum is below 8,000,000,000.
|
| 37 |
+
- These are model-metadata counts; no models were loaded when the diagnostic was captured. Any additional loaded components and final eligibility can be verified by the organisers during reproduction. See [model_manifest.json](model_manifest.json).
|
| 38 |
+
- Historical hardware: Kaggle **2 × NVIDIA Tesla T4**, two Ollama servers, two concurrent requests per server; separate Apple Mac with **16 GB memory** reported by the participant. Exact Mac chip and historical runtime versions still need confirmation.
|
| 39 |
+
- The exported notebook shows Pass 4 at **106.4 minutes after 700/719 attempts**, and Pass 5 at **105.6 minutes after 700/719 attempts**, followed by completion messages. Each complete pass took longer than its last printed progress time. Complete end-to-end runtime was not recorded in the supplied export; no A100 timing is claimed.
|
| 40 |
+
|
| 41 |
+
## Verify the archived submission without running a model
|
| 42 |
+
|
| 43 |
+
From the repository root (Python 3.10+; standard library only):
|
| 44 |
+
|
| 45 |
+
```bash
|
| 46 |
+
python verify_submission.py
|
| 47 |
+
python training/ensemble_v9.py --out predictions_v9_rebuilt.jsonl
|
| 48 |
+
```
|
| 49 |
+
|
| 50 |
+
`verify_submission.py` checks hashes, unique identifiers, answer ranges and byte-identical replay. The saved positional keys are archival input-derived metadata, not labels. To independently regenerate that filter and inspect target sets:
|
| 51 |
+
|
| 52 |
+
```bash
|
| 53 |
+
python verify_submission.py --data /path/to/dataset
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
This verifies the saved result; it is **not** a substitute for the organisers' fresh-model reproduction check.
|
| 57 |
+
|
| 58 |
+
## Fresh inference reconstruction
|
| 59 |
+
|
| 60 |
+
This runner is an audited reconstruction of a multi-machine workflow, not a claim that one script originally produced v9 end-to-end. First provision the correct Ollama runtime and original model. Historical setup is preserved in the notebook under `training/evidence/`; it uses the Ollama installer/registry, which differs from the supplied Hugging-Face-only template. Do not silently replace the quantized model with upstream BF16 and claim equivalence. Download the complete team repository, including `training/src`.
|
| 61 |
|
|
|
|
| 62 |
```bash
|
| 63 |
pip install -r requirements.txt
|
| 64 |
+
mkdir -p rerun
|
| 65 |
+
cd rerun
|
| 66 |
+
python ../inference.py
|
| 67 |
```
|
| 68 |
+
|
| 69 |
+
The script obtains all JSON question files from `DATA_REPO` on Hugging Face, then uses local Ollama endpoints. Setup downloads happen before answering. For a local offline dataset use `--local-data /path/to/dataset`. Saved test predictions are never read by the default fresh-run path. Set `OLLAMA_HOSTS` to choose local servers and `WORKDIR` to select a fresh checkpoint directory. `LIMIT=2` provides a small smoke run per difficulty; it is not a full evaluation.
|
| 70 |
+
|
| 71 |
+
The submitted `predictions.jsonl` is protected against overwriting. Running from `rerun/` writes new answers there. A full fresh Mac pass traverses the entire priority queue: the original 1160-answer partial prefix is preserved only as historical evidence, not hard-coded as a test-count rule. Consequently the fresh pipeline is not guaranteed to produce the original votes or score.
|
| 72 |
+
|
| 73 |
+
## Contents
|
| 74 |
+
|
| 75 |
+
- `predictions.jsonl`: exact final leaderboard predictions (2238 rows).
|
| 76 |
+
- `inference.py`, `inference.ipynb`: reconstructed fresh-run workflow and a notebook wrapper using the same script.
|
| 77 |
+
- `training/ensemble_v9.py`, `training/passes/`: exact merge logic and its eight historical inputs.
|
| 78 |
+
- `training/kaggle_cells/`, `training/src/`: archived stage and prompt code; archive edits are disclosed.
|
| 79 |
+
- `training/evidence/`: participant-exported notebook, original Pass 4/5 source and output logs, observed environment versions.
|
| 80 |
+
- `data/few_shot_examples.json`: the embedded labelled examples used in the prompts; source URLs were not recorded in the code.
|
| 81 |
+
- `requirements.txt`, `ENVIRONMENT.md`: minimal tested reconstruction dependency and historical environment evidence.
|
| 82 |
+
- `submission_manifest.json`, `model_manifest.json`, `verify_submission.py`: provenance and verification.
|
| 83 |
+
- `REPRODUCIBILITY.md`: unresolved differences, template cross-check, and verification scope.
|
| 84 |
+
|
| 85 |
+
Additional data provenance and the history of prompt/vote selection require author confirmation; absence of test gold labels in these files is not by itself proof that no test-based tuning occurred.
|
REPRODUCIBILITY.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Reproduction and submission-template cross-check
|
| 2 |
+
|
| 3 |
+
## Verified preservation
|
| 4 |
+
|
| 5 |
+
The package's `predictions.jsonl` equals the member of `submission_think_ens_v9_final.zip` byte-for-byte. SHA-256: `0998ea38f240c05103a7572a9a367a553f4e2b7664a31fe70f5c9668214dd554`. It contains 2238 unique question keys and only answers 1–4. Both merge implementations produce the same answer for every question. The archived merge reproduces every byte.
|
| 6 |
+
|
| 7 |
+
## Original run versus reconstruction
|
| 8 |
+
|
| 9 |
+
1. **Mac prefix:** all 1160 saved Mac rows, including their sequence, exactly match the first 1160 questions from the original disagreement-first, Hard/Medium/Easy priority queue. The old reconstructed rule selected only 1100 (disagreements plus all Hard). The historical local script schedules all questions; there is no evidence of a deliberate rule to select the extra 60. The current reconstruction therefore traverses the full queue. It does not encode 1160 or question-specific keys as a new-data selection rule.
|
| 10 |
+
2. **Passes 4/5:** the supplied notebook confirms 719 targets, both loops completed, and the code omits requests with no parseable explicit answer or exhausted retries. Each saved pass has 712 answers. The seven omissions per pass are therefore consistent with the recorded skip behavior; the exact reason for each omission cannot be recovered from prediction-only checkpoints. They are intentionally absent from archival voting. The missing-key lists differ between the two passes.
|
| 11 |
+
3. **Targets:** rules computed from the saved model outputs exactly match all 1100 Pass-2 and 720 Pass-3 keys. The 720-key literal target list in the exported Pass-4/5 notebook is checked against the same rule. Regenerated model answers can change these sets.
|
| 12 |
+
4. **Model representation:** local Mac metadata uses an MLX safetensors representation with NVFP4 tensor metadata. The notebook's Kaggle downloads have different blob identities. Hardware/runtime/model hashes and context settings must be recovered to characterize cross-platform differences. Identical model tags do not guarantee identical quantizations or answers.
|
| 13 |
+
5. **Sampling:** historical Pass 3 uses temperature 0.1 and top_p 0.95, without an explicit seed. The reconstructed runner retains this fact. The interrupted reconstruction had added seed=42; that was removed because it was not in the original requests. Other recorded requests use temperature 0, which alone is not a guarantee of bit-identical outputs across runtimes.
|
| 14 |
+
6. **Error handling:** the repaired runner uses the archived request budgets, timeouts, retry counts and rotated-option fallback mapping. Errors and fallback answers are part of the historical method; adding extra retries or replacing ambiguous answers would change the pipeline. The archived Mac parser differs slightly from the Kaggle parser and is used for its stage.
|
| 15 |
+
7. **Source provenance:** the exported notebook includes setup and Passes 4/5, not original execution outputs for Passes 1–3 or Mac. The other cell scripts were already present in the interrupted package and cannot be independently authenticated from this notebook. The Pass-3 archive replaced an embedded Pass-1 answer string with a file read. Cell 5's empty placeholder was repaired by recomputing its selection rule; the literal original is separately preserved in `training/evidence/`.
|
| 16 |
+
|
| 17 |
+
## Organiser instructions: status
|
| 18 |
+
|
| 19 |
+
| Requirement | Evidence/status |
|
| 20 |
+
|---|---|
|
| 21 |
+
| Repository `team-<teamname>` in organisation | Git remote points to `SinhalaMMLU-SharedTask/team-riswan`; local preparation does not prove upload |
|
| 22 |
+
| Exact final predictions | Verified byte-for-byte; submission #138 |
|
| 23 |
+
| Actual generation scripts | Original exported notebook plus archived stage scripts provided; full historical execution provenance incomplete |
|
| 24 |
+
| Packages and versions | Original exported package subset retained; reconstruction dependency pinned and tested separately |
|
| 25 |
+
| Team/model/count/hardware/runtime/links | README includes evidence and explicitly marks missing details |
|
| 26 |
+
| Training/data-preparation code and extra data | Prompt examples, selection/rotation/merge code included; no parameter training evidenced in this pipeline; example provenance needs confirmation |
|
| 27 |
+
| Separate model/adapter repos if trained | No trained model or adapter evidenced; no such repository currently provided |
|
| 28 |
+
| Fresh environment end-to-end model run | Not completed; CPU replay/import checks do not satisfy this |
|
| 29 |
+
| Download everything from Hugging Face in script | Historical Ollama registry/installer differs; no exception confirmed |
|
| 30 |
+
| No sampling and fixed seed | Historical Pass 3 differs; no exception confirmed |
|
| 31 |
+
| Parameter count | Ollama reports 7,518,069,290 main-model + 478,088,384 projector = **7,996,157,674**, below 8B. This is metadata; organisers can verify additional loaded components during reproduction. |
|
| 32 |
+
| No tuning/prompt design on test questions | Must be assessed from actual experiment history; lack of parameter updates does not establish compliance |
|
| 33 |
+
|
| 34 |
+
Changing the model backend, temperature, historical vote weights, or stage coverage after submission cannot retroactively prove how the submitted score was produced. Any alternative implementation must be labelled as such and separately evaluated. The final eligibility decision belongs to the organisers.
|
| 35 |
+
|
| 36 |
+
## Verification scope
|
| 37 |
+
|
| 38 |
+
`verify_submission.py` is a no-model audit of historical artifacts. `--data` additionally verifies selection rules and prompt-data exact-text overlap (not semantic contamination). It does not access hidden gold answers. Regression checks use fabricated questions and scripted local responses; they establish plumbing behavior only, never model accuracy. See the packaged verification report for checks actually run.
|
| 39 |
+
|
| 40 |
+
## Packaging checks completed on 28 October 2026
|
| 41 |
+
|
| 42 |
+
- Isolated environment installation of `huggingface_hub==2.3.0` succeeded.
|
| 43 |
+
- Remote loader fetched 41 JSON files / 2238 questions; question text, choices and keys matched the local dataset.
|
| 44 |
+
- Both command-line replay paths reproduced the submitted prediction bytes.
|
| 45 |
+
- Seven regression tests passed using fabricated inputs and scripted responses. Run `python -B checks/test_reconstruction.py` to repeat them.
|
| 46 |
+
- Literal target indices from the supplied notebook matched the computed 720-question disagreement set.
|
| 47 |
+
- Exact normalized question-text comparison found no matches between embedded examples and the competition questions; this does not prove absence of semantic overlap or test-based tuning.
|
| 48 |
+
- Python syntax and notebook JSON checked; no credential-pattern hits found in package files.
|
| 49 |
+
- No GPU/model rerun, Hugging Face upload or organiser approval was performed by this packaging audit.
|
checks/test_reconstruction.py
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import importlib.util,json,tempfile,unittest,sys,subprocess,os
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
from unittest.mock import patch
|
| 4 |
+
P=Path(__file__).resolve().parents[1]
|
| 5 |
+
s=importlib.util.spec_from_file_location('inf',P/'inference.py');inf=importlib.util.module_from_spec(s);s.loader.exec_module(inf)
|
| 6 |
+
Q={'q_no':1,'question':'Example?','subject':'Demo','category':'stem','choices':['a','b','c','d'],'_level':'easy','_file':'easy/demo.json'}
|
| 7 |
+
class PipelineTests(unittest.TestCase):
|
| 8 |
+
def test_rotation_mapping_and_fallback(self):
|
| 9 |
+
k=inf.kof(Q)
|
| 10 |
+
with tempfile.TemporaryDirectory() as d:
|
| 11 |
+
with patch.object(inf,'chat',return_value=('no answer','')) as c:
|
| 12 |
+
result=inf.stage_rot([Q],['http://127.0.0.1:11434'],1,Path(d),1,'pass2','p2.jsonl',{k:'4'},{k:'3'})
|
| 13 |
+
self.assertEqual(result[k],'2'); self.assertEqual(c.call_args.args[-1],300);self.assertEqual(c.call_count,1)
|
| 14 |
+
with patch.object(inf,'chat',return_value=('no answer','')):
|
| 15 |
+
self.assertEqual(inf.stage_rot([Q],['http://127.0.0.1:11434'],1,Path(d),2,'p4','p4.jsonl',{k:'4'},{k:'3'},False),{})
|
| 16 |
+
def test_pass3_preserves_actual_sampling(self):
|
| 17 |
+
with tempfile.TemporaryDirectory() as d,patch.object(inf,'chat',return_value=('Answer: 2','')) as c:
|
| 18 |
+
inf.stage_pass3([Q],['http://127.0.0.1:11434'],1,Path(d),{inf.kof(Q):'4'})
|
| 19 |
+
self.assertEqual(c.call_args.args[4],{'temperature':0.1,'top_p':0.95,'num_predict':4096})
|
| 20 |
+
def test_transport_does_not_invent_seed(self):
|
| 21 |
+
from io import BytesIO
|
| 22 |
+
with patch.object(inf._OPENER,'open',return_value=BytesIO(b'{"message":{"content":"Answer: 2"}}')) as op:
|
| 23 |
+
inf.chat('http://127.0.0.1:11434','s','u',True,{'temperature':0.1})
|
| 24 |
+
payload=json.loads(op.call_args.args[0].data)
|
| 25 |
+
self.assertNotIn('seed',payload['options'])
|
| 26 |
+
def test_loader_row_order_and_duplicates(self):
|
| 27 |
+
rows=[{**Q,'_file':'hard/b.json','_level':'hard'}, {**Q,'_file':'easy/a.json'}]
|
| 28 |
+
self.assertEqual([q['_file'] for q in inf.prepare(rows)],['hard/b.json','easy/a.json'])
|
| 29 |
+
with self.assertRaises(ValueError): inf.prepare([dict(Q),dict(Q)])
|
| 30 |
+
def test_missing_or_duplicate_checkpoint_fails(self):
|
| 31 |
+
with tempfile.TemporaryDirectory() as d:
|
| 32 |
+
p=Path(d)/'p.jsonl'
|
| 33 |
+
with self.assertRaises(FileNotFoundError):inf.load_ck(p,required=True)
|
| 34 |
+
r={'q_no':1,'subject':'Demo','category':'stem','level':'easy','answer':'1'};p.write_text((json.dumps(r)+'\n')*2)
|
| 35 |
+
with self.assertRaises(ValueError):inf.load_ck(p)
|
| 36 |
+
def test_protect_submitted_file(self):
|
| 37 |
+
old=(P/'predictions.jsonl').read_bytes()
|
| 38 |
+
r=subprocess.run([sys.executable,'-B',str(P/'inference.py'),'--output',str(P/'predictions.jsonl')],capture_output=True,text=True)
|
| 39 |
+
self.assertNotEqual(r.returncode,0);self.assertIn('Do not overwrite',r.stderr);self.assertEqual(old,(P/'predictions.jsonl').read_bytes())
|
| 40 |
+
def test_full_orchestration_with_scripted_responses(self):
|
| 41 |
+
# Tests all stage orchestration on fabricated data. No actual model or competition answers.
|
| 42 |
+
with tempfile.TemporaryDirectory() as td:
|
| 43 |
+
root=Path(td);data=root/'data'
|
| 44 |
+
for level in ['easy','medium','hard']:
|
| 45 |
+
(data/level).mkdir(parents=True)
|
| 46 |
+
(data/level/'demo.json').write_text(json.dumps([{'q_no':1,'subject':'Demo','category':'stem','question':'Example?','choices':['a','b','c','d']}]))
|
| 47 |
+
calls=[]
|
| 48 |
+
def chat(host,system,user,think,options,timeout=420):
|
| 49 |
+
calls.append(options)
|
| 50 |
+
if not think:return ('Answer: 1' if options['num_predict']==260 else '2','')
|
| 51 |
+
return ('Answer: 3','')
|
| 52 |
+
env={'WORKDIR':str(root/'ck'),'WORKERS':'1','OLLAMA_HOSTS':'http://127.0.0.1:11434'}
|
| 53 |
+
with patch.dict(os.environ,env),patch.object(sys,'argv',['inference.py','--local-data',str(data),'--output',str(root/'out.jsonl')]),patch.object(inf,'ensure_ollama'),patch.object(inf,'chat',side_effect=chat):
|
| 54 |
+
inf.main()
|
| 55 |
+
answers=[json.loads(l) for l in (root/'out.jsonl').read_text().splitlines()]
|
| 56 |
+
self.assertEqual(len(answers),3); self.assertTrue(any(x.get('temperature')==0.1 for x in calls))
|
| 57 |
+
before=len(calls)
|
| 58 |
+
with patch.dict(os.environ,env),patch.object(sys,'argv',['inference.py','--local-data',str(data),'--output',str(root/'out2.jsonl')]),patch.object(inf,'ensure_ollama'),patch.object(inf,'chat',side_effect=chat):inf.main()
|
| 59 |
+
self.assertEqual(len(calls),before)
|
| 60 |
+
if __name__=='__main__':unittest.main(verbosity=2)
|
data/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# In-context examples
|
| 2 |
+
|
| 3 |
+
`few_shot_examples.json` is an exact data export of `EXEMPLARS_BY_DOMAIN` in `training/src/few_shot_prompts.py`. It includes question text, choices, answer and supplied English/Tamil explanations. The baseline builder chooses four examples from the category, with a global fallback; this is in-context data, not a parameter-training dataset.
|
| 4 |
+
|
| 5 |
+
Source URLs, authorship and licences were not recorded in the code and remain to be confirmed by the participant. Existing source comments about external origin are not independent verification. No hidden competition answer key is included or used for the package audit.
|
data/few_shot_examples.json
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"humanities": [
|
| 3 |
+
{
|
| 4 |
+
"question": "අනුරාධපුර රාජධානියේ පළමු රජු ලෙස සැලකෙන්නේ කවුරුන්ද?",
|
| 5 |
+
"choices": [
|
| 6 |
+
"දේවානම්පියතිස්ස රජු",
|
| 7 |
+
"පණ්ඩුකාභය රජු",
|
| 8 |
+
"දුටුගැමුණු රජු",
|
| 9 |
+
"වළගම්බා රජු"
|
| 10 |
+
],
|
| 11 |
+
"analysis": "The question asks who is considered the first king of the Anuradhapura Kingdom. Options: (1) Devanampiyatissa, (2) Pandukabhaya, (3) Dutugemunu, (4) Valagamba. King Pandukabhaya founded Anuradhapura as the capital and was its first king.",
|
| 12 |
+
"analysis_ta": "வினா: அனுராதபுர இராச்சியத்தின் முதல் மன்னராகக் கருதப்படுபவர் யார்? தெரிவுகள்: (1) தேவநம்பியதிஸ்ஸ, (2) பண்டுகாபய, (3) துட்டகைமுனு, (4) வலகம்பா. அனுராதபுரத்தைத் தலைநகராகக் கொண்டு ஆட்சி செய்த முதல் மன்னன் பண்டுகாபய ஆவார்.",
|
| 13 |
+
"answer": "2"
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"question": "මහාචාර්ය එදිරිවීර සරච්චන්ද්රයන් විසින් රචිත ප්රකට ශෛලිගත නාට්යය කුමක්ද?",
|
| 17 |
+
"choices": [
|
| 18 |
+
"කැලණි පාලම",
|
| 19 |
+
"හුණුවටයේ කතාව",
|
| 20 |
+
"සුබ සහ යස",
|
| 21 |
+
"මනමේ"
|
| 22 |
+
],
|
| 23 |
+
"analysis": "The question asks for the famous stylized drama written by Prof. Ediriweera Sarachchandra. Options: (1) Kelani Palama, (2) Hunuwataye Kathawa, (3) Suba saha Yasa, (4) Maname. Maname (1956) is Sarachchandra's iconic stylized drama.",
|
| 24 |
+
"analysis_ta": "வினா: பேராசிரியர் எதிரிவீர சரச்சந்திரவால் எழுதப்பட்ட புகழ்பெற்ற நாடகம் எது? தெரிவுகள்: (1) களனி பாலம, (2) ஹுனுவட்டயே கதாவ, (3) சுப சஹ யச, (4) மனமே. 'மனமே' (1956) சரச்சந்திரவின் புகழ்பெற்ற நாடகமாகும்.",
|
| 25 |
+
"answer": "4"
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"question": "සිදුහත් කුමරු ගිහිගෙය හැර යාමේ සිදුවීම බෞද්ධ සාහිත්යයේ හඳුන්වනු ලබන්නේ කුමන නමකින්ද?",
|
| 29 |
+
"choices": [
|
| 30 |
+
"මහාභිනිෂ්ක්රමණය",
|
| 31 |
+
"ධම්මචක්කප්පවත්තනය",
|
| 32 |
+
"මහා පරිනිර්වාණය",
|
| 33 |
+
"සම්බෝධිය"
|
| 34 |
+
],
|
| 35 |
+
"analysis": "The question asks how Prince Siddhartha's renunciation of worldly life is known in Buddhist literature. Options: (1) Mahabinishkramanaya (Great Renunciation), (2) Dhammacakkappavattana, (3) Maha Parinirvana, (4) Sambodhi. Renunciation is Mahabinishkramanaya.",
|
| 36 |
+
"analysis_ta": "வினா: சித்தார்த்த இளவரசர் இல்லற வாழ்வைத் துறந்த நிகழ்வு பௌத்த இலக்கியத்தில் எவ்வாறு அழைக்கப்படுகிறது? தெரிவுகள்: (1) மஹாபினிஷ்கிரமணய (மகா துறவு), (2) தம்மசக்கப்பவத்தன, (3) மகா பரிநிர்வாணம், (4) சம்போதி. இல்லறத் துறவு மஹாபினிஷ்கிரமணய எனப்படும்.",
|
| 37 |
+
"answer": "1"
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"question": "උඩරට නර්තන සම්ප්රදායේ ප්රධානතම අවනද්ධ භාණ්ඩය කුමක්ද?",
|
| 41 |
+
"choices": [
|
| 42 |
+
"දවුල",
|
| 43 |
+
"තම්මැට්ටම",
|
| 44 |
+
"ගැට බෙරය",
|
| 45 |
+
"යක් බෙරය"
|
| 46 |
+
],
|
| 47 |
+
"analysis": "The question asks for the main percussion drum of the Kandyan (Udarata) dance tradition. Options: (1) Dawula, (2) Thammattama, (3) Geta Beraya, (4) Yak Beraya. Geta Beraya is the primary drum of Kandyan dance.",
|
| 48 |
+
"analysis_ta": "வினா: கண்டிய (உடரட்ட) நடன மரபின் முக்கிய தோற்கருவி எது? தெரிவுகள்: (1) தவுல, (2) தம்மட்டம, (3) கெட்ட பெரய, (4) யக் பெரய. கண்டிய நடனத்தின் பிரதான மேளம் கெட்ட பெரய ஆகும்.",
|
| 49 |
+
"answer": "3"
|
| 50 |
+
}
|
| 51 |
+
],
|
| 52 |
+
"stem": [
|
| 53 |
+
{
|
| 54 |
+
"question": "ශා�� ප්රභාසංශ්ලේෂණ ක්රියාවලියේදී අතුරු ඵලයක් ලෙස පරිසරයට නිදහස් වන වායුව කුමක්ද?",
|
| 55 |
+
"choices": [
|
| 56 |
+
"කාබන් ඩයොක්සයිඩ්",
|
| 57 |
+
"ඔක්සිජන්",
|
| 58 |
+
"නයිට්රජන්",
|
| 59 |
+
"හයිඩ්රජන්"
|
| 60 |
+
],
|
| 61 |
+
"analysis": "The question asks which gas is released as a byproduct of plant photosynthesis. Options: (1) Carbon dioxide, (2) Oxygen, (3) Nitrogen, (4) Hydrogen. Photosynthesis absorbs CO2 and releases Oxygen.",
|
| 62 |
+
"analysis_ta": "வினா: தாவர ஒளித்தொகுப்பின் போது பக்க விளைபொருளாகச் சூழலுக்கு விடுவிக்கப்படும் வாயு எது? தெரிவுகள்: (1) காபீரனீரொட்சைட்டு, (2) ஒட்சிசன், (3) நைதரசன், (4) ஐதரசன். ஒளித்தொகுப்பின் போது ஒட்சிசன் வாயு வெளியேற்றப்படுகிறது.",
|
| 63 |
+
"answer": "2"
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"question": "විද්යුත් ධාරාව මැනීම සඳහා භාවිත කරන ජාත්යන්තර සම්මත (SI) ඒකකය කුමක්ද?",
|
| 67 |
+
"choices": [
|
| 68 |
+
"වෝල්ට් (V)",
|
| 69 |
+
"ඕම් (Ω)",
|
| 70 |
+
"වොට් (W)",
|
| 71 |
+
"ඇම්පියර් (A)"
|
| 72 |
+
],
|
| 73 |
+
"analysis": "The question asks for the SI unit used to measure electric current. Options: (1) Volt, (2) Ohm, (3) Watt, (4) Ampere. Electric current is measured in Amperes (A).",
|
| 74 |
+
"analysis_ta": "வினா: மின்னோட்டத்தை அளவிடப் பயன்படும் சர்வதேச நியம (SI) அலகு யாது? தெரிவுகள்: (1) வோல்ட் (V), (2) ஓம் (Ω), (3) வாட் (W), (4) அம்பியர் (A). மின்னோட்டத்தின் SI அலகு அம்பியர் (A) ஆகும்.",
|
| 75 |
+
"answer": "4"
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"question": "ජලයේ රසායනික සූත්රය නිවැරදිව දක්වා ඇත්තේ කවරේද?",
|
| 79 |
+
"choices": [
|
| 80 |
+
"H2O",
|
| 81 |
+
"CO2",
|
| 82 |
+
"NaCl",
|
| 83 |
+
"CH4"
|
| 84 |
+
],
|
| 85 |
+
"analysis": "The question asks for the chemical formula of water. Options: (1) H2O, (2) CO2, (3) NaCl, (4) CH4. Water is H2O.",
|
| 86 |
+
"analysis_ta": "வினா: நீரின் இரசாயனச் சூத்திரம் எது? தெரிவுகள்: (1) H2O, (2) CO2, (3) NaCl, (4) CH4. நீரின் இரசாயனச் சூத்திரம் H2O ஆகும்.",
|
| 87 |
+
"answer": "1"
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"question": "දිග මැනීම සඳහා භාවිත වන ජාත්යන්තර සම්මත (SI) ඒකකය කුමක්ද?",
|
| 91 |
+
"choices": [
|
| 92 |
+
"මිලිමීටර්",
|
| 93 |
+
"සෙන්ටිමීටර්",
|
| 94 |
+
"මීටර්",
|
| 95 |
+
"කිලෝමීටර්"
|
| 96 |
+
],
|
| 97 |
+
"analysis": "The question asks for the SI base unit of length. Options: (1) millimeter, (2) centimeter, (3) meter, (4) kilometer. The SI base unit of length is the meter.",
|
| 98 |
+
"analysis_ta": "வினா: நீளத்தை அளவிடப் பயன்படும் சர்வதேச நியம (SI) அலகு எது? தெரிவுகள்: (1) மில்லிமீற்றர், (2) சென்ரிமீற்றர், (3) மீற்றர், (4) கிலோமீற்றர். நீளத்தின் SI அடிப்படை அலகு மீற்றர் ஆகும்.",
|
| 99 |
+
"answer": "3"
|
| 100 |
+
}
|
| 101 |
+
],
|
| 102 |
+
"social_science": [
|
| 103 |
+
{
|
| 104 |
+
"question": "ශ්රී ලංකාවේ මුදල් නෝට්ටු නිකුත් කිරීමේ නිල බලය හිමි ආයතනය කුමක්ද?",
|
| 105 |
+
"choices": [
|
| 106 |
+
"මුදල් අමාත්යාංශය",
|
| 107 |
+
"ශ්රී ලංකා මහ බැංකුව",
|
| 108 |
+
"ලංකා බැංකුව",
|
| 109 |
+
"මහා භාණ්ඩාගාරය"
|
| 110 |
+
],
|
| 111 |
+
"analysis": "The question asks which institution has official authority to issue currency notes in Sri Lanka. Options: (1) Ministry of Finance, (2) Central Bank of Sri Lanka, (3) Bank of Ceylon, (4) General Treasury. The Central Bank of Sri Lanka issues currency.",
|
| 112 |
+
"analysis_ta": "வினா: இலங்கையில் நாணயத்தாள்களை வெளியிடும் அதிகாரம் கொண்ட நிறுவனம் எது? தெரிவுகள்: (1) நிதி அமைச்சு, (2) இலங்கை மத்திய வங��கி, (3) இலங்கை வங்கி, (4) மகா திறைசேரி. இலங்கை மத்திய வங்கியே நாணயத்தாள்களை வெளியிடுகிறது.",
|
| 113 |
+
"answer": "2"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"question": "නිෂ්පාදන සාධක සතරට අයත් නොවන සාධකය තෝරන්න.",
|
| 117 |
+
"choices": [
|
| 118 |
+
"භූමිය",
|
| 119 |
+
"ශ්රමය",
|
| 120 |
+
"ප්රාග්ධනය",
|
| 121 |
+
"උද්ධමනය"
|
| 122 |
+
],
|
| 123 |
+
"analysis": "The question asks which item does NOT belong to the four factors of production. Options: (1) Land, (2) Labor, (3) Capital, (4) Inflation. Land, labor, capital, and entrepreneurship are factors of production; inflation is not.",
|
| 124 |
+
"analysis_ta": "வினா: நான்கு உற்பத்திக் காரணிகளில் அடங்காத ஒன்றைத் தெரிவு செய்க. தெரிவுகள்: (1) நிலம், (2) உழைப்பு, (3) மூலதனம், (4) பணவீக்கம். நிலம், உழைப்பு, மூலதனம், முயற்சியாண்மை என்பன உற்பத்திக் காரணிகள்; பணவீக்கம் உற்பத்திக் காரணி அல்ல.",
|
| 125 |
+
"answer": "4"
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"question": "ශ්රී ලංකාවේ දිගම ගංගාව කුමක්ද?",
|
| 129 |
+
"choices": [
|
| 130 |
+
"මහවැලි ගඟ",
|
| 131 |
+
"කැලණි ගඟ",
|
| 132 |
+
"කළු ගඟ",
|
| 133 |
+
"වලවේ ගඟ"
|
| 134 |
+
],
|
| 135 |
+
"analysis": "The question asks for the longest river in Sri Lanka. Options: (1) Mahaweli River, (2) Kelani River, (3) Kalu River, (4) Walawe River. Mahaweli River (335 km) is the longest.",
|
| 136 |
+
"analysis_ta": "வினா: இலங்கையின் மிக நீளமான ஆறு எது? தெரிவுகள்: (1) மகாவலி கங்கை, (2) களனி கங்கை, (3) களு கங்கை, (4) வளவை கங்கை. மகாவலி கங்கை (335 கி.மீ) இலங்கையின் மிக நீளமான ஆறாகும்.",
|
| 137 |
+
"answer": "1"
|
| 138 |
+
},
|
| 139 |
+
{
|
| 140 |
+
"question": "ශ්රී ලංකාවේ භූමි ප්රමාණය අනුව විශාලතම පළාත කුමක්ද?",
|
| 141 |
+
"choices": [
|
| 142 |
+
"බස්නාහිර පළාත",
|
| 143 |
+
"වයඹ පළාත",
|
| 144 |
+
"උතුරු මැද පළාත",
|
| 145 |
+
"දකුණු පළාත"
|
| 146 |
+
],
|
| 147 |
+
"analysis": "The question asks for the largest province in Sri Lanka by land area. Options: (1) Western, (2) North Western, (3) North Central, (4) Southern. North Central Province is the largest by area.",
|
| 148 |
+
"analysis_ta": "வினா: நிலப்பரப்பின் அடிப்படையில் இலங்கையின் மிகப்பெரிய மாகாணம் எது? தெரிவுகள்: (1) மேல் மாகாணம், (2) வயம்ப மாகாணம், (3) வடமத்திய மாகாணம், (4) தென் மாகாணம். வடமத்திய மாகாணமே நிலப்பரப்பில் மிகப்பெரியது.",
|
| 149 |
+
"answer": "3"
|
| 150 |
+
}
|
| 151 |
+
],
|
| 152 |
+
"language": [
|
| 153 |
+
{
|
| 154 |
+
"question": "'ගම්පෙරළිය' නවකතාව රචනා කළ ලේඛකයා කවුරුන්ද?",
|
| 155 |
+
"choices": [
|
| 156 |
+
"කුමාරතුංග මුනිදාස",
|
| 157 |
+
"මාර්ටින් වික්රමසිංහ",
|
| 158 |
+
"ඩබ්ලියු. ඒ. සිල්වා",
|
| 159 |
+
"පියදාස සිරිසේන"
|
| 160 |
+
],
|
| 161 |
+
"analysis": "The question asks who wrote the Sinhala novel 'Gamperaliya'. Options: (1) Kumaratunga Munidasa, (2) Martin Wickramasinghe, (3) W. A. Silva, (4) Piyadasa Sirisena. Gamperaliya was written by Martin Wickramasinghe.",
|
| 162 |
+
"analysis_ta": "வினா: 'கம்பெரலிய' நாவலை எழுதிய ஆசிரியர் யார்? தெரிவுகள்: (1) குமாரதுங்க முனிதாச, (2) மார்ட்டின் விக்கிரமசிங்க, (3) டபிள்யூ. ஏ. சில்வா, (4) பியதாச சிறிசேன. கம்பெரலிய நாவலை எழுதியவர் மார்ட்டின் விக்கிரமசிங்க ஆவார்.",
|
| 163 |
+
"answer": "2"
|
| 164 |
+
},
|
| 165 |
+
{
|
| 166 |
+
"question": "සිංහල ව්යාකරණයට අනුව උක්ත ආඛ්යාත සම්බන්ධය නිවැරදි වාක්යය තෝරන්න.",
|
| 167 |
+
"choices": [
|
| 168 |
+
"ළමයි පොත් කියවයි.",
|
| 169 |
+
"මම පාසල් ගියෝය.",
|
| 170 |
+
"අපි ගීත ගයති.",
|
| 171 |
+
"ගොවියෝ කුඹුරු කොටති."
|
| 172 |
+
],
|
| 173 |
+
"analysis": "The question asks for the grammatically correct Sinhala subject-verb agreement. Options 1, 2, 3 mismatch plural/first-person subjects with third-person singular/plural verbs. Option 4 ('ගොවියෝ කුඹුරු කොටති') correctly pairs plural animate subject 'ගොවියෝ' with plural verb 'කොටති'.",
|
| 174 |
+
"analysis_ta": "வினா: சிங்கள இலக்கணத்தின்படி எழுவாய்-பயனிலை இயைபு சரியாக உள்ள வாக்கியத்தைத் தெரிவு செய்க. 4-வது தெரிவு ('ගොවියෝ කුඹුරු කොටති') பன்மை எழுவாயுடன் ('ගොවියෝ') பன்மை வினைமுற்றை ('කොටති') சரியாக இணைக்கிறது.",
|
| 175 |
+
"answer": "4"
|
| 176 |
+
},
|
| 177 |
+
{
|
| 178 |
+
"question": "නූතන සම්මත සිංහල වර්ණ මාලාවේ අඩංගු මුළු අක්ෂර ගණන කීයද?",
|
| 179 |
+
"choices": [
|
| 180 |
+
"60 කි.",
|
| 181 |
+
"54 කි.",
|
| 182 |
+
"36 කි.",
|
| 183 |
+
"42 කි."
|
| 184 |
+
],
|
| 185 |
+
"analysis": "The question asks for the total number of letters in the modern standard Sinhala alphabet (Nuthana Sinhala Varnamalawa). It contains 60 letters.",
|
| 186 |
+
"analysis_ta": "வினா: நவீன நியம சிங்கள நெடுங்கணக்கில் உள்ள மொத்த எழுத்துக்களின் எண்ணிக்கை யாது? தெரிவுகள்: (1) 60, (2) 54, (3) 36, (4) 42. நவீன சிங்கள நெடுங்கணக்கில் மொத்தம் 60 எழுத்துக்கள் உள்ளன.",
|
| 187 |
+
"answer": "1"
|
| 188 |
+
},
|
| 189 |
+
{
|
| 190 |
+
"question": "'හිරු' යන පදයට සමානාර්ථ පදයක් නොවන්නේ කුමක්ද?",
|
| 191 |
+
"choices": [
|
| 192 |
+
"සූර්යයා",
|
| 193 |
+
"දිනකර",
|
| 194 |
+
"නිශාකර",
|
| 195 |
+
"රවි"
|
| 196 |
+
],
|
| 197 |
+
"analysis": "The question asks which word is NOT a synonym for 'Hiru' (Sun). Options: (1) Suryaya (Sun), (2) Dinakara (Sun), (3) Nishakara (Moon - night maker), (4) Ravi (Sun). Nishakara means Moon, not Sun.",
|
| 198 |
+
"analysis_ta": "வினா: 'ஹிரு' (சூரியன்) என்ற சொல்லுக்கு ஒத்த கருத்துச் சொல் அல்லாதது எது? தெரிவுகள்: (1) சூர்யயா (சூரியன்), (2) தினகர (சூரியன்), (3) நிஷாகர (சந்திரன்), (4) ரவி (சூரியன்). நிஷாகர என்பது சந்திரனைக் குறிக்கும்.",
|
| 199 |
+
"answer": "3"
|
| 200 |
+
}
|
| 201 |
+
],
|
| 202 |
+
"other": [
|
| 203 |
+
{
|
| 204 |
+
"question": "මිනිස් සිරුරේ වර්ධනයට සහ පටක අලුත්වැඩියාවට ප්රධාන වශයෙන් අවශ්ය වන පෝෂකය කුමක්ද?",
|
| 205 |
+
"choices": [
|
| 206 |
+
"කාබෝහයිඩ්රේට්",
|
| 207 |
+
"ප්රෝටීන්",
|
| 208 |
+
"ලිපිඩ",
|
| 209 |
+
"ඛනිජ ලවණ"
|
| 210 |
+
],
|
| 211 |
+
"analysis": "The question asks which nutrient is primarily needed for human body growth and tissue repair. Options: (1) Carbohydrates, (2) Proteins, (3) Lipids, (4) Minerals. Proteins are responsible for growth and tissue repair.",
|
| 212 |
+
"analysis_ta": "வினா: மனித உடல் வளர்ச்சிக்கும் இழையங்களைப் பழுதுபார்த்தலுக்கும் பிரதானமாகத் தேவைப்படும் போசணைப் பொருள் எது? தெரிவுகள்: (1) காபோவைதரேற்று, (2) புரதம், (3) இலிப்பிட்டு, (4) கனியுப்பு. புரதமே உடல் வளர்ச்சிக்குப் பிரதானமாகத் தேவைப்படுகிறது.",
|
| 213 |
+
"answer": "2"
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"question": "සමබල ආහාර වේලක අඩංගු විය යුතු සංඝටකයක් නොවන්නේ කුමක්ද?",
|
| 217 |
+
"choices": [
|
| 218 |
+
"විටමින්",
|
| 219 |
+
"ප්රෝටීන්",
|
| 220 |
+
"ජලය",
|
| 221 |
+
"කෘත්රිම වර්ණක"
|
| 222 |
+
],
|
| 223 |
+
"analysis": "The question asks what is NOT an essential component of a balanced diet. Options: (1) Vitamins, (2) Proteins, (3) Water, (4) Artificial colorings. Artificial colorings are not part of a healthy balanced diet.",
|
| 224 |
+
"analysis_ta": "வினா: சமநிலை உணவில் அடங்கக்கூடாத கூறு எது? தெரிவுகள்: (1) விற்றமின், (2) புரதம், (3) நீர், (4) செயற்கை நிறமூட்டிகள். செயற்கை நிறமூட்டிகள் சமநிலை உணவின் கூறு அல்ல.",
|
| 225 |
+
"answer": "4"
|
| 226 |
+
},
|
| 227 |
+
{
|
| 228 |
+
"question": "පරිගණකයක මධ්ය සැකසුම් ඒකකය හඳුන්වන කෙටි නාමය කුමක්ද?",
|
| 229 |
+
"choices": [
|
| 230 |
+
"CPU",
|
| 231 |
+
"RAM",
|
| 232 |
+
"ROM",
|
| 233 |
+
"USB"
|
| 234 |
+
],
|
| 235 |
+
"analysis": "The question asks for the abbreviation of a computer's Central Processing Unit. It is CPU.",
|
| 236 |
+
"analysis_ta": "வினா: கணினியின் மையச் செயற்பாட்டு அலகைக் குறிக்கும் சுருக்கப் பெயர் யாது? அது CPU ஆகும்.",
|
| 237 |
+
"answer": "1"
|
| 238 |
+
},
|
| 239 |
+
{
|
| 240 |
+
"question": "ශාක වර්ධනය සඳහා අත්යවශ්ය මහා පෝෂක තුන වන්නේ,",
|
| 241 |
+
"choices": [
|
| 242 |
+
"යකඩ, තඹ, සින්ක්",
|
| 243 |
+
"කැල්සියම්, මැග්නීසියම්, ගෙන්දගම්",
|
| 244 |
+
"නයිට්රජන්, පොස්පරස්, පොටෑසියම්",
|
| 245 |
+
"බෝරෝන්, මැංගනීස්, ක්ලෝරීන්"
|
| 246 |
+
],
|
| 247 |
+
"analysis": "The question asks for the three primary macronutrients essential for plant growth. Options: (3) Nitrogen, Phosphorus, Potassium (NPK). NPK are the three primary macronutrients.",
|
| 248 |
+
"analysis_ta": "வினா: தாவர வளர்ச்சிக்கு அத்தியாவசியமான மூன்று மாபோசணைப் பதார்த்தங்கள் யாவை? தெரிவு (3) நைதரசன், பொசுபரசு, பொட்டாசியம் (NPK) ஆகும்.",
|
| 249 |
+
"answer": "3"
|
| 250 |
+
}
|
| 251 |
+
]
|
| 252 |
+
}
|
inference.ipynb
CHANGED
|
@@ -4,41 +4,51 @@
|
|
| 4 |
"cell_type": "markdown",
|
| 5 |
"metadata": {},
|
| 6 |
"source": [
|
| 7 |
-
"#
|
| 8 |
-
"
|
| 9 |
-
"
|
| 10 |
-
|
| 11 |
-
|
| 12 |
},
|
| 13 |
{
|
| 14 |
"cell_type": "code",
|
| 15 |
-
"execution_count": null,
|
| 16 |
"metadata": {},
|
|
|
|
| 17 |
"outputs": [],
|
| 18 |
"source": [
|
| 19 |
-
"
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
},
|
| 22 |
{
|
| 23 |
"cell_type": "code",
|
| 24 |
-
"execution_count": null,
|
| 25 |
"metadata": {},
|
|
|
|
| 26 |
"outputs": [],
|
| 27 |
"source": [
|
| 28 |
-
"
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
}
|
| 31 |
],
|
| 32 |
"metadata": {
|
| 33 |
-
"language_info": {
|
| 34 |
-
"name": "python"
|
| 35 |
-
},
|
| 36 |
"kernelspec": {
|
| 37 |
"display_name": "Python 3",
|
| 38 |
"language": "python",
|
| 39 |
"name": "python3"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
}
|
| 41 |
},
|
| 42 |
"nbformat": 4,
|
| 43 |
-
"nbformat_minor":
|
| 44 |
-
}
|
|
|
|
| 4 |
"cell_type": "markdown",
|
| 5 |
"metadata": {},
|
| 6 |
"source": [
|
| 7 |
+
"# SinhalaMMLU — team-riswan, submission #138\n",
|
| 8 |
+
"This notebook runs the reconstructed Ollama pipeline from this repository. Read README.md and REPRODUCIBILITY.md first. Fresh model reproduction is unverified; Pass 3 retains historical sampling. The exact submitted predictions stay untouched.\n",
|
| 9 |
+
"Provision the original Ollama model/runtime before running the last cell. The model setup currently differs from the organisers' Hugging-Face-only template; approval is outstanding.\n"
|
| 10 |
+
],
|
| 11 |
+
"id": "team-riswan-0"
|
| 12 |
},
|
| 13 |
{
|
| 14 |
"cell_type": "code",
|
|
|
|
| 15 |
"metadata": {},
|
| 16 |
+
"execution_count": null,
|
| 17 |
"outputs": [],
|
| 18 |
"source": [
|
| 19 |
+
"%pip install huggingface_hub==2.3.0\n",
|
| 20 |
+
"from huggingface_hub import snapshot_download\n",
|
| 21 |
+
"from pathlib import Path\n",
|
| 22 |
+
"import subprocess, sys\n",
|
| 23 |
+
"repo = Path(snapshot_download('SinhalaMMLU-SharedTask/team-riswan', allow_patterns=['*.py', '*.md', '*.txt', 'training/src/*', 'training/ensemble_v9.py']))\n"
|
| 24 |
+
],
|
| 25 |
+
"id": "team-riswan-1"
|
| 26 |
},
|
| 27 |
{
|
| 28 |
"cell_type": "code",
|
|
|
|
| 29 |
"metadata": {},
|
| 30 |
+
"execution_count": null,
|
| 31 |
"outputs": [],
|
| 32 |
"source": [
|
| 33 |
+
"# Full model run: expensive. No archived predictions are used.\n",
|
| 34 |
+
"run_dir = Path.cwd() / 'rerun'\n",
|
| 35 |
+
"run_dir.mkdir(exist_ok=True)\n",
|
| 36 |
+
"subprocess.run([sys.executable, str(repo / 'inference.py')], cwd=run_dir, check=True)\n"
|
| 37 |
+
],
|
| 38 |
+
"id": "team-riswan-2"
|
| 39 |
}
|
| 40 |
],
|
| 41 |
"metadata": {
|
|
|
|
|
|
|
|
|
|
| 42 |
"kernelspec": {
|
| 43 |
"display_name": "Python 3",
|
| 44 |
"language": "python",
|
| 45 |
"name": "python3"
|
| 46 |
+
},
|
| 47 |
+
"language_info": {
|
| 48 |
+
"name": "python",
|
| 49 |
+
"version": "3"
|
| 50 |
}
|
| 51 |
},
|
| 52 |
"nbformat": 4,
|
| 53 |
+
"nbformat_minor": 5
|
| 54 |
+
}
|
inference.py
CHANGED
|
@@ -1,22 +1,17 @@
|
|
| 1 |
"""
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
* No API keys or tokens in the code. If something is gated, the organizers log in themselves.
|
| 16 |
-
* No closed or paid APIs. Only your open-weight system (8B total inference parameters or fewer).
|
| 17 |
-
* Deterministic: no sampling (do_sample=False) and a fixed seed, so a re-run gives the same answers.
|
| 18 |
-
* Do not rely on file names, question counts or answers in the dataset. Load every .json file
|
| 19 |
-
in DATA_REPO, as section 1 does. The final dataset has the same structure as the test dataset.
|
| 20 |
"""
|
| 21 |
|
| 22 |
# ======================= ORGANIZERS CHANGE ONLY THIS LINE =======================
|
|
@@ -25,33 +20,46 @@ DATA_REPO = "SinhalaMMLU-SharedTask/Sinhala-MMLU-SharedTask-Test-Dataset"
|
|
| 25 |
|
| 26 |
OUTPUT_FILE = "predictions.jsonl"
|
| 27 |
|
| 28 |
-
# ----------------------- TEAM SETTINGS
|
| 29 |
-
|
| 30 |
-
SEED =
|
| 31 |
-
|
| 32 |
-
MAX_NEW_TOKENS = 2048 # Allows complete step-by-step curriculum reasoning
|
| 33 |
|
|
|
|
| 34 |
import json
|
| 35 |
import os
|
| 36 |
-
import random
|
| 37 |
import re
|
| 38 |
-
import
|
| 39 |
-
import
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
fs = HfFileSystem()
|
| 53 |
files = sorted(f for f in list_repo_files(data_repo, repo_type="dataset") if f.endswith(".json"))
|
| 54 |
-
rows = []
|
| 55 |
for f in files:
|
| 56 |
with fs.open(f"datasets/{data_repo}/{f}", "r", encoding="utf-8") as fh:
|
| 57 |
raw = json.load(fh)
|
|
@@ -64,11 +72,46 @@ def load_questions(data_repo):
|
|
| 64 |
|
| 65 |
|
| 66 |
def get_level(r):
|
| 67 |
-
return (r.get("metadata") or {}).get("difficulty") or r["_file"].split("/")[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
|
| 69 |
|
| 70 |
-
# =============== 2. YOUR SYSTEM
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 73 |
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 74 |
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
|
@@ -76,138 +119,394 @@ SYSTEM_THINK_PROMPT = (
|
|
| 76 |
"Hindustani, Pali, Tamil, or technical terms, carefully map them to their standard curriculum "
|
| 77 |
"meaning. You may reason in English. Finish with the final answer in the form 'Answer: <number>'."
|
| 78 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
-
ANSWER_THINK_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.IGNORECASE)
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
def load_system():
|
| 84 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 85 |
-
tok = AutoTokenizer.from_pretrained(MODEL_ID)
|
| 86 |
-
tok.padding_side = "left"
|
| 87 |
-
if tok.pad_token is None:
|
| 88 |
-
tok.pad_token = tok.eos_token or tok.unk_token
|
| 89 |
-
|
| 90 |
-
# Load model with bfloat16 (or float16 fallback) on available GPU/CPU
|
| 91 |
-
dtype = torch.bfloat16 if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else torch.float16
|
| 92 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 93 |
-
MODEL_ID,
|
| 94 |
-
torch_dtype=dtype,
|
| 95 |
-
device_map="auto"
|
| 96 |
-
)
|
| 97 |
-
model.eval()
|
| 98 |
-
return tok, model
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
def make_prompt(r):
|
| 102 |
-
choices = r.get("choices")
|
| 103 |
-
if choices is None:
|
| 104 |
-
choices = r.get("options", [])
|
| 105 |
-
if isinstance(choices, dict):
|
| 106 |
-
keys = sorted(choices.keys(), key=lambda x: str(x))
|
| 107 |
-
opt_list = [choices[k] for k in keys]
|
| 108 |
-
else:
|
| 109 |
-
opt_list = list(choices) if choices else []
|
| 110 |
|
| 111 |
-
|
| 112 |
-
lvl =
|
| 113 |
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
f"විෂය (Subject): {
|
| 119 |
-
f"ප්රශ්නය (Question):\n{
|
| 120 |
f"විකල්ප (Options):\n{opts}\n\n"
|
| 121 |
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'."
|
| 122 |
)
|
| 123 |
-
return user_msg
|
| 124 |
|
| 125 |
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
if not text:
|
| 128 |
return "1"
|
| 129 |
if "</think>" in text:
|
| 130 |
text = text.split("</think>")[-1]
|
| 131 |
text = text.strip()
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
)
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
for r, a in zip(rows, answers):
|
| 197 |
a = str(a).strip()
|
| 198 |
assert a in {"1", "2", "3", "4"}, f"invalid answer {a!r} for q_no={r.get('q_no')}"
|
| 199 |
-
f.write(
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
"answer": a,
|
| 207 |
-
},
|
| 208 |
-
ensure_ascii=False,
|
| 209 |
-
separators=(",", ":"),
|
| 210 |
-
)
|
| 211 |
-
+ "\n"
|
| 212 |
-
)
|
| 213 |
-
print("\nSaved", OUTPUT_FILE)
|
|
|
|
| 1 |
"""
|
| 2 |
+
Reconstructed runner for the stages contributing to Codabench submission #138.
|
| 3 |
+
See README.md and REPRODUCIBILITY.md before using this runner for final ranking.
|
| 4 |
+
The saved-pass merge is byte-exact; fresh model reproduction has NOT been verified.
|
| 5 |
+
Original Kaggle source snapshots are under training/kaggle_cells/.
|
| 6 |
+
|
| 7 |
+
Default: regenerate passes with Ollama, without reading archived test predictions.
|
| 8 |
+
Pass 3 retains historical temperature 0.1 and no explicit seed. This conflicts with
|
| 9 |
+
no-sampling guidance in the supplied template; it is disclosed, not silently changed.
|
| 10 |
+
The historical Mac run stopped after 1160 items of a full priority queue; a fresh
|
| 11 |
+
run completes that queue, since a hard-coded test-count cutoff is not generalizable.
|
| 12 |
+
|
| 13 |
+
Run from a separate output directory to preserve the submitted predictions.jsonl.
|
| 14 |
+
--merge-only is an archival audit, not fresh model inference.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
"""
|
| 16 |
|
| 17 |
# ======================= ORGANIZERS CHANGE ONLY THIS LINE =======================
|
|
|
|
| 20 |
|
| 21 |
OUTPUT_FILE = "predictions.jsonl"
|
| 22 |
|
| 23 |
+
# ----------------------- TEAM SETTINGS (exactly as used for the final submission)
|
| 24 |
+
MODEL_TAG = "gemma4:e4b"
|
| 25 |
+
SEED = None # Original archived requests did not specify an Ollama seed.
|
| 26 |
+
STAGES_DEFAULT = "baselines,pass1,pass2,pass3,pass45,mac"
|
|
|
|
| 27 |
|
| 28 |
+
import argparse
|
| 29 |
import json
|
| 30 |
import os
|
|
|
|
| 31 |
import re
|
| 32 |
+
import shutil
|
| 33 |
+
import subprocess
|
| 34 |
+
import sys
|
| 35 |
+
import time
|
| 36 |
+
import urllib.request
|
| 37 |
+
from collections import Counter
|
| 38 |
+
import hashlib
|
| 39 |
+
import platform
|
| 40 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 41 |
+
from pathlib import Path
|
| 42 |
+
|
| 43 |
+
HERE = Path(__file__).resolve().parent
|
| 44 |
+
LEVEL_RANK = {"easy": 0, "medium": 1, "hard": 2}
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
# =============== 1. LOAD THE DATASET (template loader; `--local-data` is for offline checks only) ===============
|
| 48 |
+
def load_questions(data_repo, local_data=None):
|
| 49 |
+
rows = []
|
| 50 |
+
if local_data:
|
| 51 |
+
for lvl in ("easy", "medium", "hard"):
|
| 52 |
+
for f in sorted((Path(local_data) / lvl).rglob("*.json")):
|
| 53 |
+
raw = json.load(open(f, encoding="utf-8"))
|
| 54 |
+
if isinstance(raw, dict):
|
| 55 |
+
raw = next(v for v in raw.values() if isinstance(v, list))
|
| 56 |
+
for r in raw:
|
| 57 |
+
r["_file"] = f"{lvl}/{f.name}"
|
| 58 |
+
rows.append(r)
|
| 59 |
+
return rows
|
| 60 |
+
from huggingface_hub import HfFileSystem, list_repo_files
|
| 61 |
fs = HfFileSystem()
|
| 62 |
files = sorted(f for f in list_repo_files(data_repo, repo_type="dataset") if f.endswith(".json"))
|
|
|
|
| 63 |
for f in files:
|
| 64 |
with fs.open(f"datasets/{data_repo}/{f}", "r", encoding="utf-8") as fh:
|
| 65 |
raw = json.load(fh)
|
|
|
|
| 72 |
|
| 73 |
|
| 74 |
def get_level(r):
|
| 75 |
+
return str((r.get("metadata") or {}).get("difficulty") or r["_file"].split("/")[0]).lower().strip()
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def prepare(rows):
|
| 79 |
+
"""Normalise rows (list 'choices', lower-case '_level') and order them easy -> medium -> hard."""
|
| 80 |
+
for r in rows:
|
| 81 |
+
ch = r.get("choices")
|
| 82 |
+
if ch is None:
|
| 83 |
+
ch = r.get("options", [])
|
| 84 |
+
if isinstance(ch, dict):
|
| 85 |
+
ch = [ch[k] for k in sorted(ch.keys(), key=lambda x: str(x))]
|
| 86 |
+
r["choices"] = list(ch)
|
| 87 |
+
r["_level"] = get_level(r)
|
| 88 |
+
# Preserve the organiser loader's row order. Scheduling is handled separately.
|
| 89 |
+
seen = set()
|
| 90 |
+
for r in rows:
|
| 91 |
+
key = kof(r)
|
| 92 |
+
if key in seen:
|
| 93 |
+
raise ValueError(f"Duplicate question key: {key}")
|
| 94 |
+
seen.add(key)
|
| 95 |
+
if r["_level"] not in LEVEL_RANK or len(r["choices"]) != 4:
|
| 96 |
+
raise ValueError(f"Expected known difficulty and four choices: {key}")
|
| 97 |
+
if not rows:
|
| 98 |
+
raise ValueError("No questions were loaded")
|
| 99 |
+
return rows
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
def kof(q):
|
| 103 |
+
return (q["q_no"], q["subject"], q["category"], q["_level"])
|
| 104 |
|
| 105 |
|
| 106 |
+
# =============== 2. YOUR SYSTEM ===============
|
| 107 |
+
SYSTEM_THINK = (
|
| 108 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 109 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 110 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 111 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). You may reason in English. "
|
| 112 |
+
"Finish with the final answer in the form 'Answer: <number>'."
|
| 113 |
+
)
|
| 114 |
+
SYSTEM_THINK_HINT = ( # pass 3 only
|
| 115 |
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 116 |
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 117 |
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
|
|
|
| 119 |
"Hindustani, Pali, Tamil, or technical terms, carefully map them to their standard curriculum "
|
| 120 |
"meaning. You may reason in English. Finish with the final answer in the form 'Answer: <number>'."
|
| 121 |
)
|
| 122 |
+
ANS_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.I)
|
| 123 |
+
POS_RE = re.compile(r"ඉහත|above|\b[1-4]\s*(?:හා|සහ|හෝ|,|and|or)\s*[1-4]\b", re.I)
|
| 124 |
+
STOP_NONTHINK = ["\nප්රශ්නය:", "\nQuestion:", "<|im_end|>", "<|endoftext|>", "<|im_start|>"]
|
| 125 |
+
_OPENER = urllib.request.build_opener(urllib.request.ProxyHandler({}))
|
| 126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
+
def think_user_prompt(q, shift=0):
|
| 129 |
+
lvl = q["_level"]
|
| 130 |
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 131 |
+
ch = list(q["choices"])
|
| 132 |
+
ch = ch[shift:] + ch[:shift]
|
| 133 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(ch, 1))
|
| 134 |
+
return (
|
| 135 |
+
f"විෂය (Subject): {q.get('subject', 'General')} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 136 |
+
f"ප්රශ්නය (Question):\n{str(q['question']).strip()}\n\n"
|
| 137 |
f"විකල්ප (Options):\n{opts}\n\n"
|
| 138 |
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'."
|
| 139 |
)
|
|
|
|
| 140 |
|
| 141 |
|
| 142 |
+
# ---------------------------------------------------------------- Ollama plumbing
|
| 143 |
+
def _alive(host):
|
| 144 |
+
try:
|
| 145 |
+
urllib.request.urlopen(f"{host}/api/tags", timeout=3)
|
| 146 |
+
return True
|
| 147 |
+
except Exception:
|
| 148 |
+
return False
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
def ensure_ollama(hosts):
|
| 152 |
+
"""Check/start existing Ollama; model provisioning is an explicit setup step."""
|
| 153 |
+
if shutil.which("ollama") is None:
|
| 154 |
+
raise RuntimeError("Install Ollama first (see README.md). No automatic shell installer is executed.")
|
| 155 |
+
for idx, host in enumerate(hosts):
|
| 156 |
+
if not _alive(host):
|
| 157 |
+
if not host.startswith(("http://127.0.0.1:", "http://localhost:")):
|
| 158 |
+
raise RuntimeError(f"Only local Ollama hosts are supported: {host}")
|
| 159 |
+
env = {**os.environ, "OLLAMA_HOST": host.replace("http://", ""), "OLLAMA_NUM_PARALLEL": "2",
|
| 160 |
+
"OLLAMA_FLASH_ATTENTION": "1", "OLLAMA_KEEP_ALIVE": "24h"}
|
| 161 |
+
if len(hosts) > 1:
|
| 162 |
+
env["CUDA_VISIBLE_DEVICES"] = str(idx)
|
| 163 |
+
subprocess.Popen(["ollama", "serve"], env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
| 164 |
+
for _ in range(60):
|
| 165 |
+
if _alive(host):
|
| 166 |
+
break
|
| 167 |
+
time.sleep(1)
|
| 168 |
+
with _OPENER.open(f"{host}/api/tags", timeout=10) as response:
|
| 169 |
+
tags = json.load(response).get("models", [])
|
| 170 |
+
model = next((m for m in tags if MODEL_TAG in (m.get("name"), m.get("model"))), None)
|
| 171 |
+
if model is None:
|
| 172 |
+
raise RuntimeError(f"{MODEL_TAG} is not installed on {host}. Provision the exact original model first.")
|
| 173 |
+
print("Ollama model:", model.get("name"), "digest:", model.get("digest"), flush=True)
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
|
| 177 |
+
def default_hosts():
|
| 178 |
+
env = os.environ.get("OLLAMA_HOSTS")
|
| 179 |
+
if env:
|
| 180 |
+
return [h.strip() if h.strip().startswith("http") else f"http://{h.strip()}" for h in env.split(",")]
|
| 181 |
+
try:
|
| 182 |
+
n = len(subprocess.run(["nvidia-smi", "-L"], capture_output=True, text=True).stdout.strip().splitlines())
|
| 183 |
+
except Exception:
|
| 184 |
+
n = 0
|
| 185 |
+
return ["http://127.0.0.1:11434", "http://127.0.0.1:11435"] if n >= 2 else ["http://127.0.0.1:11434"]
|
| 186 |
+
|
| 187 |
+
|
| 188 |
+
def chat(host, system, user, think, options, timeout=420):
|
| 189 |
+
payload = json.dumps({
|
| 190 |
+
"model": MODEL_TAG,
|
| 191 |
+
"messages": [{"role": "system", "content": system}, {"role": "user", "content": user}],
|
| 192 |
+
"stream": False, "think": think, "options": options,
|
| 193 |
+
}).encode("utf-8")
|
| 194 |
+
req = urllib.request.Request(f"{host}/api/chat", data=payload, headers={"Content-Type": "application/json"})
|
| 195 |
+
with _OPENER.open(req, timeout=timeout) as resp:
|
| 196 |
+
msg = json.loads(resp.read().decode("utf-8")).get("message", {})
|
| 197 |
+
return msg.get("content", "") or "", msg.get("thinking", "") or ""
|
| 198 |
+
|
| 199 |
+
|
| 200 |
+
def extract_think(content, thinking, digit_fallback=True):
|
| 201 |
+
"""Answer digit from a thinking-mode reply, or None."""
|
| 202 |
+
m = ANS_RE.findall(content) or ANS_RE.findall(thinking)
|
| 203 |
+
if m:
|
| 204 |
+
return m[-1]
|
| 205 |
+
if digit_fallback:
|
| 206 |
+
d = re.findall(r"\b([1-4])\b", content if content.strip() else thinking)
|
| 207 |
+
if d:
|
| 208 |
+
return d[-1]
|
| 209 |
+
return None
|
| 210 |
+
|
| 211 |
+
|
| 212 |
+
def extract_answer_digit(text):
|
| 213 |
+
"""Answer extraction for the non-thinking 4-shot baselines (same as training/src/baseline_runner.py)."""
|
| 214 |
if not text:
|
| 215 |
return "1"
|
| 216 |
if "</think>" in text:
|
| 217 |
text = text.split("</think>")[-1]
|
| 218 |
text = text.strip()
|
| 219 |
+
ex = re.findall(r"(?:පිළිතුර|Answer|Final Answer|Correct Option|නිවැරදි පිළිතුර|තෝරාගැනීම)\s*(?:is|වන්නේ)?\s*[:\s*#(\[]*(?:Option\s*)?([1-4])\b", text, re.I)
|
| 220 |
+
if ex:
|
| 221 |
+
return ex[-1]
|
| 222 |
+
m = re.match(r"^[(\[]?\s*([1-4])\b", text)
|
| 223 |
+
if m and len(text) <= 8:
|
| 224 |
+
return m.group(1)
|
| 225 |
+
d = re.findall(r"\b([1-4])\b", text)
|
| 226 |
+
if d:
|
| 227 |
+
return d[-1]
|
| 228 |
+
m = re.search(r"[1-4]", text)
|
| 229 |
+
return m.group(0) if m else "1"
|
| 230 |
+
|
| 231 |
+
|
| 232 |
+
# ---------------------------------------------------------------- checkpointed parallel runner
|
| 233 |
+
def load_ck(path, required=False):
|
| 234 |
+
res = {}
|
| 235 |
+
path = Path(path)
|
| 236 |
+
if not path.exists():
|
| 237 |
+
if required:
|
| 238 |
+
raise FileNotFoundError(f"Required saved pass missing: {path}")
|
| 239 |
+
return res
|
| 240 |
+
with path.open(encoding="utf-8") as f:
|
| 241 |
+
for number, line in enumerate(f, 1):
|
| 242 |
+
if line.strip():
|
| 243 |
+
r = json.loads(line)
|
| 244 |
+
key = (r["q_no"], r["subject"], r["category"], r["level"])
|
| 245 |
+
answer = str(r["answer"])
|
| 246 |
+
if key in res or answer not in {"1", "2", "3", "4"}:
|
| 247 |
+
raise ValueError(f"Duplicate key or invalid answer at {path}:{number}")
|
| 248 |
+
res[key] = answer
|
| 249 |
+
return res
|
| 250 |
+
|
| 251 |
+
|
| 252 |
+
def run_stage(name, qs, solver, ck_path, hosts, workers):
|
| 253 |
+
"""Run solver(host, q) -> answer-or-None for every question in qs not yet in the checkpoint."""
|
| 254 |
+
done = load_ck(ck_path)
|
| 255 |
+
todo = [q for q in qs if kof(q) not in done]
|
| 256 |
+
print(f"[{name}] targets={len(qs)} done={len(done)} todo={len(todo)}", flush=True)
|
| 257 |
+
t0 = time.time()
|
| 258 |
+
n = 0
|
| 259 |
+
with open(ck_path, "a", encoding="utf-8") as fo, ThreadPoolExecutor(max_workers=workers) as ex:
|
| 260 |
+
futs = {ex.submit(solver, hosts[i % len(hosts)], q): q for i, q in enumerate(todo)}
|
| 261 |
+
for fut in as_completed(futs):
|
| 262 |
+
q = futs[fut]
|
| 263 |
+
ans = fut.result()
|
| 264 |
+
if ans is not None:
|
| 265 |
+
fo.write(json.dumps({"q_no": q["q_no"], "subject": q["subject"], "category": q["category"],
|
| 266 |
+
"level": q["_level"], "answer": ans}, ensure_ascii=False) + "\n")
|
| 267 |
+
fo.flush()
|
| 268 |
+
done[kof(q)] = ans
|
| 269 |
+
n += 1
|
| 270 |
+
if n % 20 == 0 or n == len(todo):
|
| 271 |
+
print(f" [{name}] {n}/{len(todo)} ({(time.time() - t0) / 60:.1f} min)", flush=True)
|
| 272 |
+
return done
|
| 273 |
+
|
| 274 |
+
|
| 275 |
+
def tries(fn, n=2):
|
| 276 |
+
for _ in range(n):
|
| 277 |
+
try:
|
| 278 |
+
return fn()
|
| 279 |
+
except Exception as exc:
|
| 280 |
+
print(f"Model request failed ({type(exc).__name__}): {exc}", file=sys.stderr, flush=True)
|
| 281 |
+
time.sleep(2)
|
| 282 |
+
return None
|
| 283 |
+
|
| 284 |
+
|
| 285 |
+
# ---------------------------------------------------------------- stages
|
| 286 |
+
def stage_baseline(qs, hosts, workers, wd, cot):
|
| 287 |
+
sys.path.insert(0, str(training_src()))
|
| 288 |
+
from few_shot_prompts import build_few_shot_prompt
|
| 289 |
+
system = ("You are an expert examiner for the Sri Lankan school curriculum (Sinhala medium). "
|
| 290 |
+
"For each multiple-choice question, write a concise 1-2 sentence English translation and fact-check ('Analysis:'), "
|
| 291 |
+
"then end on a new line with strictly 'Answer: <digit>' (where <digit> is 1, 2, 3, or 4)."
|
| 292 |
+
if cot else
|
| 293 |
+
"You are an examination AI for the Sri Lankan school curriculum (Sinhala medium). "
|
| 294 |
+
"For every multiple-choice question, analyze the options carefully and answer by replying "
|
| 295 |
+
"with ONLY the single digit of the best option (1, 2, 3, or 4). "
|
| 296 |
+
"Do NOT provide explanations, do NOT include option text, and do NOT write anything other than the single digit.")
|
| 297 |
+
opts = {"temperature": 0.0, "num_predict": 260 if cot else 15, "stop": STOP_NONTHINK}
|
| 298 |
+
|
| 299 |
+
def solve(host, q):
|
| 300 |
+
prompt = build_few_shot_prompt(q, num_shots=4, cot=cot, cot_lang="en")
|
| 301 |
+
r = tries(lambda: chat(host, system, prompt, False, opts, 240), n=1)
|
| 302 |
+
return extract_answer_digit(r[0]) if r else "1"
|
| 303 |
+
|
| 304 |
+
return run_stage("cot" if cot else "direct", qs, solve, wd / ("baseline_cot_4shot.jsonl" if cot else "baseline_direct_4shot.jsonl"), hosts, workers)
|
| 305 |
+
|
| 306 |
+
|
| 307 |
+
def stage_pass1(qs, hosts, workers, wd, cot, name="pass1", ck="pass1_think_2048_orig.jsonl"):
|
| 308 |
+
opts = {"temperature": 0.0, "num_predict": 2048}
|
| 309 |
+
|
| 310 |
+
def solve(host, q):
|
| 311 |
+
r = tries(lambda: chat(host, SYSTEM_THINK, think_user_prompt(q), True, opts, 240), n=1)
|
| 312 |
+
a = extract_think(*r) if r else None
|
| 313 |
+
return a if a else cot.get(kof(q), "1")
|
| 314 |
+
|
| 315 |
+
return run_stage(name, qs, solve, wd / ck, hosts, workers)
|
| 316 |
+
|
| 317 |
+
|
| 318 |
+
def stage_rot(qs, hosts, workers, wd, shift, name, ck, p1, cot, fallback=True):
|
| 319 |
+
"""Rotated-options pass (4096 tokens, greedy). Predictions are mapped back to the original option numbers."""
|
| 320 |
+
opts = {"temperature": 0.0, "num_predict": 4096}
|
| 321 |
+
|
| 322 |
+
def solve(host, q):
|
| 323 |
+
r = tries(lambda: chat(host, SYSTEM_THINK, think_user_prompt(q, shift), True, opts, 300), n=1 if fallback else 2)
|
| 324 |
+
if r is None:
|
| 325 |
+
return (p1.get(kof(q)) or cot.get(kof(q), "1")) if fallback else None
|
| 326 |
+
a = extract_think(*r, digit_fallback=fallback)
|
| 327 |
+
if a is None:
|
| 328 |
+
if not fallback:
|
| 329 |
+
return None
|
| 330 |
+
a = "1" # Original Pass 2 defaults to rotated option 1, then maps back.
|
| 331 |
+
return str(((int(a) - 1 + shift) % 4) + 1)
|
| 332 |
+
|
| 333 |
+
return run_stage(name, qs, solve, wd / ck, hosts, workers)
|
| 334 |
+
|
| 335 |
+
|
| 336 |
+
def stage_pass3(qs, hosts, workers, wd, p1):
|
| 337 |
+
opts = {"temperature": 0.1, "top_p": 0.95, "num_predict": 4096}
|
| 338 |
+
|
| 339 |
+
def solve(host, q):
|
| 340 |
+
r = tries(lambda: chat(host, SYSTEM_THINK_HINT, think_user_prompt(q), True, opts, 300), n=3)
|
| 341 |
+
if r is None:
|
| 342 |
+
return p1.get(kof(q), "1")
|
| 343 |
+
return extract_think(*r) or "1"
|
| 344 |
+
|
| 345 |
+
return run_stage("pass3", qs, solve, wd / "pass3_think_4096_hint.jsonl", hosts, workers)
|
| 346 |
+
|
| 347 |
+
|
| 348 |
+
# =============== merge: fixed level-aware weighted vote (identical to training/ensemble_v9.py) ===============
|
| 349 |
+
def merge_one(k, pos, p1, p2, p3, p4, p5, mac, cot, dr):
|
| 350 |
+
lvl = k[3]
|
| 351 |
+
v = Counter()
|
| 352 |
+
if lvl == "hard":
|
| 353 |
+
v[p1[k]] += 1.15
|
| 354 |
+
if k in mac: v[mac[k]] += 1.10
|
| 355 |
+
if k in p3: v[p3[k]] += 1.10
|
| 356 |
+
for m in (p2, p4, p5):
|
| 357 |
+
if k in m and k not in pos: v[m[k]] += 1.10
|
| 358 |
+
if k in cot: v[cot[k]] += 0.35
|
| 359 |
+
if k in dr: v[dr[k]] += 0.35
|
| 360 |
+
elif lvl == "medium":
|
| 361 |
+
v[p1[k]] += 1.25
|
| 362 |
+
if k in mac: v[mac[k]] += 1.05
|
| 363 |
+
if k in p3: v[p3[k]] += 1.10
|
| 364 |
+
for m in (p2, p4, p5):
|
| 365 |
+
if k in m and k not in pos: v[m[k]] += 1.05
|
| 366 |
+
if k in cot: v[cot[k]] += 0.35
|
| 367 |
+
if k in dr: v[dr[k]] += 0.35
|
| 368 |
+
else: # easy: pass 1 anchored at 2.40 so only a margin >= 2 supermajority can overturn it
|
| 369 |
+
v[p1[k]] += 2.40
|
| 370 |
+
if k in mac: v[mac[k]] += 1.0
|
| 371 |
+
if k in p3: v[p3[k]] += 1.0
|
| 372 |
+
for m in (p2, p4, p5):
|
| 373 |
+
if k in m and k not in pos: v[m[k]] += 0.95
|
| 374 |
+
if k in cot: v[cot[k]] += 0.30
|
| 375 |
+
if k in dr: v[dr[k]] += 0.30
|
| 376 |
+
return v.most_common(1)[0][0]
|
| 377 |
+
|
| 378 |
+
|
| 379 |
+
def training_src():
|
| 380 |
+
p = HERE / "training" / "src"
|
| 381 |
+
if not (p / "few_shot_prompts.py").exists():
|
| 382 |
+
raise FileNotFoundError("Download the complete team repository, including training/src.")
|
| 383 |
+
return p
|
| 384 |
+
|
| 385 |
+
|
| 386 |
+
def priority_order(rows, cot, dr):
|
| 387 |
+
# Original scheduler: disagreements first, then hard -> medium -> easy.
|
| 388 |
+
canonical = sorted(rows, key=lambda q: (LEVEL_RANK[q["_level"]], q["_file"]))
|
| 389 |
+
return sorted(canonical, key=lambda q: (
|
| 390 |
+
0 if cot.get(kof(q)) != dr.get(kof(q)) else 1,
|
| 391 |
+
{"hard": 0, "medium": 1, "easy": 2}[q["_level"]]))
|
| 392 |
+
|
| 393 |
+
|
| 394 |
+
def stage_mac(qs, hosts, wd, cot):
|
| 395 |
+
# Original local runner was sequential and used its own broader answer parser.
|
| 396 |
+
sys.path.insert(0, str(training_src()))
|
| 397 |
+
from baseline_runner import extract_answer_digit as original_extract
|
| 398 |
+
def solve(host, q):
|
| 399 |
+
r = tries(lambda: chat(host, SYSTEM_THINK, think_user_prompt(q), True,
|
| 400 |
+
{"temperature": 0.0, "num_predict": 2048}, 240), n=1)
|
| 401 |
+
if r is None:
|
| 402 |
+
return cot.get(kof(q), "1")
|
| 403 |
+
content, thinking = r
|
| 404 |
+
found = ANS_RE.findall(content) or ANS_RE.findall(thinking)
|
| 405 |
+
return found[-1] if found else original_extract(content if content.strip() else thinking)
|
| 406 |
+
return run_stage("mac", qs, solve, wd / "mac_think_2048_orig.jsonl", hosts[:1], 1)
|
| 407 |
+
|
| 408 |
+
|
| 409 |
+
def main():
|
| 410 |
+
ap = argparse.ArgumentParser()
|
| 411 |
+
ap.add_argument("--merge-only", metavar="PASSES_DIR", default=None,
|
| 412 |
+
help="skip the model: merge the saved raw passes (training/passes) -> reproduces predictions.jsonl")
|
| 413 |
+
ap.add_argument("--local-data", metavar="DIR", default=None, help="read easy/medium/hard/*.json from a local folder instead of Hugging Face")
|
| 414 |
+
ap.add_argument("--output", default=OUTPUT_FILE, help="output path; submitted predictions are protected")
|
| 415 |
+
args = ap.parse_args()
|
| 416 |
+
output = Path(args.output).resolve()
|
| 417 |
+
if output == (HERE / "predictions.jsonl").resolve():
|
| 418 |
+
raise ValueError("Do not overwrite submitted predictions.jsonl. Run from a separate folder or use --output.")
|
| 419 |
+
|
| 420 |
+
rows = prepare(load_questions(DATA_REPO, args.local_data))
|
| 421 |
+
limit = int(os.environ.get("LIMIT", "0"))
|
| 422 |
+
if limit:
|
| 423 |
+
keep, cnt = [], Counter()
|
| 424 |
+
for r in rows:
|
| 425 |
+
if cnt[r["_level"]] < limit:
|
| 426 |
+
keep.append(r)
|
| 427 |
+
cnt[r["_level"]] += 1
|
| 428 |
+
rows = keep
|
| 429 |
+
print(len(rows), "questions loaded from", args.local_data or DATA_REPO)
|
| 430 |
+
pos = {kof(q) for q in rows if POS_RE.search(" ".join(map(str, q["choices"])))}
|
| 431 |
+
|
| 432 |
+
if args.merge_only:
|
| 433 |
+
d = Path(args.merge_only)
|
| 434 |
+
names = {"p1": "pass1_think_2048_orig.jsonl", "p2": "pass2_think_4096_rot1.jsonl", "p3": "pass3_think_4096_hint.jsonl",
|
| 435 |
+
"p4": "pass4_think_4096_rot2.jsonl", "p5": "pass5_think_4096_rot3.jsonl", "mac": "mac_think_2048_orig.jsonl",
|
| 436 |
+
"cot": "baseline_cot_4shot.jsonl", "dr": "baseline_direct_4shot.jsonl"}
|
| 437 |
+
M = {k: load_ck(d / v, required=True) for k, v in names.items()}
|
| 438 |
+
expected = {kof(q) for q in rows}
|
| 439 |
+
if set(M["p1"]) != expected:
|
| 440 |
+
raise ValueError("Saved Pass 1 must match the complete input key set (no LIMIT in merge-only mode).")
|
| 441 |
+
if any(set(v) - expected for v in M.values()):
|
| 442 |
+
raise ValueError("Saved passes contain question keys absent from the supplied dataset.")
|
| 443 |
+
else:
|
| 444 |
+
wd = Path(os.environ.get("WORKDIR", "inference_work"))
|
| 445 |
+
wd.mkdir(parents=True, exist_ok=True)
|
| 446 |
+
stages = set(STAGES_DEFAULT.split(","))
|
| 447 |
+
hosts = default_hosts()
|
| 448 |
+
workers = int(os.environ.get("WORKERS", 2 * len(hosts)))
|
| 449 |
+
ensure_ollama(hosts)
|
| 450 |
+
print("hosts:", hosts, "| workers:", workers, "| model:", MODEL_TAG)
|
| 451 |
+
|
| 452 |
+
config = {"dataset_sha256": hashlib.sha256(json.dumps(rows, ensure_ascii=False, sort_keys=True).encode()).hexdigest(),
|
| 453 |
+
"runner_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(),
|
| 454 |
+
"model": MODEL_TAG, "hosts": hosts, "workers": workers,
|
| 455 |
+
"python": platform.python_version(), "seed": None}
|
| 456 |
+
meta = wd / "run_config.json"
|
| 457 |
+
if meta.exists() and json.loads(meta.read_text()) != config:
|
| 458 |
+
raise ValueError("Workdir belongs to a different dataset/configuration. Use a new WORKDIR.")
|
| 459 |
+
meta.write_text(json.dumps(config, indent=2) + "\n")
|
| 460 |
+
print("Fresh-run reconstruction: no guarantee of the historical score; see REPRODUCIBILITY.md.")
|
| 461 |
+
baseline_rows = sorted(rows, key=lambda q: (LEVEL_RANK[q["_level"]], q["_file"]))
|
| 462 |
+
cot = stage_baseline(baseline_rows, hosts[:1], 1, wd, True)
|
| 463 |
+
dr = stage_baseline(baseline_rows, hosts[:1], 1, wd, False)
|
| 464 |
+
priority = priority_order(rows, cot, dr)
|
| 465 |
+
p1 = stage_pass1(priority, hosts, workers, wd, cot)
|
| 466 |
+
rot_ok = [q for q in priority if len(q["choices"]) == 4]
|
| 467 |
+
|
| 468 |
+
# pass 2: hard + questions where the two 4-shot baselines disagree
|
| 469 |
+
t2 = [q for q in rot_ok if q["_level"] == "hard" or cot.get(kof(q)) != dr.get(kof(q))]
|
| 470 |
+
p2 = stage_rot(t2, hosts, workers, wd, 1, "pass2", "pass2_think_4096_rot1.jsonl", p1, cot) if "pass2" in stages else {}
|
| 471 |
+
|
| 472 |
+
# pass 3 targets: Pass1 != Pass2, or (not in Pass2) Pass1 != CoT / Direct
|
| 473 |
+
t3 = []
|
| 474 |
+
for q in baseline_rows:
|
| 475 |
+
k = kof(q)
|
| 476 |
+
if k in p2:
|
| 477 |
+
if p1[k] != p2[k]:
|
| 478 |
+
t3.append(q)
|
| 479 |
+
elif p1[k] != cot.get(k) or p1[k] != dr.get(k):
|
| 480 |
+
t3.append(q)
|
| 481 |
+
p3 = stage_pass3(t3, hosts, workers, wd, p1) if "pass3" in stages else {}
|
| 482 |
+
|
| 483 |
+
# pass 4/5: same uncertain set, only 4-option questions without positional options; unclear replies are skipped
|
| 484 |
+
t45 = [q for q in t3 if len(q["choices"]) == 4 and kof(q) not in pos]
|
| 485 |
+
p4 = stage_rot(t45, hosts, workers, wd, 2, "pass4", "pass4_think_4096_rot2.jsonl", p1, cot, fallback=False) if "pass45" in stages else {}
|
| 486 |
+
p5 = stage_rot(t45, hosts, workers, wd, 3, "pass5", "pass5_think_4096_rot3.jsonl", p1, cot, fallback=False) if "pass45" in stages else {}
|
| 487 |
+
|
| 488 |
+
# The original Mac runner traversed ALL questions in priority order and was stopped.
|
| 489 |
+
# Do not encode a historical test-set count as a new-data selection rule.
|
| 490 |
+
mac = stage_mac(priority, hosts, wd, cot) if "mac" in stages else {}
|
| 491 |
+
M = {"p1": p1, "p2": p2, "p3": p3, "p4": p4, "p5": p5, "mac": mac, "cot": cot, "dr": dr}
|
| 492 |
+
|
| 493 |
+
# =============== 3. WRITE PREDICTIONS ===============
|
| 494 |
+
answers = []
|
| 495 |
+
for r in rows:
|
| 496 |
+
k = kof(r)
|
| 497 |
+
if k not in M["p1"]:
|
| 498 |
+
M["p1"][k] = M["cot"].get(k, "1")
|
| 499 |
+
answers.append(merge_one(k, pos, M["p1"], M["p2"], M["p3"], M["p4"], M["p5"], M["mac"], M["cot"], M["dr"]))
|
| 500 |
+
assert len(answers) == len(rows), "one answer per question required"
|
| 501 |
+
output.parent.mkdir(parents=True, exist_ok=True)
|
| 502 |
+
with output.open("w", encoding="utf-8") as f:
|
| 503 |
for r, a in zip(rows, answers):
|
| 504 |
a = str(a).strip()
|
| 505 |
assert a in {"1", "2", "3", "4"}, f"invalid answer {a!r} for q_no={r.get('q_no')}"
|
| 506 |
+
f.write(json.dumps({"q_no": r["q_no"], "subject": r["subject"], "category": r["category"],
|
| 507 |
+
"level": r["_level"], "answer": a}, ensure_ascii=False) + "\n")
|
| 508 |
+
print("\nSaved", output)
|
| 509 |
+
|
| 510 |
+
|
| 511 |
+
if __name__ == "__main__":
|
| 512 |
+
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
model_manifest.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"observed_date": "2026-10-28",
|
| 3 |
+
"model_tag": "gemma4:e4b",
|
| 4 |
+
"upstream": "https://huggingface.co/google/gemma-4-E4B-it",
|
| 5 |
+
"local_manifest_sha256": "0314351184bcfc7f88ba25bdaec896325ed6adcc5371674a988be35cd120101d",
|
| 6 |
+
"ollama_client_version_observed": "0.40.7",
|
| 7 |
+
"historical_server_versions": null,
|
| 8 |
+
"historical_kaggle_model_manifest_digest": null,
|
| 9 |
+
"total_parameters_loaded_at_inference": null,
|
| 10 |
+
"component_inventory": {
|
| 11 |
+
"model.audio_tower": 751,
|
| 12 |
+
"model.embed_audio": 1,
|
| 13 |
+
"model.embed_vision": 1,
|
| 14 |
+
"model.language_model": 719,
|
| 15 |
+
"model.vision_tower": 658,
|
| 16 |
+
"config.json": 1,
|
| 17 |
+
"generation_config.json": 1,
|
| 18 |
+
"hf_quant_config.json": 1,
|
| 19 |
+
"processor_config.json": 1,
|
| 20 |
+
"tokenizer.json": 1,
|
| 21 |
+
"tokenizer_config.json": 1,
|
| 22 |
+
"draft.masked_embedding": 2,
|
| 23 |
+
"draft.model": 46,
|
| 24 |
+
"draft.post_projection": 1,
|
| 25 |
+
"draft.pre_projection": 1,
|
| 26 |
+
"draft/config.json": 1,
|
| 27 |
+
"draft/generation_config.json": 1,
|
| 28 |
+
"draft/tokenizer.json": 1,
|
| 29 |
+
"draft/tokenizer_config.json": 1
|
| 30 |
+
},
|
| 31 |
+
"notes": [
|
| 32 |
+
"Manifest presence does not establish runtime loading.",
|
| 33 |
+
"Local Mac tensor metadata describes NVFP4 quantization and an MLX representation. The current manifest contains audio, vision and draft tensors as well as text tensors.",
|
| 34 |
+
"Kaggle notebook pull log shows blob prefixes 370c2879f176 (5.5 GB), 4cb21b935cd7 (991 MB), 05612e54110f (98 MB). These are not full hashes or a complete runtime configuration.",
|
| 35 |
+
"Both Kaggle servers report main model 7,518,069,290 and projector 478,088,384, total 7,996,157,674. Additional runtime components may be checked by organisers during reproduction."
|
| 36 |
+
],
|
| 37 |
+
"ollama_config": {
|
| 38 |
+
"model_format": "safetensors",
|
| 39 |
+
"model_family": "",
|
| 40 |
+
"model_families": null,
|
| 41 |
+
"model_type": "",
|
| 42 |
+
"file_type": "",
|
| 43 |
+
"renderer": "gemma4",
|
| 44 |
+
"parser": "gemma4",
|
| 45 |
+
"requires": "0.31.0",
|
| 46 |
+
"capabilities": [
|
| 47 |
+
"completion",
|
| 48 |
+
"vision",
|
| 49 |
+
"audio",
|
| 50 |
+
"tools",
|
| 51 |
+
"thinking"
|
| 52 |
+
],
|
| 53 |
+
"draft": {
|
| 54 |
+
"model_format": "safetensors",
|
| 55 |
+
"architecture": "Gemma4AssistantForCausalLM",
|
| 56 |
+
"tensor_prefix": "draft.",
|
| 57 |
+
"config": "draft/config.json"
|
| 58 |
+
},
|
| 59 |
+
"architecture": "",
|
| 60 |
+
"os": "",
|
| 61 |
+
"rootfs": {
|
| 62 |
+
"type": "",
|
| 63 |
+
"diff_ids": null
|
| 64 |
+
}
|
| 65 |
+
},
|
| 66 |
+
"kaggle_server_version_observed": "0.40.12",
|
| 67 |
+
"reported_parameter_counts": {
|
| 68 |
+
"main_model": 7518069290,
|
| 69 |
+
"projector": 478088384,
|
| 70 |
+
"main_model_plus_projector": 7996157674,
|
| 71 |
+
"billions": 7.996157674,
|
| 72 |
+
"source": "Participant-pasted /api/show diagnostic from Kaggle ports 11434 and 11435, 2026-10-28",
|
| 73 |
+
"scope": "Sum of reported main-model and projector metadata; not a measurement of every loaded runtime component."
|
| 74 |
+
},
|
| 75 |
+
"kaggle_loaded_models_at_diagnostic": {
|
| 76 |
+
"11434": [],
|
| 77 |
+
"11435": []
|
| 78 |
+
}
|
| 79 |
+
}
|
predictions.jsonl
CHANGED
|
@@ -7,7 +7,7 @@
|
|
| 7 |
{"q_no": 7, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 8 |
{"q_no": 8, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 9 |
{"q_no": 9, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 10 |
-
{"q_no": 10, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "
|
| 11 |
{"q_no": 11, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 12 |
{"q_no": 12, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 13 |
{"q_no": 13, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
@@ -19,9 +19,9 @@
|
|
| 19 |
{"q_no": 19, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 20 |
{"q_no": 20, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 21 |
{"q_no": 21, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 22 |
-
{"q_no": 22, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "
|
| 23 |
{"q_no": 23, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 24 |
-
{"q_no": 24, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "
|
| 25 |
{"q_no": 25, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 26 |
{"q_no": 26, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 27 |
{"q_no": 27, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
@@ -34,7 +34,7 @@
|
|
| 34 |
{"q_no": 4, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 35 |
{"q_no": 5, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 36 |
{"q_no": 6, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 37 |
-
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "
|
| 38 |
{"q_no": 8, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 39 |
{"q_no": 9, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 40 |
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
|
@@ -49,11 +49,11 @@
|
|
| 49 |
{"q_no": 19, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 50 |
{"q_no": 20, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 51 |
{"q_no": 21, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 52 |
-
{"q_no": 22, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "
|
| 53 |
{"q_no": 23, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 54 |
{"q_no": 24, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 55 |
{"q_no": 25, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 56 |
-
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "
|
| 57 |
{"q_no": 27, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 58 |
{"q_no": 28, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 59 |
{"q_no": 29, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
@@ -116,7 +116,7 @@
|
|
| 116 |
{"q_no": 6, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 117 |
{"q_no": 7, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 118 |
{"q_no": 8, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 119 |
-
{"q_no": 9, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "
|
| 120 |
{"q_no": 10, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 121 |
{"q_no": 11, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 122 |
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
@@ -131,12 +131,12 @@
|
|
| 131 |
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 132 |
{"q_no": 22, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 133 |
{"q_no": 23, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 134 |
-
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "
|
| 135 |
{"q_no": 25, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 136 |
-
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "
|
| 137 |
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 138 |
{"q_no": 28, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 139 |
-
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "
|
| 140 |
{"q_no": 30, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 141 |
{"q_no": 31, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 142 |
{"q_no": 32, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
|
@@ -205,7 +205,7 @@
|
|
| 205 |
{"q_no": 7, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 206 |
{"q_no": 8, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 207 |
{"q_no": 9, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 208 |
-
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "
|
| 209 |
{"q_no": 11, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 210 |
{"q_no": 12, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 211 |
{"q_no": 13, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
@@ -227,7 +227,7 @@
|
|
| 227 |
{"q_no": 29, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 228 |
{"q_no": 30, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 229 |
{"q_no": 31, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 230 |
-
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "
|
| 231 |
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 232 |
{"q_no": 34, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 233 |
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
@@ -243,8 +243,8 @@
|
|
| 243 |
{"q_no": 6, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 244 |
{"q_no": 7, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 245 |
{"q_no": 8, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 246 |
-
{"q_no": 9, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "
|
| 247 |
-
{"q_no": 10, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "
|
| 248 |
{"q_no": 11, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 249 |
{"q_no": 12, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 250 |
{"q_no": 13, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
|
@@ -257,7 +257,7 @@
|
|
| 257 |
{"q_no": 20, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 258 |
{"q_no": 21, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 259 |
{"q_no": 22, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 260 |
-
{"q_no": 23, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "
|
| 261 |
{"q_no": 24, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 262 |
{"q_no": 25, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 263 |
{"q_no": 26, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
|
@@ -296,7 +296,7 @@
|
|
| 296 |
{"q_no": 59, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 297 |
{"q_no": 60, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 298 |
{"q_no": 1, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 299 |
-
{"q_no": 2, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "
|
| 300 |
{"q_no": 3, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 301 |
{"q_no": 4, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 302 |
{"q_no": 5, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
@@ -321,12 +321,12 @@
|
|
| 321 |
{"q_no": 24, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 322 |
{"q_no": 25, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 323 |
{"q_no": 26, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 324 |
-
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "
|
| 325 |
-
{"q_no": 28, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "
|
| 326 |
{"q_no": 29, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 327 |
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 328 |
{"q_no": 31, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 329 |
-
{"q_no": 32, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "
|
| 330 |
{"q_no": 33, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 331 |
{"q_no": 34, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 332 |
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
@@ -334,7 +334,7 @@
|
|
| 334 |
{"q_no": 37, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 335 |
{"q_no": 38, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 336 |
{"q_no": 39, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 337 |
-
{"q_no": 40, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "
|
| 338 |
{"q_no": 41, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 339 |
{"q_no": 42, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 340 |
{"q_no": 43, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
@@ -380,7 +380,7 @@
|
|
| 380 |
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 381 |
{"q_no": 40, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 382 |
{"q_no": 41, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 383 |
-
{"q_no": 42, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "
|
| 384 |
{"q_no": 43, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 385 |
{"q_no": 44, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 386 |
{"q_no": 45, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
|
@@ -388,7 +388,7 @@
|
|
| 388 |
{"q_no": 47, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 389 |
{"q_no": 48, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 390 |
{"q_no": 49, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 391 |
-
{"q_no": 50, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "
|
| 392 |
{"q_no": 1, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 393 |
{"q_no": 2, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "3"}
|
| 394 |
{"q_no": 3, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
|
@@ -422,7 +422,7 @@
|
|
| 422 |
{"q_no": 31, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 423 |
{"q_no": 32, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "4"}
|
| 424 |
{"q_no": 33, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "3"}
|
| 425 |
-
{"q_no": 34, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "
|
| 426 |
{"q_no": 35, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 427 |
{"q_no": 36, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 428 |
{"q_no": 1, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
@@ -431,7 +431,7 @@
|
|
| 431 |
{"q_no": 4, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 432 |
{"q_no": 5, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 433 |
{"q_no": 6, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 434 |
-
{"q_no": 7, "subject": "History", "category": "Humanities", "level": "easy", "answer": "
|
| 435 |
{"q_no": 8, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 436 |
{"q_no": 9, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 437 |
{"q_no": 10, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
@@ -452,9 +452,9 @@
|
|
| 452 |
{"q_no": 25, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 453 |
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 454 |
{"q_no": 27, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 455 |
-
{"q_no": 28, "subject": "History", "category": "Humanities", "level": "easy", "answer": "
|
| 456 |
{"q_no": 29, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 457 |
-
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "easy", "answer": "
|
| 458 |
{"q_no": 31, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 459 |
{"q_no": 32, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 460 |
{"q_no": 33, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
@@ -469,13 +469,13 @@
|
|
| 469 |
{"q_no": 2, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 470 |
{"q_no": 3, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 471 |
{"q_no": 4, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 472 |
-
{"q_no": 5, "subject": "Science", "category": "stem", "level": "easy", "answer": "
|
| 473 |
{"q_no": 6, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 474 |
{"q_no": 7, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 475 |
{"q_no": 8, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 476 |
{"q_no": 9, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 477 |
{"q_no": 10, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 478 |
-
{"q_no": 11, "subject": "Science", "category": "stem", "level": "easy", "answer": "
|
| 479 |
{"q_no": 12, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 480 |
{"q_no": 13, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 481 |
{"q_no": 14, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
|
@@ -559,14 +559,14 @@
|
|
| 559 |
{"q_no": 92, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 560 |
{"q_no": 1, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 561 |
{"q_no": 2, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 562 |
-
{"q_no": 3, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "
|
| 563 |
{"q_no": 4, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 564 |
{"q_no": 5, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 565 |
{"q_no": 6, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 566 |
{"q_no": 7, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 567 |
{"q_no": 8, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 568 |
{"q_no": 9, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 569 |
-
{"q_no": 10, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "
|
| 570 |
{"q_no": 11, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 571 |
{"q_no": 12, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 572 |
{"q_no": 13, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
|
@@ -580,7 +580,7 @@
|
|
| 580 |
{"q_no": 21, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 581 |
{"q_no": 22, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 582 |
{"q_no": 23, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 583 |
-
{"q_no": 24, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "
|
| 584 |
{"q_no": 25, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 585 |
{"q_no": 26, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 586 |
{"q_no": 27, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
|
@@ -622,7 +622,7 @@
|
|
| 622 |
{"q_no": 63, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 623 |
{"q_no": 64, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 624 |
{"q_no": 65, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 625 |
-
{"q_no": 66, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "
|
| 626 |
{"q_no": 67, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 627 |
{"q_no": 68, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 628 |
{"q_no": 69, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
|
@@ -632,7 +632,7 @@
|
|
| 632 |
{"q_no": 73, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 633 |
{"q_no": 74, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 634 |
{"q_no": 75, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 635 |
-
{"q_no": 76, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "
|
| 636 |
{"q_no": 77, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 637 |
{"q_no": 78, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 638 |
{"q_no": 79, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
|
@@ -735,7 +735,7 @@
|
|
| 735 |
{"q_no": 56, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 736 |
{"q_no": 57, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 737 |
{"q_no": 58, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 738 |
-
{"q_no": 59, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "
|
| 739 |
{"q_no": 60, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 740 |
{"q_no": 61, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 741 |
{"q_no": 62, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
|
@@ -784,7 +784,7 @@
|
|
| 784 |
{"q_no": 105, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 785 |
{"q_no": 106, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 786 |
{"q_no": 107, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 787 |
-
{"q_no": 108, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "
|
| 788 |
{"q_no": 109, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 789 |
{"q_no": 110, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 790 |
{"q_no": 111, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
|
@@ -878,7 +878,7 @@
|
|
| 878 |
{"q_no": 25, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 879 |
{"q_no": 26, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 880 |
{"q_no": 27, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 881 |
-
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "
|
| 882 |
{"q_no": 29, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 883 |
{"q_no": 30, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 884 |
{"q_no": 31, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
|
@@ -1082,7 +1082,7 @@
|
|
| 1082 |
{"q_no": 151, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 1083 |
{"q_no": 152, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 1084 |
{"q_no": 153, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1085 |
-
{"q_no": 154, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "
|
| 1086 |
{"q_no": 155, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1087 |
{"q_no": 156, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1088 |
{"q_no": 157, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
|
@@ -1129,7 +1129,7 @@
|
|
| 1129 |
{"q_no": 39, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 1130 |
{"q_no": 40, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 1131 |
{"q_no": 1, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1132 |
-
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "
|
| 1133 |
{"q_no": 3, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1134 |
{"q_no": 4, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1135 |
{"q_no": 5, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
|
@@ -1147,7 +1147,7 @@
|
|
| 1147 |
{"q_no": 17, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1148 |
{"q_no": 18, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1149 |
{"q_no": 19, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1150 |
-
{"q_no": 20, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "
|
| 1151 |
{"q_no": 21, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1152 |
{"q_no": 22, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1153 |
{"q_no": 23, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
|
@@ -1231,7 +1231,7 @@
|
|
| 1231 |
{"q_no": 101, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1232 |
{"q_no": 102, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1233 |
{"q_no": 103, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1234 |
-
{"q_no": 104, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "
|
| 1235 |
{"q_no": 105, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1236 |
{"q_no": 106, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1237 |
{"q_no": 107, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
|
@@ -1335,7 +1335,7 @@
|
|
| 1335 |
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1336 |
{"q_no": 16, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1337 |
{"q_no": 17, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 1338 |
-
{"q_no": 18, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "
|
| 1339 |
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1340 |
{"q_no": 20, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 1341 |
{"q_no": 21, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
|
@@ -1363,7 +1363,7 @@
|
|
| 1363 |
{"q_no": 7, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 1364 |
{"q_no": 8, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1365 |
{"q_no": 9, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1366 |
-
{"q_no": 10, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "
|
| 1367 |
{"q_no": 11, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1368 |
{"q_no": 12, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1369 |
{"q_no": 13, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
|
@@ -1455,7 +1455,7 @@
|
|
| 1455 |
{"q_no": 58, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1456 |
{"q_no": 59, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1457 |
{"q_no": 60, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1458 |
-
{"q_no": 61, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "
|
| 1459 |
{"q_no": 62, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1460 |
{"q_no": 63, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1461 |
{"q_no": 64, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
|
@@ -1601,7 +1601,7 @@
|
|
| 1601 |
{"q_no": 7, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1602 |
{"q_no": 8, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 1603 |
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 1604 |
-
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "
|
| 1605 |
{"q_no": 11, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 1606 |
{"q_no": 12, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1607 |
{"q_no": 13, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
|
@@ -1644,7 +1644,7 @@
|
|
| 1644 |
{"q_no": 50, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1645 |
{"q_no": 51, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 1646 |
{"q_no": 52, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1647 |
-
{"q_no": 53, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "
|
| 1648 |
{"q_no": 54, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 1649 |
{"q_no": 55, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1650 |
{"q_no": 56, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
|
|
|
| 7 |
{"q_no": 7, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 8 |
{"q_no": 8, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 9 |
{"q_no": 9, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 10 |
+
{"q_no": 10, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 11 |
{"q_no": 11, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 12 |
{"q_no": 12, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 13 |
{"q_no": 13, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
|
|
| 19 |
{"q_no": 19, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 20 |
{"q_no": 20, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 21 |
{"q_no": 21, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 22 |
+
{"q_no": 22, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 23 |
{"q_no": 23, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 24 |
+
{"q_no": 24, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 25 |
{"q_no": 25, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 26 |
{"q_no": 26, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 27 |
{"q_no": 27, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
|
|
| 34 |
{"q_no": 4, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 35 |
{"q_no": 5, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 36 |
{"q_no": 6, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 37 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 38 |
{"q_no": 8, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 39 |
{"q_no": 9, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 40 |
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
|
|
|
| 49 |
{"q_no": 19, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 50 |
{"q_no": 20, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 51 |
{"q_no": 21, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 52 |
+
{"q_no": 22, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 53 |
{"q_no": 23, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 54 |
{"q_no": 24, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 55 |
{"q_no": 25, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 56 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 57 |
{"q_no": 27, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 58 |
{"q_no": 28, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 59 |
{"q_no": 29, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
|
|
| 116 |
{"q_no": 6, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 117 |
{"q_no": 7, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 118 |
{"q_no": 8, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 119 |
+
{"q_no": 9, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 120 |
{"q_no": 10, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 121 |
{"q_no": 11, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 122 |
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
|
|
| 131 |
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 132 |
{"q_no": 22, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 133 |
{"q_no": 23, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 134 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 135 |
{"q_no": 25, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 136 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 137 |
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 138 |
{"q_no": 28, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 139 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 140 |
{"q_no": 30, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 141 |
{"q_no": 31, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 142 |
{"q_no": 32, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
|
|
|
| 205 |
{"q_no": 7, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 206 |
{"q_no": 8, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 207 |
{"q_no": 9, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 208 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 209 |
{"q_no": 11, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 210 |
{"q_no": 12, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 211 |
{"q_no": 13, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
|
|
| 227 |
{"q_no": 29, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 228 |
{"q_no": 30, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 229 |
{"q_no": 31, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 230 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 231 |
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 232 |
{"q_no": 34, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 233 |
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
|
|
| 243 |
{"q_no": 6, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 244 |
{"q_no": 7, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 245 |
{"q_no": 8, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 246 |
+
{"q_no": 9, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 247 |
+
{"q_no": 10, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 248 |
{"q_no": 11, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 249 |
{"q_no": 12, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 250 |
{"q_no": 13, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
|
|
|
| 257 |
{"q_no": 20, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 258 |
{"q_no": 21, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 259 |
{"q_no": 22, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 260 |
+
{"q_no": 23, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 261 |
{"q_no": 24, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 262 |
{"q_no": 25, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 263 |
{"q_no": 26, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
|
|
|
| 296 |
{"q_no": 59, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 297 |
{"q_no": 60, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 298 |
{"q_no": 1, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 299 |
+
{"q_no": 2, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 300 |
{"q_no": 3, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 301 |
{"q_no": 4, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 302 |
{"q_no": 5, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
|
|
|
| 321 |
{"q_no": 24, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 322 |
{"q_no": 25, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 323 |
{"q_no": 26, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 324 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 325 |
+
{"q_no": 28, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 326 |
{"q_no": 29, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 327 |
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 328 |
{"q_no": 31, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 329 |
+
{"q_no": 32, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 330 |
{"q_no": 33, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 331 |
{"q_no": 34, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 332 |
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
|
|
| 334 |
{"q_no": 37, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 335 |
{"q_no": 38, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 336 |
{"q_no": 39, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 337 |
+
{"q_no": 40, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 338 |
{"q_no": 41, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 339 |
{"q_no": 42, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 340 |
{"q_no": 43, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
|
|
| 380 |
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 381 |
{"q_no": 40, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 382 |
{"q_no": 41, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 383 |
+
{"q_no": 42, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 384 |
{"q_no": 43, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 385 |
{"q_no": 44, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 386 |
{"q_no": 45, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
|
|
|
| 388 |
{"q_no": 47, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 389 |
{"q_no": 48, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 390 |
{"q_no": 49, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 391 |
+
{"q_no": 50, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 392 |
{"q_no": 1, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 393 |
{"q_no": 2, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "3"}
|
| 394 |
{"q_no": 3, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
|
|
|
| 422 |
{"q_no": 31, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 423 |
{"q_no": 32, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "4"}
|
| 424 |
{"q_no": 33, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "3"}
|
| 425 |
+
{"q_no": 34, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 426 |
{"q_no": 35, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 427 |
{"q_no": 36, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 428 |
{"q_no": 1, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
|
|
| 431 |
{"q_no": 4, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 432 |
{"q_no": 5, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 433 |
{"q_no": 6, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 434 |
+
{"q_no": 7, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 435 |
{"q_no": 8, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 436 |
{"q_no": 9, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 437 |
{"q_no": 10, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
|
|
|
| 452 |
{"q_no": 25, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 453 |
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 454 |
{"q_no": 27, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 455 |
+
{"q_no": 28, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 456 |
{"q_no": 29, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 457 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 458 |
{"q_no": 31, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 459 |
{"q_no": 32, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 460 |
{"q_no": 33, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
|
|
|
| 469 |
{"q_no": 2, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 470 |
{"q_no": 3, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 471 |
{"q_no": 4, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 472 |
+
{"q_no": 5, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 473 |
{"q_no": 6, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 474 |
{"q_no": 7, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 475 |
{"q_no": 8, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 476 |
{"q_no": 9, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 477 |
{"q_no": 10, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 478 |
+
{"q_no": 11, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 479 |
{"q_no": 12, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 480 |
{"q_no": 13, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 481 |
{"q_no": 14, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
|
|
|
| 559 |
{"q_no": 92, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 560 |
{"q_no": 1, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 561 |
{"q_no": 2, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 562 |
+
{"q_no": 3, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 563 |
{"q_no": 4, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 564 |
{"q_no": 5, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 565 |
{"q_no": 6, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 566 |
{"q_no": 7, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 567 |
{"q_no": 8, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 568 |
{"q_no": 9, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 569 |
+
{"q_no": 10, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 570 |
{"q_no": 11, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 571 |
{"q_no": 12, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 572 |
{"q_no": 13, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
|
|
|
| 580 |
{"q_no": 21, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 581 |
{"q_no": 22, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 582 |
{"q_no": 23, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 583 |
+
{"q_no": 24, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 584 |
{"q_no": 25, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 585 |
{"q_no": 26, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 586 |
{"q_no": 27, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
|
|
|
| 622 |
{"q_no": 63, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 623 |
{"q_no": 64, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 624 |
{"q_no": 65, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 625 |
+
{"q_no": 66, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 626 |
{"q_no": 67, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 627 |
{"q_no": 68, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 628 |
{"q_no": 69, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
|
|
|
| 632 |
{"q_no": 73, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 633 |
{"q_no": 74, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 634 |
{"q_no": 75, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 635 |
+
{"q_no": 76, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 636 |
{"q_no": 77, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 637 |
{"q_no": 78, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 638 |
{"q_no": 79, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
|
|
|
| 735 |
{"q_no": 56, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 736 |
{"q_no": 57, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 737 |
{"q_no": 58, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 738 |
+
{"q_no": 59, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 739 |
{"q_no": 60, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 740 |
{"q_no": 61, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 741 |
{"q_no": 62, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
|
|
|
| 784 |
{"q_no": 105, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 785 |
{"q_no": 106, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 786 |
{"q_no": 107, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 787 |
+
{"q_no": 108, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 788 |
{"q_no": 109, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 789 |
{"q_no": 110, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 790 |
{"q_no": 111, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
|
|
|
| 878 |
{"q_no": 25, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 879 |
{"q_no": 26, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 880 |
{"q_no": 27, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 881 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 882 |
{"q_no": 29, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 883 |
{"q_no": 30, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 884 |
{"q_no": 31, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
|
|
|
| 1082 |
{"q_no": 151, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 1083 |
{"q_no": 152, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 1084 |
{"q_no": 153, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1085 |
+
{"q_no": 154, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1086 |
{"q_no": 155, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1087 |
{"q_no": 156, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1088 |
{"q_no": 157, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
|
|
|
| 1129 |
{"q_no": 39, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 1130 |
{"q_no": 40, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 1131 |
{"q_no": 1, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1132 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1133 |
{"q_no": 3, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1134 |
{"q_no": 4, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1135 |
{"q_no": 5, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
|
|
|
| 1147 |
{"q_no": 17, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1148 |
{"q_no": 18, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1149 |
{"q_no": 19, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1150 |
+
{"q_no": 20, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1151 |
{"q_no": 21, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1152 |
{"q_no": 22, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1153 |
{"q_no": 23, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
|
|
|
| 1231 |
{"q_no": 101, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1232 |
{"q_no": 102, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1233 |
{"q_no": 103, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 1234 |
+
{"q_no": 104, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1235 |
{"q_no": 105, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1236 |
{"q_no": 106, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1237 |
{"q_no": 107, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
|
|
|
| 1335 |
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 1336 |
{"q_no": 16, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1337 |
{"q_no": 17, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 1338 |
+
{"q_no": 18, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 1339 |
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 1340 |
{"q_no": 20, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 1341 |
{"q_no": 21, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
|
|
|
| 1363 |
{"q_no": 7, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 1364 |
{"q_no": 8, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1365 |
{"q_no": 9, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1366 |
+
{"q_no": 10, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 1367 |
{"q_no": 11, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1368 |
{"q_no": 12, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1369 |
{"q_no": 13, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
|
|
|
| 1455 |
{"q_no": 58, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1456 |
{"q_no": 59, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1457 |
{"q_no": 60, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1458 |
+
{"q_no": 61, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1459 |
{"q_no": 62, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 1460 |
{"q_no": 63, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 1461 |
{"q_no": 64, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
|
|
|
| 1601 |
{"q_no": 7, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1602 |
{"q_no": 8, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 1603 |
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 1604 |
+
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1605 |
{"q_no": 11, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 1606 |
{"q_no": 12, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1607 |
{"q_no": 13, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
|
|
|
| 1644 |
{"q_no": 50, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1645 |
{"q_no": 51, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 1646 |
{"q_no": 52, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1647 |
+
{"q_no": 53, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 1648 |
{"q_no": 54, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 1649 |
{"q_no": 55, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 1650 |
{"q_no": 56, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
requirements.txt
CHANGED
|
@@ -1,5 +1,4 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
huggingface_hub
|
| 5 |
-
numpy>=1.24.0
|
|
|
|
| 1 |
+
# Dependency for dataset download in the reconstructed runner (tested at packaging).
|
| 2 |
+
# The original Ollama inference requests and saved-pass merge use Python stdlib only.
|
| 3 |
+
# This is NOT claimed to be the original Kaggle environment lock; see ENVIRONMENT.md.
|
| 4 |
+
huggingface_hub==2.3.0
|
|
|
submission_manifest.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"team": "riswan",
|
| 3 |
+
"codabench_submission_id": 138,
|
| 4 |
+
"codabench_filename": "submission_think_ens_v9_final.zip",
|
| 5 |
+
"score": {
|
| 6 |
+
"macro": 64.2482,
|
| 7 |
+
"easy": 65.2648,
|
| 8 |
+
"medium": 56.3456,
|
| 9 |
+
"hard": 71.134
|
| 10 |
+
},
|
| 11 |
+
"score_evidence": "User-provided leaderboard screenshot, 2026-10-28; provisional, not recomputed with gold labels.",
|
| 12 |
+
"predictions_sha256": "0998ea38f240c05103a7572a9a367a553f4e2b7664a31fe70f5c9668214dd554",
|
| 13 |
+
"zip_sha256": "8e11a43b16f6d1ad4a8979f9e2fa1954c3cae48549ec7b9591d3bd31a9cc8735",
|
| 14 |
+
"passes": {
|
| 15 |
+
"p1": {
|
| 16 |
+
"file": "training/passes/pass1_think_2048_orig.jsonl",
|
| 17 |
+
"rows": 2238,
|
| 18 |
+
"sha256": "602f9f03dd0e655fe8246826a02896bd1f03e815588a0df7c24838268c890568",
|
| 19 |
+
"original_project_path": "data/predictions_gemma4_think_kaggle_2238.jsonl",
|
| 20 |
+
"matches_original_source": true
|
| 21 |
+
},
|
| 22 |
+
"p2": {
|
| 23 |
+
"file": "training/passes/pass2_think_4096_rot1.jsonl",
|
| 24 |
+
"rows": 1100,
|
| 25 |
+
"sha256": "fecbb30512b11532b28204c5bb9262f87da1d9d7e9e7ae59d7a636d6f7133d50",
|
| 26 |
+
"original_project_path": "predictions_gemma4_think_pass2_ckpt.jsonl",
|
| 27 |
+
"matches_original_source": true
|
| 28 |
+
},
|
| 29 |
+
"p3": {
|
| 30 |
+
"file": "training/passes/pass3_think_4096_hint.jsonl",
|
| 31 |
+
"rows": 720,
|
| 32 |
+
"sha256": "cc724b6eba5b2a42fea1dcd8d143aeedb68406f412fd04fdb0d88028acb2be6c",
|
| 33 |
+
"original_project_path": "predictions_gemma4_think_pass3_ckpt.jsonl",
|
| 34 |
+
"matches_original_source": true
|
| 35 |
+
},
|
| 36 |
+
"p4": {
|
| 37 |
+
"file": "training/passes/pass4_think_4096_rot2.jsonl",
|
| 38 |
+
"rows": 712,
|
| 39 |
+
"sha256": "2b2535b1fd58606d2dd2fe43c268a9901df737f2812cabba4afcbde3572f2292",
|
| 40 |
+
"original_project_path": "predictions_gemma4_think_pass4_ckpt.jsonl",
|
| 41 |
+
"matches_original_source": true
|
| 42 |
+
},
|
| 43 |
+
"p5": {
|
| 44 |
+
"file": "training/passes/pass5_think_4096_rot3.jsonl",
|
| 45 |
+
"rows": 712,
|
| 46 |
+
"sha256": "2b1fdbc3e2abd4ab1c0dc7990fdc0efe2840fe897892508d6d683e967bfec3d7",
|
| 47 |
+
"original_project_path": "predictions_gemma4_think_pass5_ckpt.jsonl",
|
| 48 |
+
"matches_original_source": true
|
| 49 |
+
},
|
| 50 |
+
"mac": {
|
| 51 |
+
"file": "training/passes/mac_think_2048_orig.jsonl",
|
| 52 |
+
"rows": 1160,
|
| 53 |
+
"sha256": "a24d6da87db1b20f82a908f55cc7af9c6320886fd25edf99b5b9673855d468dd",
|
| 54 |
+
"original_project_path": "data/predictions_gemma4_think_ckpt.jsonl",
|
| 55 |
+
"matches_original_source": true
|
| 56 |
+
},
|
| 57 |
+
"cot": {
|
| 58 |
+
"file": "training/passes/baseline_cot_4shot.jsonl",
|
| 59 |
+
"rows": 2238,
|
| 60 |
+
"sha256": "9ee658f029f62d37d0c0bcdef8b15151a6f79d31a9ed780b898e836d26641375",
|
| 61 |
+
"original_project_path": "data/predictions_gemma4_cot.jsonl",
|
| 62 |
+
"matches_original_source": true
|
| 63 |
+
},
|
| 64 |
+
"dr": {
|
| 65 |
+
"file": "training/passes/baseline_direct_4shot.jsonl",
|
| 66 |
+
"rows": 2238,
|
| 67 |
+
"sha256": "24d9a51a2ad13ab4506398bf54b7989e7511fa82c9d36a954fda210d127254b5",
|
| 68 |
+
"original_project_path": "data/predictions_gemma4_direct.jsonl",
|
| 69 |
+
"matches_original_source": true
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
}
|
training/README.md
CHANGED
|
@@ -1,18 +1,19 @@
|
|
| 1 |
-
# Training
|
| 2 |
|
| 3 |
-
|
| 4 |
-
**No model fine-tuning, parameter updates, or LoRA adapter training was performed.**
|
| 5 |
|
| 6 |
-
|
| 7 |
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
##
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
| 1 |
+
# Training, input preparation and historical inference
|
| 2 |
|
| 3 |
+
No parameter-training stage, LoRA adapter or fine-tuned weights is evidenced in the pipeline that generated submission #138. This is an inference ensemble containing **four-shot baselines**, not a wholly zero-shot system. Preparing prompts and selecting merge rules are distinct from parameter training; the documentation does not certify that the selection history complied with the competition's test-tuning restriction.
|
|
|
|
| 4 |
|
| 5 |
+
## Files
|
| 6 |
|
| 7 |
+
- `src/few_shot_prompts.py`: embedded category-specific examples and prompt construction, exactly as found in the interrupted package. The actual examples are also exported to `../data/few_shot_examples.json`.
|
| 8 |
+
- `src/few_shot_runner.py`, `src/baseline_runner.py`, `src/prompts.py`: original local runner source snapshots. They include optional validation functionality; this package does not include validation labels or claim those functions were part of final inference. Historical comments asserting external provenance or compliance are unverified author comments, not audit conclusions.
|
| 9 |
+
- `kaggle_cells/`: prior stage source snapshots. Cell 5 now reconstructs the disagreement-based target set in place of an empty placeholder. These snapshots are historical workflow evidence with Kaggle-specific paths; `../inference.py` is the portable reconstruction.
|
| 10 |
+
- `evidence/notebook09f65026da.ipynb`: unchanged participant-exported notebook containing setup, actual Pass-4/5 code and completion logs, and a package-version listing. Use this as the primary source for those stages.
|
| 11 |
+
- `passes/`: model predictions, **not gold answers or training labels**. All eight are required for exact historical replay. They are never inputs to default fresh inference.
|
| 12 |
+
- `passes/positional_option_keys.json`: saved keys selected from question option text by a regex, used only in archival replay. Fresh inference computes the filter from incoming question text.
|
| 13 |
+
- `ensemble_v9.py`: exact final voting logic, now with missing-file/invalid-answer checks. Vote weights were not changed.
|
| 14 |
|
| 15 |
+
## Extra data
|
| 16 |
+
|
| 17 |
+
The final baseline prompts use the examples embedded in the source. The participant previously described external practice data as collected from public sites, but the source code does not record source URLs for these examples. Their authorship, licences and whether closed APIs helped create them need author confirmation. No URL or human verification claim has been invented. Independent practice data prepared elsewhere in the project is not assumed to have been used for this final submission.
|
| 18 |
+
|
| 19 |
+
The supplied evidence establishes source files and saved model outputs, not a complete history of development decisions. See `../REPRODUCIBILITY.md` for unresolved issues.
|
training/ensemble_v9.py
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""
|
| 3 |
+
Final merge ("v9") that produced the leaderboard submission (Codabench ID #138, 64.2482).
|
| 4 |
+
|
| 5 |
+
It is a deterministic weighted vote over the saved raw passes in training/passes/.
|
| 6 |
+
No model is called and no labels are used. This is the exact logic that was run, cleaned only
|
| 7 |
+
to read from the repo layout.
|
| 8 |
+
|
| 9 |
+
python training/ensemble_v9.py # -> predictions_v9_rebuilt.jsonl
|
| 10 |
+
cmp predictions_v9_rebuilt.jsonl predictions.jsonl # identical
|
| 11 |
+
|
| 12 |
+
Each source is a dict {(q_no, subject, category, level): "1".."4"} (answers in ORIGINAL option order):
|
| 13 |
+
p1 : Pass 1 think, 2048 tok, original order, all 2238 questions
|
| 14 |
+
p2 : Pass 2 think, 4096 tok, options rotated by 1 (hard + questions where CoT != Direct)
|
| 15 |
+
p3 : Pass 3 think, 4096 tok, system prompt with Sanskrit/Pali/technical-term hint (uncertain set)
|
| 16 |
+
p4 : Pass 4 think, 4096 tok, options rotated by 2 (uncertain set)
|
| 17 |
+
p5 : Pass 5 think, 4096 tok, options rotated by 3 (uncertain set)
|
| 18 |
+
mac : repeat of the Pass 1 configuration on a second machine (Apple Metal), disputed + hard questions
|
| 19 |
+
cot : 4-shot English CoT baseline (think=False)
|
| 20 |
+
dr : 4-shot direct-answer baseline (think=False)
|
| 21 |
+
Rotated passes (p2, p4, p5) are ignored on questions whose options refer to option positions
|
| 22 |
+
("ඉහත", "above", "1 සහ 2", ...) because rotation changes the meaning of such options.
|
| 23 |
+
"""
|
| 24 |
+
import argparse
|
| 25 |
+
import json
|
| 26 |
+
import re
|
| 27 |
+
from collections import Counter
|
| 28 |
+
from pathlib import Path
|
| 29 |
+
|
| 30 |
+
POS_RE = re.compile(r"ඉහත|above|\b[1-4]\s*(?:හා|සහ|හෝ|,|and|or)\s*[1-4]\b", re.I)
|
| 31 |
+
|
| 32 |
+
PASS_FILES = {
|
| 33 |
+
"p1": "pass1_think_2048_orig.jsonl",
|
| 34 |
+
"p2": "pass2_think_4096_rot1.jsonl",
|
| 35 |
+
"p3": "pass3_think_4096_hint.jsonl",
|
| 36 |
+
"p4": "pass4_think_4096_rot2.jsonl",
|
| 37 |
+
"p5": "pass5_think_4096_rot3.jsonl",
|
| 38 |
+
"mac": "mac_think_2048_orig.jsonl",
|
| 39 |
+
"cot": "baseline_cot_4shot.jsonl",
|
| 40 |
+
"dr": "baseline_direct_4shot.jsonl",
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def key_of(r):
|
| 45 |
+
return (r["q_no"], r["subject"], r["category"], r["level"])
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
def load_map(path):
|
| 49 |
+
m = {}
|
| 50 |
+
with Path(path).open(encoding="utf-8") as f:
|
| 51 |
+
for line_no, line in enumerate(f, 1):
|
| 52 |
+
if line.strip():
|
| 53 |
+
r = json.loads(line)
|
| 54 |
+
k = key_of(r)
|
| 55 |
+
answer = str(r["answer"])
|
| 56 |
+
if k in m or answer not in {"1", "2", "3", "4"}:
|
| 57 |
+
raise ValueError(f"Duplicate key or invalid answer: {path}:{line_no}")
|
| 58 |
+
m[k] = answer
|
| 59 |
+
return m
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
def merge_one(k, pos, p1, p2, p3, p4, p5, mac, cot, dr):
|
| 63 |
+
"""Weighted vote for one question. k = (q_no, subject, category, level)."""
|
| 64 |
+
lvl = k[3]
|
| 65 |
+
v = Counter()
|
| 66 |
+
if lvl == "hard":
|
| 67 |
+
v[p1[k]] += 1.15
|
| 68 |
+
if k in mac: v[mac[k]] += 1.10
|
| 69 |
+
if k in p3: v[p3[k]] += 1.10
|
| 70 |
+
for m in (p2, p4, p5):
|
| 71 |
+
if k in m and k not in pos: v[m[k]] += 1.10
|
| 72 |
+
if k in cot: v[cot[k]] += 0.35
|
| 73 |
+
if k in dr: v[dr[k]] += 0.35
|
| 74 |
+
elif lvl == "medium":
|
| 75 |
+
v[p1[k]] += 1.25
|
| 76 |
+
if k in mac: v[mac[k]] += 1.05
|
| 77 |
+
if k in p3: v[p3[k]] += 1.10
|
| 78 |
+
for m in (p2, p4, p5):
|
| 79 |
+
if k in m and k not in pos: v[m[k]] += 1.05
|
| 80 |
+
if k in cot: v[cot[k]] += 0.35
|
| 81 |
+
if k in dr: v[dr[k]] += 0.35
|
| 82 |
+
else: # easy: Pass 1 anchored at 2.40, so only a margin >= 2 supermajority can overturn it
|
| 83 |
+
v[p1[k]] += 2.40
|
| 84 |
+
if k in mac: v[mac[k]] += 1.0
|
| 85 |
+
if k in p3: v[p3[k]] += 1.0
|
| 86 |
+
for m in (p2, p4, p5):
|
| 87 |
+
if k in m and k not in pos: v[m[k]] += 0.95
|
| 88 |
+
if k in cot: v[cot[k]] += 0.30
|
| 89 |
+
if k in dr: v[dr[k]] += 0.30
|
| 90 |
+
return v.most_common(1)[0][0]
|
| 91 |
+
|
| 92 |
+
|
| 93 |
+
def positional_keys(questions):
|
| 94 |
+
"""Keys of questions whose option text refers to option positions (input-only regex)."""
|
| 95 |
+
pos = set()
|
| 96 |
+
for q in questions:
|
| 97 |
+
if POS_RE.search(" ".join(map(str, q["choices"]))):
|
| 98 |
+
pos.add((q["q_no"], q["subject"], q["category"], q["level"]))
|
| 99 |
+
return pos
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
def main():
|
| 103 |
+
ap = argparse.ArgumentParser()
|
| 104 |
+
ap.add_argument("--passes", default=str(Path(__file__).parent / "passes"))
|
| 105 |
+
ap.add_argument("--data", default=None,
|
| 106 |
+
help="dir with easy/medium/hard/*.json (needed only for the positional-option filter)")
|
| 107 |
+
ap.add_argument("--out", default="predictions_v9_rebuilt.jsonl")
|
| 108 |
+
a = ap.parse_args()
|
| 109 |
+
|
| 110 |
+
if Path(a.out).resolve() == (Path(__file__).resolve().parents[1] / "predictions.jsonl"):
|
| 111 |
+
raise ValueError("Refusing to overwrite the submitted predictions.jsonl; choose a different --out.")
|
| 112 |
+
maps = {n: load_map(Path(a.passes) / f) for n, f in PASS_FILES.items()}
|
| 113 |
+
ref = [json.loads(l) for l in open(Path(a.passes) / PASS_FILES["p1"], encoding="utf-8") if l.strip()]
|
| 114 |
+
|
| 115 |
+
pos = set()
|
| 116 |
+
if a.data:
|
| 117 |
+
qs = []
|
| 118 |
+
for lvl in ("easy", "medium", "hard"):
|
| 119 |
+
for f in sorted((Path(a.data) / lvl).glob("*.json")):
|
| 120 |
+
for q in json.load(open(f, encoding="utf-8")):
|
| 121 |
+
q["level"] = lvl
|
| 122 |
+
qs.append(q)
|
| 123 |
+
pos = positional_keys(qs)
|
| 124 |
+
else:
|
| 125 |
+
pos_file = Path(a.passes) / "positional_option_keys.json"
|
| 126 |
+
pos = {tuple(x) for x in json.load(open(pos_file, encoding="utf-8"))}
|
| 127 |
+
|
| 128 |
+
with open(a.out, "w", encoding="utf-8") as f:
|
| 129 |
+
for q in ref:
|
| 130 |
+
k = key_of(q)
|
| 131 |
+
ans = merge_one(k, pos, maps["p1"], maps["p2"], maps["p3"], maps["p4"], maps["p5"],
|
| 132 |
+
maps["mac"], maps["cot"], maps["dr"])
|
| 133 |
+
f.write(json.dumps({"q_no": q["q_no"], "subject": q["subject"], "category": q["category"],
|
| 134 |
+
"level": q["level"], "answer": ans}, ensure_ascii=False) + "\n")
|
| 135 |
+
print("wrote", a.out)
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
if __name__ == "__main__":
|
| 139 |
+
main()
|
training/evidence/dataset_loader_check.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"huggingface_hub": "2.3.0",
|
| 3 |
+
"remote_question_count": 2238,
|
| 4 |
+
"local_question_count": 2238,
|
| 5 |
+
"keys_and_question_text_match": true,
|
| 6 |
+
"fresh_model_run": false
|
| 7 |
+
}
|
training/evidence/kaggle_environment.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"notebook_metadata": {
|
| 3 |
+
"kernelspec": {
|
| 4 |
+
"language": "python",
|
| 5 |
+
"display_name": "Python 3",
|
| 6 |
+
"name": "python3"
|
| 7 |
+
},
|
| 8 |
+
"language_info": {
|
| 9 |
+
"name": "python",
|
| 10 |
+
"version": "3.13.15",
|
| 11 |
+
"mimetype": "text/x-python",
|
| 12 |
+
"codemirror_mode": {
|
| 13 |
+
"name": "ipython",
|
| 14 |
+
"version": 3
|
| 15 |
+
},
|
| 16 |
+
"pygments_lexer": "ipython3",
|
| 17 |
+
"nbconvert_exporter": "python",
|
| 18 |
+
"file_extension": ".py"
|
| 19 |
+
},
|
| 20 |
+
"kaggle": {
|
| 21 |
+
"accelerator": "none",
|
| 22 |
+
"dataSources": [],
|
| 23 |
+
"dockerImageVersionId": 28755,
|
| 24 |
+
"isInternetEnabled": false,
|
| 25 |
+
"language": "python",
|
| 26 |
+
"sourceType": "notebook",
|
| 27 |
+
"isGpuEnabled": false
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"note": "Notebook metadata reports no active GPU at export. Historical inference outputs and setup cell document dual GPU execution. Freeze cell execution count is 1; do not infer every earlier pass used this identical environment."
|
| 31 |
+
}
|
training/evidence/kaggle_parameter_metadata.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"source": "Diagnostic output pasted by participant in chat, not the full parameter_audit.json file",
|
| 3 |
+
"date": "2026-10-28",
|
| 4 |
+
"servers": {
|
| 5 |
+
"11434": {
|
| 6 |
+
"version": "0.40.12",
|
| 7 |
+
"loaded_models": [],
|
| 8 |
+
"details.parameter_size": "7.5B",
|
| 9 |
+
"model_info.general.parameter_count": 7518069290,
|
| 10 |
+
"projector_info.general.parameter_count": 478088384
|
| 11 |
+
},
|
| 12 |
+
"11435": {
|
| 13 |
+
"version": "0.40.12",
|
| 14 |
+
"loaded_models": [],
|
| 15 |
+
"details.parameter_size": "7.5B",
|
| 16 |
+
"model_info.general.parameter_count": 7518069290,
|
| 17 |
+
"projector_info.general.parameter_count": 478088384
|
| 18 |
+
}
|
| 19 |
+
},
|
| 20 |
+
"reported_main_plus_projector": 7996157674,
|
| 21 |
+
"runtime_component_verification": "Deferred to organisers; no active model runner at capture."
|
| 22 |
+
}
|
training/evidence/notebook09f65026da.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/evidence/original_cell5_pass4_pass5.py
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# === CELL 5 (standalone): PASS 4 (rot +2) and PASS 5 (rot +3) on the 720 uncertain questions, 4096 tokens ===
|
| 2 |
+
import os, re, json, time, zipfile, shutil, subprocess, urllib.request
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 5 |
+
|
| 6 |
+
# 1. Ollama servers (restart if the session was reset)
|
| 7 |
+
for idx, port in [(0, 11434), (1, 11435)]:
|
| 8 |
+
try:
|
| 9 |
+
urllib.request.urlopen(f"http://127.0.0.1:{port}/api/tags", timeout=3)
|
| 10 |
+
except Exception:
|
| 11 |
+
env = {**os.environ, "CUDA_VISIBLE_DEVICES": str(idx), "OLLAMA_HOST": f"127.0.0.1:{port}",
|
| 12 |
+
"OLLAMA_NUM_PARALLEL": "2", "OLLAMA_FLASH_ATTENTION": "1", "OLLAMA_KEEP_ALIVE": "24h"}
|
| 13 |
+
subprocess.Popen(["ollama", "serve"], env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
| 14 |
+
time.sleep(5)
|
| 15 |
+
tags = urllib.request.urlopen("http://127.0.0.1:11434/api/tags", timeout=5).read().decode()
|
| 16 |
+
if "gemma4" not in tags:
|
| 17 |
+
print("gemma4:e4b missing -> pulling (takes a few minutes)...")
|
| 18 |
+
subprocess.run(["ollama", "pull", "gemma4:e4b"], env={**os.environ, "OLLAMA_HOST": "127.0.0.1:11434"})
|
| 19 |
+
if "11435" not in "":
|
| 20 |
+
subprocess.run(["ollama", "pull", "gemma4:e4b"], env={**os.environ, "OLLAMA_HOST": "127.0.0.1:11435"})
|
| 21 |
+
|
| 22 |
+
# 2. Data directory (re-extract if the session was reset)
|
| 23 |
+
work_dir = Path("/kaggle/working/work"); work_dir.mkdir(parents=True, exist_ok=True)
|
| 24 |
+
data_dir = work_dir / "data"
|
| 25 |
+
if not (data_dir / "easy").exists():
|
| 26 |
+
for p in Path("/kaggle/input").rglob("*"):
|
| 27 |
+
if p.name == "kaggle_data.zip":
|
| 28 |
+
zipfile.ZipFile(p).extractall(work_dir); break
|
| 29 |
+
elif p.name == "predictions_gemma4_cot.jsonl":
|
| 30 |
+
shutil.copytree(p.parent.parent, work_dir, dirs_exist_ok=True); break
|
| 31 |
+
print("data dir exists:", (data_dir / "easy").exists())
|
| 32 |
+
|
| 33 |
+
HOSTS = ["http://127.0.0.1:11434", "http://127.0.0.1:11435"]
|
| 34 |
+
POS_RE = re.compile(r"ඉහත|above|\b[1-4]\s*(?:හා|සහ|හෝ|,|and|or)\s*[1-4]\b", re.I)
|
| 35 |
+
ANS_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.I)
|
| 36 |
+
SYSTEM_THINK = (
|
| 37 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 38 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 39 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 40 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). You may reason in English. "
|
| 41 |
+
"Finish with the final answer in the form 'Answer: <number>'."
|
| 42 |
+
)
|
| 43 |
+
|
| 44 |
+
# 720 uncertain questions = indices into the canonical order (easy, medium, hard; files sorted)
|
| 45 |
+
TARGET_IDX = set(int(x) for x in "5,9,13,18,20,21,22,23,30,31,32,34,36,37,39,43,50,51,55,63,66,67,69,71,73,75,78,83,85,87,93,94,96,98,99,100,102,104,108,112,113,118,121,124,126,128,130,133,135,136,138,141,144,153,154,157,159,161,162,165,166,167,177,182,186,199,203,207,211,212,214,221,229,230,232,236,238,239,240,244,245,246,248,251,252,253,254,259,260,264,265,266,268,275,277,281,287,288,289,291,292,298,303,304,306,307,310,311,315,323,324,326,328,331,332,336,338,341,346,351,358,359,371,373,375,379,380,382,385,386,388,389,390,400,403,405,419,424,425,426,427,433,437,438,439,442,445,450,451,452,454,456,461,463,468,469,470,471,475,477,478,487,491,499,501,505,506,507,518,522,523,529,537,541,545,550,552,553,556,559,560,561,566,568,570,571,573,576,577,578,580,582,586,591,592,593,598,599,605,610,614,615,618,619,621,624,625,626,627,631,634,637,639,641,642,647,648,649,650,651,653,654,655,658,660,661,662,663,665,666,671,678,679,680,682,685,688,697,701,703,704,713,718,722,725,735,737,743,744,745,746,750,754,755,756,758,761,775,777,778,779,782,783,784,785,786,787,791,792,796,802,805,806,807,808,809,810,814,817,818,819,820,822,828,833,834,836,840,842,845,848,850,854,855,856,858,859,861,862,865,869,871,873,874,880,882,883,885,886,903,904,908,910,912,913,916,918,919,920,921,929,937,955,970,986,990,994,995,998,999,1007,1016,1022,1023,1024,1025,1031,1043,1045,1061,1067,1069,1070,1076,1080,1084,1089,1091,1092,1093,1100,1101,1104,1106,1116,1119,1123,1127,1131,1136,1137,1138,1139,1145,1148,1149,1153,1155,1161,1162,1163,1164,1168,1171,1172,1178,1183,1184,1190,1192,1195,1196,1201,1205,1207,1208,1209,1210,1212,1213,1221,1222,1223,1227,1228,1230,1231,1233,1234,1235,1238,1240,1245,1246,1248,1249,1250,1255,1260,1268,1269,1271,1273,1274,1277,1278,1280,1281,1288,1291,1292,1293,1294,1295,1303,1312,1318,1320,1321,1322,1324,1325,1326,1327,1328,1330,1333,1334,1336,1337,1338,1339,1340,1341,1342,1343,1346,1348,1349,1350,1352,1354,1355,1358,1361,1365,1369,1370,1373,1378,1379,1381,1383,1387,1389,1393,1394,1396,1401,1415,1418,1424,1425,1428,1432,1435,1436,1444,1445,1454,1455,1456,1457,1459,1460,1471,1472,1476,1478,1479,1481,1488,1490,1492,1494,1498,1501,1502,1505,1506,1507,1509,1513,1515,1520,1522,1523,1524,1528,1529,1530,1531,1537,1538,1539,1541,1543,1548,1550,1553,1554,1556,1561,1566,1567,1568,1571,1577,1578,1581,1582,1583,1584,1588,1594,1597,1598,1602,1603,1606,1607,1609,1610,1611,1612,1613,1614,1615,1616,1617,1622,1624,1625,1629,1636,1639,1644,1646,1648,1653,1654,1655,1656,1657,1660,1662,1663,1664,1665,1668,1670,1675,1676,1678,1679,1680,1681,1684,1686,1687,1688,1690,1691,1692,1693,1694,1698,1701,1704,1706,1711,1712,1714,1716,1717,1719,1724,1725,1726,1727,1729,1731,1733,1738,1740,1744,1745,1749,1751,1760,1761,1763,1769,1786,1790,1795,1797,1800,1807,1809,1814,1819,1825,1826,1827,1828,1832,1838,1846,1859,1864,1877,1880,1881,1884,1890,1898,1905,1906,1912,1913,1916,1917,1918,1919,1920,1924,1926,1927,1930,1932,1933,1934,1935,1941,1950,1963,1967,1968,1969,1971,1973,1975,1979,1988,1989,1993,1997,2009,2010,2016,2020,2024,2031,2032,2036,2038,2041,2045,2048,2050,2054,2059,2063,2065,2066,2067,2068,2071,2081,2103,2106,2108,2110,2118,2126,2130,2137,2138,2145,2157,2160,2167,2170,2180,2183,2184,2185,2203,2213,2214,2220,2221,2222,2225,2226,2227,2228,2231,2236".split(","))
|
| 46 |
+
|
| 47 |
+
def qkey(lvl, subj, q_no):
|
| 48 |
+
return f"{str(lvl).lower().strip()}_{str(subj).strip()}_{str(q_no).strip()}"
|
| 49 |
+
|
| 50 |
+
all_qs = []
|
| 51 |
+
for lvl in ["easy", "medium", "hard"]:
|
| 52 |
+
for f in sorted((data_dir / lvl).glob("*.json")):
|
| 53 |
+
for item in json.load(open(f, encoding="utf-8")):
|
| 54 |
+
item["_level"] = lvl
|
| 55 |
+
all_qs.append(item)
|
| 56 |
+
print("Total questions:", len(all_qs), "(expect 2238)")
|
| 57 |
+
|
| 58 |
+
targets = [q for i, q in enumerate(all_qs)
|
| 59 |
+
if i in TARGET_IDX and len(q["choices"]) == 4
|
| 60 |
+
and not POS_RE.search(" ".join(map(str, q["choices"])))]
|
| 61 |
+
print("Targets:", len(targets), "(expect ~715-720)")
|
| 62 |
+
|
| 63 |
+
def solve(args):
|
| 64 |
+
idx, q, shift = args
|
| 65 |
+
host = HOSTS[idx % 2]
|
| 66 |
+
lvl = q["_level"]; subj = q["subject"]
|
| 67 |
+
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 68 |
+
ch = list(q["choices"])
|
| 69 |
+
rot = ch[shift:] + ch[:shift]
|
| 70 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(rot, 1))
|
| 71 |
+
user = (f"විෂය (Subject): {subj} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 72 |
+
f"ප්රශ්නය (Question):\n{q['question'].strip()}\n\n"
|
| 73 |
+
f"විකල්ප (Options):\n{opts}\n\n"
|
| 74 |
+
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'.")
|
| 75 |
+
payload = json.dumps({"model": "gemma4:e4b",
|
| 76 |
+
"messages": [{"role": "system", "content": SYSTEM_THINK}, {"role": "user", "content": user}],
|
| 77 |
+
"stream": False, "think": True,
|
| 78 |
+
"options": {"temperature": 0.0, "num_predict": 4096}}).encode("utf-8")
|
| 79 |
+
for _ in range(2):
|
| 80 |
+
try:
|
| 81 |
+
req = urllib.request.Request(f"{host}/api/chat", data=payload, headers={"Content-Type": "application/json"})
|
| 82 |
+
with urllib.request.urlopen(req, timeout=300) as resp:
|
| 83 |
+
msg = json.loads(resp.read().decode("utf-8")).get("message", {})
|
| 84 |
+
content, thinking = msg.get("content", "") or "", msg.get("thinking", "") or ""
|
| 85 |
+
m = ANS_RE.findall(content) or ANS_RE.findall(thinking)
|
| 86 |
+
if not m:
|
| 87 |
+
return None # no clear answer: skip so it does not pollute the vote
|
| 88 |
+
orig = str(((int(m[-1]) - 1 + shift) % 4) + 1) # map back to original option numbering
|
| 89 |
+
return {"q_no": q["q_no"], "subject": subj, "category": q.get("category", "general"),
|
| 90 |
+
"level": lvl, "answer": orig}
|
| 91 |
+
except Exception:
|
| 92 |
+
time.sleep(2)
|
| 93 |
+
return None
|
| 94 |
+
|
| 95 |
+
for pass_no, shift in [(4, 2), (5, 3)]:
|
| 96 |
+
ck = Path(f"/kaggle/working/predictions_gemma4_think_pass{pass_no}_ckpt.jsonl")
|
| 97 |
+
done = set()
|
| 98 |
+
if ck.exists():
|
| 99 |
+
for line in open(ck, encoding="utf-8"):
|
| 100 |
+
if line.strip():
|
| 101 |
+
r = json.loads(line); done.add(qkey(r["level"], r["subject"], r["q_no"]))
|
| 102 |
+
todo = [(i, q, shift) for i, q in enumerate(targets) if qkey(q["_level"], q["subject"], q["q_no"]) not in done]
|
| 103 |
+
print(f"Pass {pass_no} (shift {shift}): done {len(done)}, remaining {len(todo)}")
|
| 104 |
+
t0 = time.time(); n = 0
|
| 105 |
+
with open(ck, "a", encoding="utf-8") as fo, ThreadPoolExecutor(max_workers=4) as ex:
|
| 106 |
+
for fut in as_completed([ex.submit(solve, t) for t in todo]):
|
| 107 |
+
r = fut.result()
|
| 108 |
+
if r:
|
| 109 |
+
fo.write(json.dumps(r, ensure_ascii=False) + "\n"); fo.flush()
|
| 110 |
+
n += 1
|
| 111 |
+
if n % 20 == 0:
|
| 112 |
+
print(f" Pass {pass_no}: {n}/{len(todo)} ({(time.time()-t0)/60:.1f} min)", flush=True)
|
| 113 |
+
print(f"PASS {pass_no} COMPLETE -> {ck}")
|
training/evidence/pass4_pass5_log.txt
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
data dir exists: True
|
| 2 |
+
Total questions: 2238 (expect 2238)
|
| 3 |
+
Targets: 719 (expect ~715-720)
|
| 4 |
+
Pass 4 (shift 2): done 0, remaining 719
|
| 5 |
+
Pass 4: 20/719 (5.3 min)
|
| 6 |
+
Pass 4: 40/719 (7.2 min)
|
| 7 |
+
Pass 4: 60/719 (9.6 min)
|
| 8 |
+
Pass 4: 80/719 (11.6 min)
|
| 9 |
+
Pass 4: 100/719 (14.9 min)
|
| 10 |
+
Pass 4: 120/719 (17.7 min)
|
| 11 |
+
Pass 4: 140/719 (20.7 min)
|
| 12 |
+
Pass 4: 160/719 (23.5 min)
|
| 13 |
+
Pass 4: 180/719 (26.0 min)
|
| 14 |
+
Pass 4: 200/719 (29.5 min)
|
| 15 |
+
Pass 4: 220/719 (33.2 min)
|
| 16 |
+
Pass 4: 240/719 (36.2 min)
|
| 17 |
+
Pass 4: 260/719 (38.9 min)
|
| 18 |
+
Pass 4: 300/719 (44.8 min)
|
| 19 |
+
Pass 4: 320/719 (48.3 min)
|
| 20 |
+
Pass 4: 340/719 (51.3 min)
|
| 21 |
+
Pass 4: 360/719 (53.8 min)
|
| 22 |
+
Pass 4: 400/719 (58.2 min)
|
| 23 |
+
Pass 4: 420/719 (61.0 min)
|
| 24 |
+
Pass 4: 440/719 (64.1 min)
|
| 25 |
+
Pass 4: 460/719 (66.9 min)
|
| 26 |
+
Pass 4: 480/719 (70.1 min)
|
| 27 |
+
Pass 4: 500/719 (72.5 min)
|
| 28 |
+
Pass 4: 520/719 (75.2 min)
|
| 29 |
+
Pass 4: 540/719 (78.3 min)
|
| 30 |
+
Pass 4: 560/719 (82.1 min)
|
| 31 |
+
Pass 4: 580/719 (85.5 min)
|
| 32 |
+
Pass 4: 600/719 (89.2 min)
|
| 33 |
+
Pass 4: 620/719 (93.1 min)
|
| 34 |
+
Pass 4: 640/719 (96.6 min)
|
| 35 |
+
Pass 4: 660/719 (100.3 min)
|
| 36 |
+
Pass 4: 680/719 (103.1 min)
|
| 37 |
+
Pass 4: 700/719 (106.4 min)
|
| 38 |
+
PASS 4 COMPLETE -> /kaggle/working/predictions_gemma4_think_pass4_ckpt.jsonl
|
| 39 |
+
Pass 5 (shift 3): done 0, remaining 719
|
| 40 |
+
Pass 5: 20/719 (2.4 min)
|
| 41 |
+
Pass 5: 40/719 (4.6 min)
|
| 42 |
+
Pass 5: 60/719 (6.9 min)
|
| 43 |
+
Pass 5: 80/719 (9.1 min)
|
| 44 |
+
Pass 5: 100/719 (12.3 min)
|
| 45 |
+
Pass 5: 120/719 (15.3 min)
|
| 46 |
+
Pass 5: 140/719 (18.1 min)
|
| 47 |
+
Pass 5: 160/719 (21.2 min)
|
| 48 |
+
Pass 5: 180/719 (23.9 min)
|
| 49 |
+
Pass 5: 200/719 (27.2 min)
|
| 50 |
+
Pass 5: 220/719 (31.1 min)
|
| 51 |
+
Pass 5: 240/719 (34.0 min)
|
| 52 |
+
Pass 5: 260/719 (36.2 min)
|
| 53 |
+
Pass 5: 280/719 (39.1 min)
|
| 54 |
+
Pass 5: 300/719 (42.2 min)
|
| 55 |
+
Pass 5: 320/719 (45.7 min)
|
| 56 |
+
Pass 5: 340/719 (48.2 min)
|
| 57 |
+
Pass 5: 360/719 (51.2 min)
|
| 58 |
+
Pass 5: 380/719 (53.5 min)
|
| 59 |
+
Pass 5: 400/719 (55.7 min)
|
| 60 |
+
Pass 5: 420/719 (58.9 min)
|
| 61 |
+
Pass 5: 440/719 (62.4 min)
|
| 62 |
+
Pass 5: 460/719 (65.5 min)
|
| 63 |
+
Pass 5: 480/719 (68.4 min)
|
| 64 |
+
Pass 5: 520/719 (73.7 min)
|
| 65 |
+
Pass 5: 540/719 (76.7 min)
|
| 66 |
+
Pass 5: 560/719 (80.4 min)
|
| 67 |
+
Pass 5: 580/719 (83.9 min)
|
| 68 |
+
Pass 5: 600/719 (87.7 min)
|
| 69 |
+
Pass 5: 620/719 (91.5 min)
|
| 70 |
+
Pass 5: 660/719 (99.0 min)
|
| 71 |
+
Pass 5: 680/719 (102.0 min)
|
| 72 |
+
Pass 5: 700/719 (105.6 min)
|
| 73 |
+
PASS 5 COMPLETE -> /kaggle/working/predictions_gemma4_think_pass5_ckpt.jsonl
|
training/evidence/plumbing_checks.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checks": 7,
|
| 3 |
+
"result": "passed",
|
| 4 |
+
"model_calls": 0,
|
| 5 |
+
"scope": "Fabricated questions and scripted responses: rotation mapping/fallback, sampling/seed fidelity, data ordering, malformed checkpoints, original-file protection, all-stage orchestration and resumption. Not a model-quality or GPU test."
|
| 6 |
+
}
|
training/evidence/requirements.original-kaggle-observed.txt
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Observed in notebook export; not an exhaustive historical environment lock.
|
| 2 |
+
accelerate==1.14.0
|
| 3 |
+
pytorch-ignite==0.5.5
|
| 4 |
+
pytorch-lightning==2.6.6
|
| 5 |
+
sentence-transformers==5.7.0
|
| 6 |
+
torch==2.11.0+cu128
|
| 7 |
+
torchao==0.10.0
|
| 8 |
+
torchaudio==2.11.0+cu128
|
| 9 |
+
torchcodec==0.11.0+cu128
|
| 10 |
+
torchdata==0.11.0
|
| 11 |
+
torchinfo==1.8.0
|
| 12 |
+
torchmetrics==1.9.0
|
| 13 |
+
torchsummary==1.5.1
|
| 14 |
+
torchtune==0.6.1
|
| 15 |
+
torchvision==0.26.0+cu128
|
| 16 |
+
transformers==5.16.1
|
training/evidence/requirements.packaging-check.txt
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
anyio==4.15.1
|
| 2 |
+
click==8.5.0
|
| 3 |
+
filelock==4.2.4
|
| 4 |
+
fsspec==2026.9.0
|
| 5 |
+
h11==0.16.0
|
| 6 |
+
hf-xet==1.7.0
|
| 7 |
+
httpcore2==2.16.0
|
| 8 |
+
httpx2==2.16.0
|
| 9 |
+
huggingface_hub==2.3.0
|
| 10 |
+
idna==3.20
|
| 11 |
+
packaging==26.3
|
| 12 |
+
PyYAML==6.0.3
|
| 13 |
+
tqdm==4.70.1
|
| 14 |
+
truststore==0.10.5
|
| 15 |
+
typing_extensions==4.16.0
|
training/evidence/verification_report.json
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"submission_id": 138,
|
| 3 |
+
"rows": 2238,
|
| 4 |
+
"sha256": "0998ea38f240c05103a7572a9a367a553f4e2b7664a31fe70f5c9668214dd554",
|
| 5 |
+
"saved_pass_merge_byte_identical": true,
|
| 6 |
+
"pass_counts": {
|
| 7 |
+
"p1": 2238,
|
| 8 |
+
"p2": 1100,
|
| 9 |
+
"p3": 720,
|
| 10 |
+
"p4": 712,
|
| 11 |
+
"p5": 712,
|
| 12 |
+
"mac": 1160,
|
| 13 |
+
"cot": 2238,
|
| 14 |
+
"dr": 2238
|
| 15 |
+
},
|
| 16 |
+
"fresh_model_inference_verified": false,
|
| 17 |
+
"rules_compliance_certified": false,
|
| 18 |
+
"input_checks": {
|
| 19 |
+
"pass2_targets": 1100,
|
| 20 |
+
"pass3_targets": 720,
|
| 21 |
+
"literal_notebook_targets_match": true,
|
| 22 |
+
"pass45_targets": 719,
|
| 23 |
+
"mac_priority_prefix_match": true,
|
| 24 |
+
"omitted_keys": {
|
| 25 |
+
"p4": [
|
| 26 |
+
[
|
| 27 |
+
17,
|
| 28 |
+
"Communication and Media Studies",
|
| 29 |
+
"other",
|
| 30 |
+
"medium"
|
| 31 |
+
],
|
| 32 |
+
[
|
| 33 |
+
18,
|
| 34 |
+
"Physics",
|
| 35 |
+
"stem",
|
| 36 |
+
"hard"
|
| 37 |
+
],
|
| 38 |
+
[
|
| 39 |
+
42,
|
| 40 |
+
"Eastern Music",
|
| 41 |
+
"Humanities",
|
| 42 |
+
"easy"
|
| 43 |
+
],
|
| 44 |
+
[
|
| 45 |
+
6,
|
| 46 |
+
"Art",
|
| 47 |
+
"humanities",
|
| 48 |
+
"hard"
|
| 49 |
+
],
|
| 50 |
+
[
|
| 51 |
+
60,
|
| 52 |
+
"Sinhala Language and Literature",
|
| 53 |
+
"other",
|
| 54 |
+
"easy"
|
| 55 |
+
],
|
| 56 |
+
[
|
| 57 |
+
68,
|
| 58 |
+
"Sinhala Language and Literature",
|
| 59 |
+
"other",
|
| 60 |
+
"easy"
|
| 61 |
+
],
|
| 62 |
+
[
|
| 63 |
+
8,
|
| 64 |
+
"Sinhala",
|
| 65 |
+
"language",
|
| 66 |
+
"hard"
|
| 67 |
+
]
|
| 68 |
+
],
|
| 69 |
+
"p5": [
|
| 70 |
+
[
|
| 71 |
+
10,
|
| 72 |
+
"Sinhala",
|
| 73 |
+
"language",
|
| 74 |
+
"hard"
|
| 75 |
+
],
|
| 76 |
+
[
|
| 77 |
+
133,
|
| 78 |
+
"Sinhala",
|
| 79 |
+
"language",
|
| 80 |
+
"medium"
|
| 81 |
+
],
|
| 82 |
+
[
|
| 83 |
+
17,
|
| 84 |
+
"Communication and Media Studies",
|
| 85 |
+
"other",
|
| 86 |
+
"medium"
|
| 87 |
+
],
|
| 88 |
+
[
|
| 89 |
+
42,
|
| 90 |
+
"Biology",
|
| 91 |
+
"stem",
|
| 92 |
+
"hard"
|
| 93 |
+
],
|
| 94 |
+
[
|
| 95 |
+
6,
|
| 96 |
+
"Art",
|
| 97 |
+
"humanities",
|
| 98 |
+
"hard"
|
| 99 |
+
],
|
| 100 |
+
[
|
| 101 |
+
60,
|
| 102 |
+
"Sinhala",
|
| 103 |
+
"language",
|
| 104 |
+
"medium"
|
| 105 |
+
],
|
| 106 |
+
[
|
| 107 |
+
68,
|
| 108 |
+
"Sinhala Language and Literature",
|
| 109 |
+
"other",
|
| 110 |
+
"easy"
|
| 111 |
+
]
|
| 112 |
+
]
|
| 113 |
+
},
|
| 114 |
+
"few_shot_exact_text_overlaps": [],
|
| 115 |
+
"overlap_check_limit": "Exact normalized question text only; not semantic overlap or contamination certification."
|
| 116 |
+
},
|
| 117 |
+
"both_cli_merge_paths_byte_identical": true,
|
| 118 |
+
"plumbing_regression_tests_passed": 7,
|
| 119 |
+
"remote_dataset_loader_checked": true
|
| 120 |
+
}
|
training/kaggle_cells/cell1_pass1.py
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json, re, time, zipfile, shutil, urllib.request
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 4 |
+
|
| 5 |
+
# 1. Locate uploaded data in /kaggle/input and copy to /kaggle/working/work
|
| 6 |
+
work_dir = Path("/kaggle/working/work")
|
| 7 |
+
work_dir.mkdir(parents=True, exist_ok=True)
|
| 8 |
+
|
| 9 |
+
for p in Path("/kaggle/input").rglob("*"):
|
| 10 |
+
if p.name == "kaggle_data.zip":
|
| 11 |
+
with zipfile.ZipFile(p, "r") as z:
|
| 12 |
+
z.extractall(work_dir)
|
| 13 |
+
break
|
| 14 |
+
elif p.name == "predictions_gemma4_cot.jsonl":
|
| 15 |
+
root = p.parent.parent
|
| 16 |
+
shutil.copytree(root, work_dir, dirs_exist_ok=True)
|
| 17 |
+
break
|
| 18 |
+
|
| 19 |
+
data_dir = work_dir / "data"
|
| 20 |
+
print("Data directory ready:", data_dir.exists())
|
| 21 |
+
|
| 22 |
+
# 2. Load canonical questions + existing checkpoints
|
| 23 |
+
def load_all_questions(d_dir: Path):
|
| 24 |
+
qs = []
|
| 25 |
+
for lvl in ["easy", "medium", "hard"]:
|
| 26 |
+
for f in sorted((d_dir / lvl).glob("*.json")):
|
| 27 |
+
for item in json.load(open(f, encoding="utf-8")):
|
| 28 |
+
item["_level"] = lvl
|
| 29 |
+
qs.append(item)
|
| 30 |
+
return qs
|
| 31 |
+
|
| 32 |
+
def load_ckpt(path: Path):
|
| 33 |
+
m = {}
|
| 34 |
+
if path.exists():
|
| 35 |
+
for line in open(path, encoding="utf-8"):
|
| 36 |
+
if line.strip():
|
| 37 |
+
r = json.loads(line)
|
| 38 |
+
k = f"{str(r['level']).lower().strip()}_{str(r['subject']).strip()}_{str(r['q_no']).strip()}"
|
| 39 |
+
m[k] = r
|
| 40 |
+
return m
|
| 41 |
+
|
| 42 |
+
canonical_qs = load_all_questions(data_dir)
|
| 43 |
+
cot_map = load_ckpt(data_dir / "predictions_gemma4_cot.jsonl")
|
| 44 |
+
dir_map = load_ckpt(data_dir / "predictions_gemma4_direct.jsonl")
|
| 45 |
+
|
| 46 |
+
# Sort: 749 Disputed (Hard -> Medium -> Easy) first, then Undisputed (Hard -> Medium -> Easy)
|
| 47 |
+
lvl_rank = {"hard": 0, "medium": 1, "easy": 2}
|
| 48 |
+
def sort_key(q):
|
| 49 |
+
k = f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}"
|
| 50 |
+
disputed = 0 if cot_map.get(k, {}).get("answer") != dir_map.get(k, {}).get("answer") else 1
|
| 51 |
+
return (disputed, lvl_rank.get(q["_level"].lower(), 3))
|
| 52 |
+
|
| 53 |
+
priority_qs = sorted(canonical_qs, key=sort_key)
|
| 54 |
+
print(f"Loaded {len(canonical_qs)} total questions. Starting Dual-T4 Parallel Thinking Run...")
|
| 55 |
+
|
| 56 |
+
SYSTEM_THINK = (
|
| 57 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 58 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 59 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 60 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). You may reason in English. "
|
| 61 |
+
"Finish with the final answer in the form 'Answer: <number>'."
|
| 62 |
+
)
|
| 63 |
+
ANS_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.I)
|
| 64 |
+
HOSTS = ["http://127.0.0.1:11434", "http://127.0.0.1:11435"]
|
| 65 |
+
|
| 66 |
+
def solve_question(idx_q):
|
| 67 |
+
idx, q = idx_q
|
| 68 |
+
host = HOSTS[idx % 2] # Alternate evenly between T4 GPU #0 and T4 GPU #1
|
| 69 |
+
lvl = q["_level"].lower()
|
| 70 |
+
subj = q.get("subject", "General")
|
| 71 |
+
q_no = q["q_no"]
|
| 72 |
+
q_key = f"{lvl}_{subj.strip()}_{q_no}"
|
| 73 |
+
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 74 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(q["choices"], 1))
|
| 75 |
+
user_msg = (
|
| 76 |
+
f"විෂය (Subject): {subj} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 77 |
+
f"ප්රශ්නය (Question):\n{q['question'].strip()}\n\n"
|
| 78 |
+
f"විකල්ප (Options):\n{opts}\n\n"
|
| 79 |
+
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'."
|
| 80 |
+
)
|
| 81 |
+
payload = json.dumps({
|
| 82 |
+
"model": "gemma4:e4b",
|
| 83 |
+
"messages": [{"role": "system", "content": SYSTEM_THINK}, {"role": "user", "content": user_msg}],
|
| 84 |
+
"stream": False,
|
| 85 |
+
"think": True,
|
| 86 |
+
"options": {"temperature": 0.0, "num_predict": 2048}
|
| 87 |
+
}).encode("utf-8")
|
| 88 |
+
try:
|
| 89 |
+
req = urllib.request.Request(f"{host}/api/chat", data=payload, headers={"Content-Type": "application/json"})
|
| 90 |
+
with urllib.request.urlopen(req, timeout=240) as resp:
|
| 91 |
+
res = json.loads(resp.read().decode("utf-8"))
|
| 92 |
+
msg = res.get("message", {})
|
| 93 |
+
content, thinking = msg.get("content", ""), msg.get("thinking", "")
|
| 94 |
+
m = ANS_RE.findall(content) or ANS_RE.findall(thinking)
|
| 95 |
+
if m:
|
| 96 |
+
ans = m[-1]
|
| 97 |
+
else:
|
| 98 |
+
digits = re.findall(r"\b([1-4])\b", content if content.strip() else thinking)
|
| 99 |
+
ans = digits[-1] if digits else cot_map.get(q_key, {}).get("answer", "1")
|
| 100 |
+
except Exception as e:
|
| 101 |
+
ans = cot_map.get(q_key, {}).get("answer", "1")
|
| 102 |
+
|
| 103 |
+
return q_key, {
|
| 104 |
+
"q_no": q_no,
|
| 105 |
+
"subject": subj,
|
| 106 |
+
"category": q.get("category", "general"),
|
| 107 |
+
"level": lvl,
|
| 108 |
+
"answer": str(ans)
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
ckpt_path = Path("/kaggle/working/predictions_gemma4_think_ckpt.jsonl")
|
| 112 |
+
full_path = Path("/kaggle/working/predictions.jsonl")
|
| 113 |
+
zip_path = Path("/kaggle/working/submission_gemma4_think.zip")
|
| 114 |
+
|
| 115 |
+
completed_map = load_ckpt(ckpt_path)
|
| 116 |
+
todo = [(i, q) for i, q in enumerate(priority_qs) if f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}" not in completed_map]
|
| 117 |
+
print(f"Already completed: {len(completed_map)} | Remaining to solve: {len(todo)}")
|
| 118 |
+
|
| 119 |
+
def save_outputs():
|
| 120 |
+
with open(ckpt_path, "w", encoding="utf-8") as f:
|
| 121 |
+
for r in completed_map.values():
|
| 122 |
+
f.write(json.dumps(r, ensure_ascii=False) + "\n")
|
| 123 |
+
with open(full_path, "w", encoding="utf-8") as f:
|
| 124 |
+
for q in canonical_qs:
|
| 125 |
+
k = f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}"
|
| 126 |
+
rec = completed_map.get(k) or cot_map.get(k)
|
| 127 |
+
f.write(json.dumps(rec, ensure_ascii=False) + "\n")
|
| 128 |
+
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf:
|
| 129 |
+
zf.write(full_path, arcname="predictions.jsonl")
|
| 130 |
+
|
| 131 |
+
t0 = time.time()
|
| 132 |
+
done_count = 0
|
| 133 |
+
with ThreadPoolExecutor(max_workers=4) as ex:
|
| 134 |
+
futures = [ex.submit(solve_question, item) for item in todo]
|
| 135 |
+
for fut in as_completed(futures):
|
| 136 |
+
k, rec = fut.result()
|
| 137 |
+
completed_map[k] = rec
|
| 138 |
+
done_count += 1
|
| 139 |
+
if done_count % 20 == 0 or done_count == len(todo):
|
| 140 |
+
save_outputs()
|
| 141 |
+
elapsed = time.time() - t0
|
| 142 |
+
rate = elapsed / done_count
|
| 143 |
+
print(f"[{len(completed_map)}/2238] ({elapsed/60:.1f}m elapsed, {rate:.1f}s/q effective) -> {zip_path.name} updated!")
|
training/kaggle_cells/cell3_pass2.py
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Self-Contained Cell 3: Pass 2 (Shuffled Options + 4096 Token Budget on Hard & Disputed Questions)
|
| 2 |
+
import json, os, re, time, zipfile, shutil, subprocess, urllib.request
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 5 |
+
|
| 6 |
+
# 1. Ensure both Ollama servers (11434 and 11435) are alive
|
| 7 |
+
for idx, port in [(0, 11434), (1, 11435)]:
|
| 8 |
+
try:
|
| 9 |
+
urllib.request.urlopen(f"http://127.0.0.1:{port}/api/tags", timeout=3)
|
| 10 |
+
except Exception:
|
| 11 |
+
print(f"Restarting Ollama server on GPU #{idx} (port {port})...")
|
| 12 |
+
env = {**os.environ, "CUDA_VISIBLE_DEVICES": str(idx), "OLLAMA_HOST": f"127.0.0.1:{port}", "OLLAMA_NUM_PARALLEL": "2", "OLLAMA_FLASH_ATTENTION": "1", "OLLAMA_KEEP_ALIVE": "24h"}
|
| 13 |
+
subprocess.Popen(["ollama", "serve"], env=env, stdout=open(f"/tmp/ollama{idx}.log", "w"), stderr=subprocess.STDOUT)
|
| 14 |
+
time.sleep(4)
|
| 15 |
+
|
| 16 |
+
# 2. Ensure data directory and helper functions are defined
|
| 17 |
+
work_dir = Path("/kaggle/working/work")
|
| 18 |
+
work_dir.mkdir(parents=True, exist_ok=True)
|
| 19 |
+
data_dir = work_dir / "data"
|
| 20 |
+
if not data_dir.exists():
|
| 21 |
+
for p in Path("/kaggle/input").rglob("*"):
|
| 22 |
+
if p.name == "kaggle_data.zip":
|
| 23 |
+
with zipfile.ZipFile(p, "r") as z:
|
| 24 |
+
z.extractall(work_dir)
|
| 25 |
+
break
|
| 26 |
+
elif p.name == "predictions_gemma4_cot.jsonl":
|
| 27 |
+
shutil.copytree(p.parent.parent, work_dir, dirs_exist_ok=True)
|
| 28 |
+
break
|
| 29 |
+
|
| 30 |
+
def load_all_questions(d_dir: Path):
|
| 31 |
+
qs = []
|
| 32 |
+
for lvl in ["easy", "medium", "hard"]:
|
| 33 |
+
for f in sorted((d_dir / lvl).glob("*.json")):
|
| 34 |
+
for item in json.load(open(f, encoding="utf-8")):
|
| 35 |
+
item["_level"] = lvl
|
| 36 |
+
qs.append(item)
|
| 37 |
+
return qs
|
| 38 |
+
|
| 39 |
+
def load_ckpt(path: Path):
|
| 40 |
+
m = {}
|
| 41 |
+
if path.exists():
|
| 42 |
+
for line in open(path, encoding="utf-8"):
|
| 43 |
+
if line.strip():
|
| 44 |
+
r = json.loads(line)
|
| 45 |
+
k = f"{str(r['level']).lower().strip()}_{str(r['subject']).strip()}_{str(r['q_no']).strip()}"
|
| 46 |
+
m[k] = r
|
| 47 |
+
return m
|
| 48 |
+
|
| 49 |
+
canonical_qs = load_all_questions(data_dir)
|
| 50 |
+
cot_map = load_ckpt(data_dir / "predictions_gemma4_cot.jsonl")
|
| 51 |
+
dir_map = load_ckpt(data_dir / "predictions_gemma4_direct.jsonl")
|
| 52 |
+
p1_map = load_ckpt(Path("/kaggle/working/predictions.jsonl"))
|
| 53 |
+
|
| 54 |
+
lvl_rank = {"hard": 0, "medium": 1, "easy": 2}
|
| 55 |
+
def sort_key(q):
|
| 56 |
+
k = f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}"
|
| 57 |
+
disputed = 0 if cot_map.get(k, {}).get("answer") != dir_map.get(k, {}).get("answer") else 1
|
| 58 |
+
return (disputed, lvl_rank.get(q["_level"].lower(), 3))
|
| 59 |
+
|
| 60 |
+
priority_qs = sorted(canonical_qs, key=sort_key)
|
| 61 |
+
|
| 62 |
+
SYSTEM_THINK = (
|
| 63 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 64 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 65 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 66 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). You may reason in English. "
|
| 67 |
+
"Finish with the final answer in the form 'Answer: <number>'."
|
| 68 |
+
)
|
| 69 |
+
ANS_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.I)
|
| 70 |
+
HOSTS = ["http://127.0.0.1:11434", "http://127.0.0.1:11435"]
|
| 71 |
+
|
| 72 |
+
p2_ckpt_path = Path("/kaggle/working/predictions_gemma4_think_pass2_ckpt.jsonl")
|
| 73 |
+
|
| 74 |
+
# Target the 749 Disputed questions + all remaining Hard questions (1,074 questions total)
|
| 75 |
+
target_qs = []
|
| 76 |
+
for q in priority_qs:
|
| 77 |
+
k = f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}"
|
| 78 |
+
is_disp = cot_map.get(k, {}).get("answer") != dir_map.get(k, {}).get("answer")
|
| 79 |
+
if is_disp or q["_level"].lower() == "hard":
|
| 80 |
+
target_qs.append(q)
|
| 81 |
+
|
| 82 |
+
p2_map = load_ckpt(p2_ckpt_path)
|
| 83 |
+
todo_p2 = [(i, q) for i, q in enumerate(target_qs) if f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}" not in p2_map]
|
| 84 |
+
print(f"Pass 2 (Shuffled + 4096 tokens) | Already done: {len(p2_map)} | Remaining: {len(todo_p2)}")
|
| 85 |
+
|
| 86 |
+
def solve_question_shuffled(idx_q):
|
| 87 |
+
idx, q = idx_q
|
| 88 |
+
host = HOSTS[idx % 2]
|
| 89 |
+
lvl = q["_level"].lower()
|
| 90 |
+
subj = q.get("subject", "General")
|
| 91 |
+
q_no = q["q_no"]
|
| 92 |
+
q_key = f"{lvl}_{subj.strip()}_{q_no}"
|
| 93 |
+
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 94 |
+
|
| 95 |
+
orig_choices = list(q["choices"])
|
| 96 |
+
rot_choices = orig_choices[1:] + orig_choices[:1]
|
| 97 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(rot_choices, 1))
|
| 98 |
+
user_msg = (
|
| 99 |
+
f"විෂය (Subject): {subj} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 100 |
+
f"ප්රශ්නය (Question):\n{q['question'].strip()}\n\n"
|
| 101 |
+
f"විකල්ප (Options):\n{opts}\n\n"
|
| 102 |
+
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'."
|
| 103 |
+
)
|
| 104 |
+
payload = json.dumps({
|
| 105 |
+
"model": "gemma4:e4b",
|
| 106 |
+
"messages": [{"role": "system", "content": SYSTEM_THINK}, {"role": "user", "content": user_msg}],
|
| 107 |
+
"stream": False,
|
| 108 |
+
"think": True,
|
| 109 |
+
"options": {"temperature": 0.0, "num_predict": 4096}
|
| 110 |
+
}).encode("utf-8")
|
| 111 |
+
try:
|
| 112 |
+
req = urllib.request.Request(f"{host}/api/chat", data=payload, headers={"Content-Type": "application/json"})
|
| 113 |
+
with urllib.request.urlopen(req, timeout=300) as resp:
|
| 114 |
+
res = json.loads(resp.read().decode("utf-8"))
|
| 115 |
+
msg = res.get("message", {})
|
| 116 |
+
content, thinking = msg.get("content", ""), msg.get("thinking", "")
|
| 117 |
+
m = ANS_RE.findall(content) or ANS_RE.findall(thinking)
|
| 118 |
+
if m:
|
| 119 |
+
rot_ans = m[-1]
|
| 120 |
+
else:
|
| 121 |
+
digits = re.findall(r"\b([1-4])\b", content if content.strip() else thinking)
|
| 122 |
+
rot_ans = digits[-1] if digits else "1"
|
| 123 |
+
rot_idx = int(rot_ans) - 1 if rot_ans in {"1", "2", "3", "4"} else 0
|
| 124 |
+
orig_ans = str(((rot_idx + 1) % 4) + 1)
|
| 125 |
+
except Exception:
|
| 126 |
+
orig_ans = (p1_map.get(q_key) or cot_map.get(q_key, {})).get("answer", "1")
|
| 127 |
+
|
| 128 |
+
return q_key, {
|
| 129 |
+
"q_no": q_no,
|
| 130 |
+
"subject": subj,
|
| 131 |
+
"category": q.get("category", "general"),
|
| 132 |
+
"level": lvl,
|
| 133 |
+
"answer": orig_ans
|
| 134 |
+
}
|
| 135 |
+
|
| 136 |
+
t0 = time.time()
|
| 137 |
+
done_p2 = 0
|
| 138 |
+
with ThreadPoolExecutor(max_workers=4) as ex:
|
| 139 |
+
futures = [ex.submit(solve_question_shuffled, item) for item in todo_p2]
|
| 140 |
+
for fut in as_completed(futures):
|
| 141 |
+
k, rec = fut.result()
|
| 142 |
+
p2_map[k] = rec
|
| 143 |
+
done_p2 += 1
|
| 144 |
+
if done_p2 % 20 == 0 or done_p2 == len(todo_p2):
|
| 145 |
+
with open(p2_ckpt_path, "w", encoding="utf-8") as f:
|
| 146 |
+
for r in p2_map.values():
|
| 147 |
+
f.write(json.dumps(r, ensure_ascii=False) + "\n")
|
| 148 |
+
elapsed = time.time() - t0
|
| 149 |
+
print(f"Pass 2 [{len(p2_map)}/{len(target_qs)}] ({elapsed/60:.1f}m elapsed, {elapsed/done_p2:.1f}s/q)")
|
training/kaggle_cells/cell4_pass3.py
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# === STANDALONE CELL 4: PASS 3 (4096 TOKENS + SANSKRIT/TECHNICAL HINT ON 720 TARGET QS) ===
|
| 2 |
+
import os, re, json, time, zipfile, shutil, subprocess, urllib.request
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 5 |
+
|
| 6 |
+
# 1. Ensure both Ollama servers (GPU 0 -> 11434, GPU 1 -> 11435) are running
|
| 7 |
+
for idx, port in [(0, 11434), (1, 11435)]:
|
| 8 |
+
try:
|
| 9 |
+
urllib.request.urlopen(f"http://127.0.0.1:{port}/api/tags", timeout=3)
|
| 10 |
+
except Exception:
|
| 11 |
+
env = {**os.environ, "CUDA_VISIBLE_DEVICES": str(idx), "OLLAMA_HOST": f"127.0.0.1:{port}", "OLLAMA_NUM_PARALLEL": "2", "OLLAMA_FLASH_ATTENTION": "1", "OLLAMA_KEEP_ALIVE": "24h"}
|
| 12 |
+
subprocess.Popen(["ollama", "serve"], env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
| 13 |
+
time.sleep(3)
|
| 14 |
+
|
| 15 |
+
# 2. Locate /kaggle/working/work/data (or extract from /kaggle/input if needed)
|
| 16 |
+
work_dir = Path("/kaggle/working/work")
|
| 17 |
+
work_dir.mkdir(parents=True, exist_ok=True)
|
| 18 |
+
data_dir = work_dir / "data"
|
| 19 |
+
if not data_dir.exists():
|
| 20 |
+
for p in Path("/kaggle/input").rglob("*"):
|
| 21 |
+
if p.name == "kaggle_data.zip":
|
| 22 |
+
with zipfile.ZipFile(p, "r") as z:
|
| 23 |
+
z.extractall(work_dir)
|
| 24 |
+
break
|
| 25 |
+
elif p.name == "predictions_gemma4_cot.jsonl":
|
| 26 |
+
shutil.copytree(p.parent.parent, work_dir, dirs_exist_ok=True)
|
| 27 |
+
break
|
| 28 |
+
|
| 29 |
+
def load_all_questions(d_dir: Path):
|
| 30 |
+
qs = []
|
| 31 |
+
for lvl in ["easy", "medium", "hard"]:
|
| 32 |
+
for f in sorted((d_dir / lvl).glob("*.json")):
|
| 33 |
+
for item in json.load(open(f, encoding="utf-8")):
|
| 34 |
+
item["_level"] = lvl
|
| 35 |
+
qs.append(item)
|
| 36 |
+
return qs
|
| 37 |
+
|
| 38 |
+
def load_ckpt(path: Path):
|
| 39 |
+
m = {}
|
| 40 |
+
if path.exists():
|
| 41 |
+
for line in open(path, encoding="utf-8"):
|
| 42 |
+
if line.strip():
|
| 43 |
+
r = json.loads(line)
|
| 44 |
+
k = f"{str(r['level']).lower().strip()}_{str(r['subject']).strip()}_{str(r['q_no']).strip()}"
|
| 45 |
+
m[k] = str(r["answer"])
|
| 46 |
+
return m
|
| 47 |
+
|
| 48 |
+
# NOTE (archive edit): the original cell embedded the 2238 Pass-1 answers as a digit string (P1_DIGITS) to resume
|
| 49 |
+
# after a Kaggle session reset. They are identical to ../passes/pass1_think_2048_orig.jsonl and are loaded from there.
|
| 50 |
+
P1_DIGITS = ''.join(json.loads(l)['answer'] for l in open('/kaggle/working/pass1_think_2048_orig.jsonl', encoding='utf-8') if l.strip())
|
| 51 |
+
|
| 52 |
+
all_qs = load_all_questions(data_dir)
|
| 53 |
+
p1_map = {f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}": P1_DIGITS[i] for i, q in enumerate(all_qs)}
|
| 54 |
+
p2_map = load_ckpt(Path("/kaggle/working/predictions_gemma4_think_pass2_ckpt.jsonl"))
|
| 55 |
+
cot_map = load_ckpt(data_dir / "predictions_gemma4_cot.jsonl")
|
| 56 |
+
dir_map = load_ckpt(data_dir / "predictions_gemma4_direct.jsonl")
|
| 57 |
+
|
| 58 |
+
# Target: (A) 348 questions where P1 != P2, plus (B) 372 questions not in P2 where P1 != CoT or P1 != Direct
|
| 59 |
+
target_qs = []
|
| 60 |
+
for q in all_qs:
|
| 61 |
+
k = f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}"
|
| 62 |
+
if k in p2_map:
|
| 63 |
+
if p1_map.get(k) != p2_map.get(k):
|
| 64 |
+
target_qs.append(q)
|
| 65 |
+
else:
|
| 66 |
+
if p1_map.get(k) != cot_map.get(k) or p1_map.get(k) != dir_map.get(k):
|
| 67 |
+
target_qs.append(q)
|
| 68 |
+
|
| 69 |
+
p3_ckpt_path = Path("/kaggle/working/predictions_gemma4_think_pass3_ckpt.jsonl")
|
| 70 |
+
done_p3 = load_ckpt(p3_ckpt_path)
|
| 71 |
+
rem_p3 = [q for q in target_qs if f"{q['_level'].lower()}_{q['subject'].strip()}_{q['q_no']}" not in done_p3]
|
| 72 |
+
print(f"Pass 3 Target: {len(target_qs)} questions | Already done: {len(done_p3)} | Remaining: {len(rem_p3)}")
|
| 73 |
+
|
| 74 |
+
SYSTEM_THINK_PROMPT = (
|
| 75 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 76 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 77 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 78 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). If the question or options contain Sanskrit, "
|
| 79 |
+
"Hindustani, Pali, Tamil, or technical terms, carefully map them to their standard curriculum "
|
| 80 |
+
"meaning. You may reason in English. Finish with the final answer in the form 'Answer: <number>'."
|
| 81 |
+
)
|
| 82 |
+
ANSWER_THINK_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.IGNORECASE)
|
| 83 |
+
|
| 84 |
+
def solve_p3(idx_q):
|
| 85 |
+
idx, q = idx_q
|
| 86 |
+
port = 11434 if (idx % 2 == 0) else 11435
|
| 87 |
+
lvl = q["_level"].lower()
|
| 88 |
+
subj = q.get("subject", "General")
|
| 89 |
+
q_no = q["q_no"]
|
| 90 |
+
q_key = f"{lvl}_{subj.strip()}_{q_no}"
|
| 91 |
+
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 92 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(q["choices"], 1))
|
| 93 |
+
user_msg = (
|
| 94 |
+
f"විෂය (Subject): {subj} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 95 |
+
f"ප්රශ්නය (Question):\n{q['question'].strip()}\n\n"
|
| 96 |
+
f"විකල්ප (Options):\n{opts}\n\n"
|
| 97 |
+
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'."
|
| 98 |
+
)
|
| 99 |
+
payload = {
|
| 100 |
+
"model": "gemma4:e4b",
|
| 101 |
+
"messages": [
|
| 102 |
+
{"role": "system", "content": SYSTEM_THINK_PROMPT},
|
| 103 |
+
{"role": "user", "content": user_msg},
|
| 104 |
+
],
|
| 105 |
+
"think": True,
|
| 106 |
+
"stream": False,
|
| 107 |
+
"options": {"temperature": 0.1, "top_p": 0.95, "num_predict": 4096},
|
| 108 |
+
}
|
| 109 |
+
for attempt in range(3):
|
| 110 |
+
try:
|
| 111 |
+
req = urllib.request.Request(
|
| 112 |
+
f"http://127.0.0.1:{port}/api/chat",
|
| 113 |
+
data=json.dumps(payload).encode("utf-8"),
|
| 114 |
+
headers={"Content-Type": "application/json"},
|
| 115 |
+
)
|
| 116 |
+
with urllib.request.urlopen(req, timeout=300) as resp:
|
| 117 |
+
data = json.loads(resp.read().decode("utf-8"))
|
| 118 |
+
content = data.get("message", {}).get("content", "") or ""
|
| 119 |
+
thinking = data.get("message", {}).get("thinking", "") or ""
|
| 120 |
+
m = ANSWER_THINK_RE.findall(content) or ANSWER_THINK_RE.findall(thinking)
|
| 121 |
+
if m:
|
| 122 |
+
ans = m[-1]
|
| 123 |
+
else:
|
| 124 |
+
digits = re.findall(r"\b([1-4])\b", content if content.strip() else thinking)
|
| 125 |
+
ans = digits[-1] if digits else "1"
|
| 126 |
+
return {
|
| 127 |
+
"q_no": q_no,
|
| 128 |
+
"subject": subj,
|
| 129 |
+
"category": q.get("category", "general"),
|
| 130 |
+
"level": lvl,
|
| 131 |
+
"answer": str(ans),
|
| 132 |
+
}
|
| 133 |
+
except Exception:
|
| 134 |
+
time.sleep(2)
|
| 135 |
+
return {
|
| 136 |
+
"q_no": q_no,
|
| 137 |
+
"subject": subj,
|
| 138 |
+
"category": q.get("category", "general"),
|
| 139 |
+
"level": lvl,
|
| 140 |
+
"answer": p1_map.get(q_key, "1"),
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
t0 = time.time()
|
| 144 |
+
done_count = len(done_p3)
|
| 145 |
+
with open(p3_ckpt_path, "a", encoding="utf-8") as f_ckpt:
|
| 146 |
+
with ThreadPoolExecutor(max_workers=4) as ex:
|
| 147 |
+
futures = {ex.submit(solve_p3, (i, q)): q for i, q in enumerate(rem_p3)}
|
| 148 |
+
for fut in as_completed(futures):
|
| 149 |
+
res = fut.result()
|
| 150 |
+
f_ckpt.write(json.dumps(res, ensure_ascii=False) + "\n")
|
| 151 |
+
f_ckpt.flush()
|
| 152 |
+
done_count += 1
|
| 153 |
+
if done_count % 20 == 0 or done_count == len(target_qs):
|
| 154 |
+
el = time.time() - t0
|
| 155 |
+
rate = (done_count - len(done_p3)) / max(el, 1e-5)
|
| 156 |
+
eta = (len(target_qs) - done_count) / max(rate, 1e-5) / 60
|
| 157 |
+
print(f"[Pass 3: {done_count}/{len(target_qs)}] {rate:.2f} q/s | ETA: {eta:.1f} min", flush=True)
|
| 158 |
+
print("PASS 3 COMPLETE!")
|
training/kaggle_cells/cell5_pass4_pass5.py
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# === CELL 5 (standalone): PASS 4 (rot +2) and PASS 5 (rot +3) on the 720 uncertain questions, 4096 tokens ===
|
| 2 |
+
import os, re, json, time, zipfile, shutil, subprocess, urllib.request
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 5 |
+
|
| 6 |
+
# 1. Ollama servers (restart if the session was reset)
|
| 7 |
+
for idx, port in [(0, 11434), (1, 11435)]:
|
| 8 |
+
try:
|
| 9 |
+
urllib.request.urlopen(f"http://127.0.0.1:{port}/api/tags", timeout=3)
|
| 10 |
+
except Exception:
|
| 11 |
+
env = {**os.environ, "CUDA_VISIBLE_DEVICES": str(idx), "OLLAMA_HOST": f"127.0.0.1:{port}",
|
| 12 |
+
"OLLAMA_NUM_PARALLEL": "2", "OLLAMA_FLASH_ATTENTION": "1", "OLLAMA_KEEP_ALIVE": "24h"}
|
| 13 |
+
subprocess.Popen(["ollama", "serve"], env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
| 14 |
+
time.sleep(5)
|
| 15 |
+
tags = urllib.request.urlopen("http://127.0.0.1:11434/api/tags", timeout=5).read().decode()
|
| 16 |
+
if "gemma4" not in tags:
|
| 17 |
+
print("gemma4:e4b missing -> pulling (takes a few minutes)...")
|
| 18 |
+
subprocess.run(["ollama", "pull", "gemma4:e4b"], env={**os.environ, "OLLAMA_HOST": "127.0.0.1:11434"})
|
| 19 |
+
if "11435" not in "":
|
| 20 |
+
subprocess.run(["ollama", "pull", "gemma4:e4b"], env={**os.environ, "OLLAMA_HOST": "127.0.0.1:11435"})
|
| 21 |
+
|
| 22 |
+
# 2. Data directory (re-extract if the session was reset)
|
| 23 |
+
work_dir = Path("/kaggle/working/work"); work_dir.mkdir(parents=True, exist_ok=True)
|
| 24 |
+
data_dir = work_dir / "data"
|
| 25 |
+
if not (data_dir / "easy").exists():
|
| 26 |
+
for p in Path("/kaggle/input").rglob("*"):
|
| 27 |
+
if p.name == "kaggle_data.zip":
|
| 28 |
+
zipfile.ZipFile(p).extractall(work_dir); break
|
| 29 |
+
elif p.name == "predictions_gemma4_cot.jsonl":
|
| 30 |
+
shutil.copytree(p.parent.parent, work_dir, dirs_exist_ok=True); break
|
| 31 |
+
print("data dir exists:", (data_dir / "easy").exists())
|
| 32 |
+
|
| 33 |
+
HOSTS = ["http://127.0.0.1:11434", "http://127.0.0.1:11435"]
|
| 34 |
+
POS_RE = re.compile(r"ඉහත|above|\b[1-4]\s*(?:හා|සහ|හෝ|,|and|or)\s*[1-4]\b", re.I)
|
| 35 |
+
ANS_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.I)
|
| 36 |
+
SYSTEM_THINK = (
|
| 37 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 38 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 39 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 40 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). You may reason in English. "
|
| 41 |
+
"Finish with the final answer in the form 'Answer: <number>'."
|
| 42 |
+
)
|
| 43 |
+
|
| 44 |
+
# Packaging repair (2026-10-28): replace the interrupted archive's empty target list
|
| 45 |
+
# with the original input-derived disagreement rule. No labels are used.
|
| 46 |
+
def load_answers(path):
|
| 47 |
+
with Path(path).open(encoding="utf-8") as f:
|
| 48 |
+
return {(r["level"], r["subject"], r["q_no"]): str(r["answer"])
|
| 49 |
+
for r in (json.loads(line) for line in f if line.strip())}
|
| 50 |
+
|
| 51 |
+
def qkey(lvl, subj, q_no):
|
| 52 |
+
return f"{str(lvl).lower().strip()}_{str(subj).strip()}_{str(q_no).strip()}"
|
| 53 |
+
|
| 54 |
+
all_qs = []
|
| 55 |
+
for lvl in ["easy", "medium", "hard"]:
|
| 56 |
+
for f in sorted((data_dir / lvl).glob("*.json")):
|
| 57 |
+
for item in json.load(open(f, encoding="utf-8")):
|
| 58 |
+
item["_level"] = lvl
|
| 59 |
+
all_qs.append(item)
|
| 60 |
+
print("Total questions:", len(all_qs), "(expect 2238)")
|
| 61 |
+
|
| 62 |
+
p1 = load_answers("/kaggle/working/pass1_think_2048_orig.jsonl")
|
| 63 |
+
p2 = load_answers("/kaggle/working/predictions_gemma4_think_pass2_ckpt.jsonl")
|
| 64 |
+
cot = load_answers(data_dir / "predictions_gemma4_cot.jsonl")
|
| 65 |
+
direct = load_answers(data_dir / "predictions_gemma4_direct.jsonl")
|
| 66 |
+
targets = []
|
| 67 |
+
for q in all_qs:
|
| 68 |
+
k = (q["_level"], q["subject"], q["q_no"])
|
| 69 |
+
uncertain = p1[k] != p2[k] if k in p2 else p1[k] != cot.get(k) or p1[k] != direct.get(k)
|
| 70 |
+
if uncertain and len(q["choices"]) == 4 and not POS_RE.search(" ".join(map(str, q["choices"]))):
|
| 71 |
+
targets.append(q)
|
| 72 |
+
print("Targets:", len(targets), "(expect ~715-720)")
|
| 73 |
+
|
| 74 |
+
def solve(args):
|
| 75 |
+
idx, q, shift = args
|
| 76 |
+
host = HOSTS[idx % 2]
|
| 77 |
+
lvl = q["_level"]; subj = q["subject"]
|
| 78 |
+
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 79 |
+
ch = list(q["choices"])
|
| 80 |
+
rot = ch[shift:] + ch[:shift]
|
| 81 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(rot, 1))
|
| 82 |
+
user = (f"විෂය (Subject): {subj} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 83 |
+
f"ප්රශ්නය (Question):\n{q['question'].strip()}\n\n"
|
| 84 |
+
f"විකල්ප (Options):\n{opts}\n\n"
|
| 85 |
+
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'.")
|
| 86 |
+
payload = json.dumps({"model": "gemma4:e4b",
|
| 87 |
+
"messages": [{"role": "system", "content": SYSTEM_THINK}, {"role": "user", "content": user}],
|
| 88 |
+
"stream": False, "think": True,
|
| 89 |
+
"options": {"temperature": 0.0, "num_predict": 4096}}).encode("utf-8")
|
| 90 |
+
for _ in range(2):
|
| 91 |
+
try:
|
| 92 |
+
req = urllib.request.Request(f"{host}/api/chat", data=payload, headers={"Content-Type": "application/json"})
|
| 93 |
+
with urllib.request.urlopen(req, timeout=300) as resp:
|
| 94 |
+
msg = json.loads(resp.read().decode("utf-8")).get("message", {})
|
| 95 |
+
content, thinking = msg.get("content", "") or "", msg.get("thinking", "") or ""
|
| 96 |
+
m = ANS_RE.findall(content) or ANS_RE.findall(thinking)
|
| 97 |
+
if not m:
|
| 98 |
+
return None # no clear answer: skip so it does not pollute the vote
|
| 99 |
+
orig = str(((int(m[-1]) - 1 + shift) % 4) + 1) # map back to original option numbering
|
| 100 |
+
return {"q_no": q["q_no"], "subject": subj, "category": q.get("category", "general"),
|
| 101 |
+
"level": lvl, "answer": orig}
|
| 102 |
+
except Exception:
|
| 103 |
+
time.sleep(2)
|
| 104 |
+
return None
|
| 105 |
+
|
| 106 |
+
for pass_no, shift in [(4, 2), (5, 3)]:
|
| 107 |
+
ck = Path(f"/kaggle/working/predictions_gemma4_think_pass{pass_no}_ckpt.jsonl")
|
| 108 |
+
done = set()
|
| 109 |
+
if ck.exists():
|
| 110 |
+
for line in open(ck, encoding="utf-8"):
|
| 111 |
+
if line.strip():
|
| 112 |
+
r = json.loads(line); done.add(qkey(r["level"], r["subject"], r["q_no"]))
|
| 113 |
+
todo = [(i, q, shift) for i, q in enumerate(targets) if qkey(q["_level"], q["subject"], q["q_no"]) not in done]
|
| 114 |
+
print(f"Pass {pass_no} (shift {shift}): done {len(done)}, remaining {len(todo)}")
|
| 115 |
+
t0 = time.time(); n = 0
|
| 116 |
+
with open(ck, "a", encoding="utf-8") as fo, ThreadPoolExecutor(max_workers=4) as ex:
|
| 117 |
+
for fut in as_completed([ex.submit(solve, t) for t in todo]):
|
| 118 |
+
r = fut.result()
|
| 119 |
+
if r:
|
| 120 |
+
fo.write(json.dumps(r, ensure_ascii=False) + "\n"); fo.flush()
|
| 121 |
+
n += 1
|
| 122 |
+
if n % 20 == 0:
|
| 123 |
+
print(f" Pass {pass_no}: {n}/{len(todo)} ({(time.time()-t0)/60:.1f} min)", flush=True)
|
| 124 |
+
print(f"PASS {pass_no} COMPLETE -> {ck}")
|
training/passes/baseline_cot_4shot.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/passes/baseline_direct_4shot.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/passes/mac_think_2048_orig.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/passes/pass1_think_2048_orig.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/passes/pass2_think_4096_rot1.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/passes/pass3_think_4096_hint.jsonl
ADDED
|
@@ -0,0 +1,720 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"q_no": 14, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 2 |
+
{"q_no": 19, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 3 |
+
{"q_no": 10, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 4 |
+
{"q_no": 6, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 5 |
+
{"q_no": 21, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 6 |
+
{"q_no": 22, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 7 |
+
{"q_no": 24, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 8 |
+
{"q_no": 23, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 9 |
+
{"q_no": 3, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 10 |
+
{"q_no": 1, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 11 |
+
{"q_no": 5, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 12 |
+
{"q_no": 2, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 13 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 14 |
+
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 15 |
+
{"q_no": 8, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 16 |
+
{"q_no": 14, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 17 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 18 |
+
{"q_no": 21, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 19 |
+
{"q_no": 22, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 20 |
+
{"q_no": 7, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 21 |
+
{"q_no": 4, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 22 |
+
{"q_no": 10, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 23 |
+
{"q_no": 12, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 24 |
+
{"q_no": 14, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 25 |
+
{"q_no": 8, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 26 |
+
{"q_no": 19, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 27 |
+
{"q_no": 26, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 28 |
+
{"q_no": 24, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 29 |
+
{"q_no": 16, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 30 |
+
{"q_no": 34, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 31 |
+
{"q_no": 37, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 32 |
+
{"q_no": 35, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 33 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 34 |
+
{"q_no": 40, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 35 |
+
{"q_no": 39, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 36 |
+
{"q_no": 41, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 37 |
+
{"q_no": 43, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 38 |
+
{"q_no": 49, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 39 |
+
{"q_no": 45, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 40 |
+
{"q_no": 9, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 41 |
+
{"q_no": 3, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 42 |
+
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 43 |
+
{"q_no": 4, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 44 |
+
{"q_no": 17, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 45 |
+
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 46 |
+
{"q_no": 19, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 47 |
+
{"q_no": 15, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 48 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 49 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 50 |
+
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 51 |
+
{"q_no": 35, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 52 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 53 |
+
{"q_no": 45, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 54 |
+
{"q_no": 44, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 55 |
+
{"q_no": 50, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 56 |
+
{"q_no": 32, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 57 |
+
{"q_no": 53, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 58 |
+
{"q_no": 57, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 59 |
+
{"q_no": 52, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 60 |
+
{"q_no": 48, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 61 |
+
{"q_no": 10, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 62 |
+
{"q_no": 56, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 63 |
+
{"q_no": 58, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 64 |
+
{"q_no": 19, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 65 |
+
{"q_no": 6, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 66 |
+
{"q_no": 15, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 67 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 68 |
+
{"q_no": 14, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 69 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 70 |
+
{"q_no": 17, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 71 |
+
{"q_no": 15, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 72 |
+
{"q_no": 24, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 73 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 74 |
+
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 75 |
+
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 76 |
+
{"q_no": 39, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 77 |
+
{"q_no": 2, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 78 |
+
{"q_no": 3, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 79 |
+
{"q_no": 4, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 80 |
+
{"q_no": 8, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 81 |
+
{"q_no": 10, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 82 |
+
{"q_no": 9, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 83 |
+
{"q_no": 15, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 84 |
+
{"q_no": 12, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 85 |
+
{"q_no": 17, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 86 |
+
{"q_no": 23, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 87 |
+
{"q_no": 16, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 88 |
+
{"q_no": 28, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 89 |
+
{"q_no": 18, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 90 |
+
{"q_no": 24, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 91 |
+
{"q_no": 30, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 92 |
+
{"q_no": 39, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 93 |
+
{"q_no": 32, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 94 |
+
{"q_no": 45, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 95 |
+
{"q_no": 29, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 96 |
+
{"q_no": 52, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 97 |
+
{"q_no": 41, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 98 |
+
{"q_no": 55, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 99 |
+
{"q_no": 51, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 100 |
+
{"q_no": 2, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 101 |
+
{"q_no": 53, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 102 |
+
{"q_no": 56, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 103 |
+
{"q_no": 8, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 104 |
+
{"q_no": 7, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 105 |
+
{"q_no": 11, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 106 |
+
{"q_no": 14, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 107 |
+
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 108 |
+
{"q_no": 10, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 109 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 110 |
+
{"q_no": 28, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 111 |
+
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 112 |
+
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 113 |
+
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 114 |
+
{"q_no": 40, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 115 |
+
{"q_no": 32, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 116 |
+
{"q_no": 36, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 117 |
+
{"q_no": 1, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 118 |
+
{"q_no": 11, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 119 |
+
{"q_no": 19, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 120 |
+
{"q_no": 42, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 121 |
+
{"q_no": 6, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 122 |
+
{"q_no": 18, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 123 |
+
{"q_no": 31, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 124 |
+
{"q_no": 35, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 125 |
+
{"q_no": 33, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 126 |
+
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 127 |
+
{"q_no": 42, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 128 |
+
{"q_no": 45, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 129 |
+
{"q_no": 40, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 130 |
+
{"q_no": 46, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 131 |
+
{"q_no": 48, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 132 |
+
{"q_no": 49, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 133 |
+
{"q_no": 50, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 134 |
+
{"q_no": 10, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 135 |
+
{"q_no": 13, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 136 |
+
{"q_no": 15, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 137 |
+
{"q_no": 34, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "4"}
|
| 138 |
+
{"q_no": 29, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 139 |
+
{"q_no": 36, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 140 |
+
{"q_no": 35, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 141 |
+
{"q_no": 1, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 142 |
+
{"q_no": 12, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 143 |
+
{"q_no": 7, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 144 |
+
{"q_no": 11, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 145 |
+
{"q_no": 19, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 146 |
+
{"q_no": 16, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 147 |
+
{"q_no": 13, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 148 |
+
{"q_no": 24, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 149 |
+
{"q_no": 25, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 150 |
+
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 151 |
+
{"q_no": 35, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 152 |
+
{"q_no": 28, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 153 |
+
{"q_no": 2, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 154 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 155 |
+
{"q_no": 4, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 156 |
+
{"q_no": 37, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 157 |
+
{"q_no": 9, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 158 |
+
{"q_no": 3, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 159 |
+
{"q_no": 12, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 160 |
+
{"q_no": 5, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 161 |
+
{"q_no": 25, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 162 |
+
{"q_no": 21, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 163 |
+
{"q_no": 11, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 164 |
+
{"q_no": 35, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 165 |
+
{"q_no": 39, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 166 |
+
{"q_no": 33, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 167 |
+
{"q_no": 40, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 168 |
+
{"q_no": 52, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 169 |
+
{"q_no": 56, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 170 |
+
{"q_no": 57, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 171 |
+
{"q_no": 41, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 172 |
+
{"q_no": 71, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 173 |
+
{"q_no": 79, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 174 |
+
{"q_no": 63, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 175 |
+
{"q_no": 75, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 176 |
+
{"q_no": 84, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 177 |
+
{"q_no": 86, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 178 |
+
{"q_no": 87, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 179 |
+
{"q_no": 90, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 180 |
+
{"q_no": 2, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 181 |
+
{"q_no": 8, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 182 |
+
{"q_no": 1, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 183 |
+
{"q_no": 12, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 184 |
+
{"q_no": 3, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 185 |
+
{"q_no": 15, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 186 |
+
{"q_no": 19, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 187 |
+
{"q_no": 10, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 188 |
+
{"q_no": 22, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 189 |
+
{"q_no": 13, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 190 |
+
{"q_no": 28, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 191 |
+
{"q_no": 18, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 192 |
+
{"q_no": 20, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 193 |
+
{"q_no": 34, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 194 |
+
{"q_no": 33, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 195 |
+
{"q_no": 24, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 196 |
+
{"q_no": 40, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 197 |
+
{"q_no": 35, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 198 |
+
{"q_no": 41, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 199 |
+
{"q_no": 47, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 200 |
+
{"q_no": 56, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 201 |
+
{"q_no": 57, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 202 |
+
{"q_no": 52, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 203 |
+
{"q_no": 63, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 204 |
+
{"q_no": 61, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 205 |
+
{"q_no": 60, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 206 |
+
{"q_no": 66, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 207 |
+
{"q_no": 67, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 208 |
+
{"q_no": 69, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 209 |
+
{"q_no": 76, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 210 |
+
{"q_no": 73, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 211 |
+
{"q_no": 68, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 212 |
+
{"q_no": 79, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 213 |
+
{"q_no": 81, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 214 |
+
{"q_no": 83, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 215 |
+
{"q_no": 1, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 216 |
+
{"q_no": 6, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 217 |
+
{"q_no": 7, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 218 |
+
{"q_no": 8, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 219 |
+
{"q_no": 12, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 220 |
+
{"q_no": 10, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 221 |
+
{"q_no": 9, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 222 |
+
{"q_no": 19, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 223 |
+
{"q_no": 17, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 224 |
+
{"q_no": 13, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 225 |
+
{"q_no": 14, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 226 |
+
{"q_no": 20, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 227 |
+
{"q_no": 22, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 228 |
+
{"q_no": 21, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 229 |
+
{"q_no": 25, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 230 |
+
{"q_no": 24, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 231 |
+
{"q_no": 37, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 232 |
+
{"q_no": 30, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 233 |
+
{"q_no": 2, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 234 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 235 |
+
{"q_no": 1, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 236 |
+
{"q_no": 4, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 237 |
+
{"q_no": 23, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 238 |
+
{"q_no": 19, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 239 |
+
{"q_no": 25, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 240 |
+
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 241 |
+
{"q_no": 40, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 242 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 243 |
+
{"q_no": 35, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 244 |
+
{"q_no": 44, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 245 |
+
{"q_no": 59, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 246 |
+
{"q_no": 47, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 247 |
+
{"q_no": 57, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 248 |
+
{"q_no": 66, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 249 |
+
{"q_no": 67, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 250 |
+
{"q_no": 68, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 251 |
+
{"q_no": 65, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 252 |
+
{"q_no": 77, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 253 |
+
{"q_no": 78, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 254 |
+
{"q_no": 76, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 255 |
+
{"q_no": 72, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 256 |
+
{"q_no": 83, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 257 |
+
{"q_no": 99, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 258 |
+
{"q_no": 97, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 259 |
+
{"q_no": 80, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 260 |
+
{"q_no": 105, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 261 |
+
{"q_no": 101, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 262 |
+
{"q_no": 100, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 263 |
+
{"q_no": 107, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 264 |
+
{"q_no": 106, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 265 |
+
{"q_no": 104, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 266 |
+
{"q_no": 109, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 267 |
+
{"q_no": 113, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 268 |
+
{"q_no": 108, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 269 |
+
{"q_no": 124, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 270 |
+
{"q_no": 127, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 271 |
+
{"q_no": 114, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 272 |
+
{"q_no": 118, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 273 |
+
{"q_no": 128, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 274 |
+
{"q_no": 129, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 275 |
+
{"q_no": 131, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 276 |
+
{"q_no": 132, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 277 |
+
{"q_no": 130, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 278 |
+
{"q_no": 136, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 279 |
+
{"q_no": 140, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 280 |
+
{"q_no": 142, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 281 |
+
{"q_no": 139, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 282 |
+
{"q_no": 141, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 283 |
+
{"q_no": 150, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 284 |
+
{"q_no": 156, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 285 |
+
{"q_no": 155, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 286 |
+
{"q_no": 144, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 287 |
+
{"q_no": 164, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 288 |
+
{"q_no": 158, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 289 |
+
{"q_no": 167, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 290 |
+
{"q_no": 170, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 291 |
+
{"q_no": 172, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 292 |
+
{"q_no": 2, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 293 |
+
{"q_no": 162, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 294 |
+
{"q_no": 3, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 295 |
+
{"q_no": 6, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 296 |
+
{"q_no": 4, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 297 |
+
{"q_no": 7, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 298 |
+
{"q_no": 9, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 299 |
+
{"q_no": 13, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 300 |
+
{"q_no": 10, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 301 |
+
{"q_no": 19, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 302 |
+
{"q_no": 22, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 303 |
+
{"q_no": 21, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 304 |
+
{"q_no": 17, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 305 |
+
{"q_no": 30, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 306 |
+
{"q_no": 33, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 307 |
+
{"q_no": 31, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 308 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 309 |
+
{"q_no": 34, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 310 |
+
{"q_no": 11, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 311 |
+
{"q_no": 16, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 312 |
+
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 313 |
+
{"q_no": 20, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 314 |
+
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 315 |
+
{"q_no": 18, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 316 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 317 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 318 |
+
{"q_no": 37, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 319 |
+
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 320 |
+
{"q_no": 28, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 321 |
+
{"q_no": 25, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 322 |
+
{"q_no": 56, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 323 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 324 |
+
{"q_no": 7, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 325 |
+
{"q_no": 40, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 326 |
+
{"q_no": 64, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 327 |
+
{"q_no": 68, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 328 |
+
{"q_no": 65, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 329 |
+
{"q_no": 60, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 330 |
+
{"q_no": 77, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 331 |
+
{"q_no": 69, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 332 |
+
{"q_no": 92, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 333 |
+
{"q_no": 86, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 334 |
+
{"q_no": 93, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 335 |
+
{"q_no": 94, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 336 |
+
{"q_no": 113, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 337 |
+
{"q_no": 95, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 338 |
+
{"q_no": 101, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 339 |
+
{"q_no": 115, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 340 |
+
{"q_no": 131, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 341 |
+
{"q_no": 146, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 342 |
+
{"q_no": 139, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 343 |
+
{"q_no": 140, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 344 |
+
{"q_no": 137, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 345 |
+
{"q_no": 159, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 346 |
+
{"q_no": 154, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 347 |
+
{"q_no": 2, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 348 |
+
{"q_no": 150, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 349 |
+
{"q_no": 3, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "4"}
|
| 350 |
+
{"q_no": 4, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 351 |
+
{"q_no": 12, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "4"}
|
| 352 |
+
{"q_no": 11, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 353 |
+
{"q_no": 15, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 354 |
+
{"q_no": 30, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 355 |
+
{"q_no": 27, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 356 |
+
{"q_no": 38, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "1"}
|
| 357 |
+
{"q_no": 34, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 358 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 359 |
+
{"q_no": 17, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "4"}
|
| 360 |
+
{"q_no": 7, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 361 |
+
{"q_no": 8, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 362 |
+
{"q_no": 9, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 363 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 364 |
+
{"q_no": 16, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 365 |
+
{"q_no": 19, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 366 |
+
{"q_no": 24, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 367 |
+
{"q_no": 20, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 368 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 369 |
+
{"q_no": 34, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 370 |
+
{"q_no": 26, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 371 |
+
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 372 |
+
{"q_no": 43, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 373 |
+
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 374 |
+
{"q_no": 39, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 375 |
+
{"q_no": 42, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 376 |
+
{"q_no": 49, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 377 |
+
{"q_no": 54, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 378 |
+
{"q_no": 61, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 379 |
+
{"q_no": 66, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 380 |
+
{"q_no": 72, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 381 |
+
{"q_no": 63, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 382 |
+
{"q_no": 55, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 383 |
+
{"q_no": 78, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 384 |
+
{"q_no": 80, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 385 |
+
{"q_no": 76, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 386 |
+
{"q_no": 67, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 387 |
+
{"q_no": 83, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 388 |
+
{"q_no": 81, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 389 |
+
{"q_no": 92, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 390 |
+
{"q_no": 79, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 391 |
+
{"q_no": 84, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 392 |
+
{"q_no": 94, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 393 |
+
{"q_no": 93, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 394 |
+
{"q_no": 98, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 395 |
+
{"q_no": 101, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 396 |
+
{"q_no": 99, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 397 |
+
{"q_no": 102, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 398 |
+
{"q_no": 105, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 399 |
+
{"q_no": 106, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 400 |
+
{"q_no": 104, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 401 |
+
{"q_no": 109, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 402 |
+
{"q_no": 116, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 403 |
+
{"q_no": 117, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 404 |
+
{"q_no": 111, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 405 |
+
{"q_no": 119, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 406 |
+
{"q_no": 120, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 407 |
+
{"q_no": 121, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 408 |
+
{"q_no": 131, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 409 |
+
{"q_no": 126, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 410 |
+
{"q_no": 139, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 411 |
+
{"q_no": 140, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 412 |
+
{"q_no": 144, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 413 |
+
{"q_no": 142, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 414 |
+
{"q_no": 145, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 415 |
+
{"q_no": 148, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 416 |
+
{"q_no": 149, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 417 |
+
{"q_no": 152, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 418 |
+
{"q_no": 151, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 419 |
+
{"q_no": 9, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 420 |
+
{"q_no": 6, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 421 |
+
{"q_no": 12, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 422 |
+
{"q_no": 13, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 423 |
+
{"q_no": 11, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 424 |
+
{"q_no": 10, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 425 |
+
{"q_no": 36, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 426 |
+
{"q_no": 21, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 427 |
+
{"q_no": 30, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 428 |
+
{"q_no": 1, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 429 |
+
{"q_no": 2, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 430 |
+
{"q_no": 5, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 431 |
+
{"q_no": 3, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 432 |
+
{"q_no": 7, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 433 |
+
{"q_no": 6, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 434 |
+
{"q_no": 9, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 435 |
+
{"q_no": 14, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 436 |
+
{"q_no": 8, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 437 |
+
{"q_no": 11, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 438 |
+
{"q_no": 17, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 439 |
+
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 440 |
+
{"q_no": 18, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 441 |
+
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 442 |
+
{"q_no": 21, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 443 |
+
{"q_no": 22, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 444 |
+
{"q_no": 23, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 445 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 446 |
+
{"q_no": 20, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 447 |
+
{"q_no": 24, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 448 |
+
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 449 |
+
{"q_no": 29, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 450 |
+
{"q_no": 33, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 451 |
+
{"q_no": 31, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 452 |
+
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 453 |
+
{"q_no": 36, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 454 |
+
{"q_no": 6, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 455 |
+
{"q_no": 10, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 456 |
+
{"q_no": 3, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 457 |
+
{"q_no": 14, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 458 |
+
{"q_no": 18, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 459 |
+
{"q_no": 24, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 460 |
+
{"q_no": 15, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 461 |
+
{"q_no": 23, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 462 |
+
{"q_no": 28, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 463 |
+
{"q_no": 34, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 464 |
+
{"q_no": 26, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 465 |
+
{"q_no": 32, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 466 |
+
{"q_no": 38, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 467 |
+
{"q_no": 5, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 468 |
+
{"q_no": 41, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 469 |
+
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 470 |
+
{"q_no": 22, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 471 |
+
{"q_no": 19, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 472 |
+
{"q_no": 29, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 473 |
+
{"q_no": 32, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 474 |
+
{"q_no": 28, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 475 |
+
{"q_no": 36, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 476 |
+
{"q_no": 48, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 477 |
+
{"q_no": 39, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 478 |
+
{"q_no": 49, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 479 |
+
{"q_no": 58, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 480 |
+
{"q_no": 40, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 481 |
+
{"q_no": 61, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 482 |
+
{"q_no": 60, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 483 |
+
{"q_no": 59, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 484 |
+
{"q_no": 63, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 485 |
+
{"q_no": 3, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 486 |
+
{"q_no": 4, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 487 |
+
{"q_no": 64, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 488 |
+
{"q_no": 8, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 489 |
+
{"q_no": 11, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 490 |
+
{"q_no": 13, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 491 |
+
{"q_no": 20, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 492 |
+
{"q_no": 24, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 493 |
+
{"q_no": 10, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 494 |
+
{"q_no": 22, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 495 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 496 |
+
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 497 |
+
{"q_no": 34, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 498 |
+
{"q_no": 33, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 499 |
+
{"q_no": 38, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 500 |
+
{"q_no": 41, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 501 |
+
{"q_no": 37, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 502 |
+
{"q_no": 39, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 503 |
+
{"q_no": 47, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 504 |
+
{"q_no": 52, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 505 |
+
{"q_no": 45, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 506 |
+
{"q_no": 54, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 507 |
+
{"q_no": 55, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 508 |
+
{"q_no": 56, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 509 |
+
{"q_no": 60, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 510 |
+
{"q_no": 61, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 511 |
+
{"q_no": 62, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 512 |
+
{"q_no": 63, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 513 |
+
{"q_no": 69, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 514 |
+
{"q_no": 70, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 515 |
+
{"q_no": 71, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 516 |
+
{"q_no": 73, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 517 |
+
{"q_no": 75, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 518 |
+
{"q_no": 82, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 519 |
+
{"q_no": 85, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 520 |
+
{"q_no": 80, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 521 |
+
{"q_no": 93, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 522 |
+
{"q_no": 98, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 523 |
+
{"q_no": 86, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 524 |
+
{"q_no": 88, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 525 |
+
{"q_no": 103, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 526 |
+
{"q_no": 99, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 527 |
+
{"q_no": 109, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 528 |
+
{"q_no": 100, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 529 |
+
{"q_no": 110, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 530 |
+
{"q_no": 113, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 531 |
+
{"q_no": 115, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 532 |
+
{"q_no": 116, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 533 |
+
{"q_no": 114, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 534 |
+
{"q_no": 120, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 535 |
+
{"q_no": 1, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 536 |
+
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 537 |
+
{"q_no": 5, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 538 |
+
{"q_no": 4, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 539 |
+
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 540 |
+
{"q_no": 14, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 541 |
+
{"q_no": 13, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 542 |
+
{"q_no": 17, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 543 |
+
{"q_no": 16, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 544 |
+
{"q_no": 19, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 545 |
+
{"q_no": 18, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 546 |
+
{"q_no": 20, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 547 |
+
{"q_no": 21, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 548 |
+
{"q_no": 22, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 549 |
+
{"q_no": 23, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 550 |
+
{"q_no": 24, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 551 |
+
{"q_no": 31, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 552 |
+
{"q_no": 29, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 553 |
+
{"q_no": 36, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 554 |
+
{"q_no": 32, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 555 |
+
{"q_no": 43, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 556 |
+
{"q_no": 46, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 557 |
+
{"q_no": 53, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 558 |
+
{"q_no": 55, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 559 |
+
{"q_no": 51, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 560 |
+
{"q_no": 60, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 561 |
+
{"q_no": 63, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 562 |
+
{"q_no": 61, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 563 |
+
{"q_no": 62, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 564 |
+
{"q_no": 64, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 565 |
+
{"q_no": 67, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 566 |
+
{"q_no": 69, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 567 |
+
{"q_no": 71, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 568 |
+
{"q_no": 70, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 569 |
+
{"q_no": 75, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 570 |
+
{"q_no": 72, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 571 |
+
{"q_no": 77, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 572 |
+
{"q_no": 82, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 573 |
+
{"q_no": 86, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 574 |
+
{"q_no": 85, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 575 |
+
{"q_no": 87, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 576 |
+
{"q_no": 91, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 577 |
+
{"q_no": 83, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 578 |
+
{"q_no": 88, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 579 |
+
{"q_no": 93, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 580 |
+
{"q_no": 94, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 581 |
+
{"q_no": 99, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 582 |
+
{"q_no": 98, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 583 |
+
{"q_no": 97, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 584 |
+
{"q_no": 95, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 585 |
+
{"q_no": 101, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 586 |
+
{"q_no": 100, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 587 |
+
{"q_no": 105, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 588 |
+
{"q_no": 108, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 589 |
+
{"q_no": 119, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 590 |
+
{"q_no": 111, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 591 |
+
{"q_no": 113, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 592 |
+
{"q_no": 118, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 593 |
+
{"q_no": 123, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 594 |
+
{"q_no": 126, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 595 |
+
{"q_no": 124, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 596 |
+
{"q_no": 121, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 597 |
+
{"q_no": 132, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 598 |
+
{"q_no": 134, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 599 |
+
{"q_no": 131, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 600 |
+
{"q_no": 133, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 601 |
+
{"q_no": 140, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 602 |
+
{"q_no": 136, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 603 |
+
{"q_no": 138, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 604 |
+
{"q_no": 145, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 605 |
+
{"q_no": 147, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 606 |
+
{"q_no": 156, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 607 |
+
{"q_no": 151, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 608 |
+
{"q_no": 158, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 609 |
+
{"q_no": 152, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 610 |
+
{"q_no": 8, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "3"}
|
| 611 |
+
{"q_no": 11, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "2"}
|
| 612 |
+
{"q_no": 9, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "3"}
|
| 613 |
+
{"q_no": 17, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "3"}
|
| 614 |
+
{"q_no": 1, "subject": "Art", "category": "humanities", "level": "hard", "answer": "4"}
|
| 615 |
+
{"q_no": 34, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "4"}
|
| 616 |
+
{"q_no": 8, "subject": "Art", "category": "humanities", "level": "hard", "answer": "4"}
|
| 617 |
+
{"q_no": 11, "subject": "Art", "category": "humanities", "level": "hard", "answer": "4"}
|
| 618 |
+
{"q_no": 3, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 619 |
+
{"q_no": 6, "subject": "Art", "category": "humanities", "level": "hard", "answer": "3"}
|
| 620 |
+
{"q_no": 10, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 621 |
+
{"q_no": 5, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 622 |
+
{"q_no": 15, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 623 |
+
{"q_no": 21, "subject": "Biology", "category": "stem", "level": "hard", "answer": "2"}
|
| 624 |
+
{"q_no": 23, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 625 |
+
{"q_no": 22, "subject": "Biology", "category": "stem", "level": "hard", "answer": "2"}
|
| 626 |
+
{"q_no": 28, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 627 |
+
{"q_no": 34, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 628 |
+
{"q_no": 24, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 629 |
+
{"q_no": 5, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 630 |
+
{"q_no": 10, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 631 |
+
{"q_no": 42, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 632 |
+
{"q_no": 23, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 633 |
+
{"q_no": 27, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 634 |
+
{"q_no": 30, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "1"}
|
| 635 |
+
{"q_no": 36, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 636 |
+
{"q_no": 26, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "1"}
|
| 637 |
+
{"q_no": 3, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 638 |
+
{"q_no": 10, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 639 |
+
{"q_no": 11, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 640 |
+
{"q_no": 17, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 641 |
+
{"q_no": 21, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 642 |
+
{"q_no": 18, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 643 |
+
{"q_no": 23, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 644 |
+
{"q_no": 22, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 645 |
+
{"q_no": 25, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 646 |
+
{"q_no": 29, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 647 |
+
{"q_no": 31, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 648 |
+
{"q_no": 24, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 649 |
+
{"q_no": 32, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 650 |
+
{"q_no": 38, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 651 |
+
{"q_no": 35, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 652 |
+
{"q_no": 37, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 653 |
+
{"q_no": 40, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 654 |
+
{"q_no": 6, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 655 |
+
{"q_no": 39, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 656 |
+
{"q_no": 15, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 657 |
+
{"q_no": 4, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "1"}
|
| 658 |
+
{"q_no": 28, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 659 |
+
{"q_no": 3, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "4"}
|
| 660 |
+
{"q_no": 5, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "4"}
|
| 661 |
+
{"q_no": 7, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "3"}
|
| 662 |
+
{"q_no": 10, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 663 |
+
{"q_no": 1, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 664 |
+
{"q_no": 11, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "1"}
|
| 665 |
+
{"q_no": 9, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "3"}
|
| 666 |
+
{"q_no": 15, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 667 |
+
{"q_no": 11, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 668 |
+
{"q_no": 31, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 669 |
+
{"q_no": 19, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 670 |
+
{"q_no": 38, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 671 |
+
{"q_no": 46, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 672 |
+
{"q_no": 32, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 673 |
+
{"q_no": 4, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "4"}
|
| 674 |
+
{"q_no": 42, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 675 |
+
{"q_no": 3, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "3"}
|
| 676 |
+
{"q_no": 10, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "3"}
|
| 677 |
+
{"q_no": 8, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 678 |
+
{"q_no": 17, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 679 |
+
{"q_no": 13, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 680 |
+
{"q_no": 20, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "3"}
|
| 681 |
+
{"q_no": 22, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 682 |
+
{"q_no": 4, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 683 |
+
{"q_no": 13, "subject": "Economics", "category": "social science", "level": "hard", "answer": "3"}
|
| 684 |
+
{"q_no": 16, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 685 |
+
{"q_no": 9, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 686 |
+
{"q_no": 18, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 687 |
+
{"q_no": 15, "subject": "Economics", "category": "social science", "level": "hard", "answer": "4"}
|
| 688 |
+
{"q_no": 31, "subject": "Economics", "category": "social science", "level": "hard", "answer": "4"}
|
| 689 |
+
{"q_no": 17, "subject": "Economics", "category": "social science", "level": "hard", "answer": "3"}
|
| 690 |
+
{"q_no": 10, "subject": "Geography", "category": "social science", "level": "hard", "answer": "1"}
|
| 691 |
+
{"q_no": 7, "subject": "Geography", "category": "social science", "level": "hard", "answer": "3"}
|
| 692 |
+
{"q_no": 14, "subject": "Geography", "category": "social science", "level": "hard", "answer": "1"}
|
| 693 |
+
{"q_no": 21, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 694 |
+
{"q_no": 30, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 695 |
+
{"q_no": 12, "subject": "Geography", "category": "social science", "level": "hard", "answer": "4"}
|
| 696 |
+
{"q_no": 1, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "3"}
|
| 697 |
+
{"q_no": 34, "subject": "Geography", "category": "social science", "level": "hard", "answer": "3"}
|
| 698 |
+
{"q_no": 22, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 699 |
+
{"q_no": 9, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "2"}
|
| 700 |
+
{"q_no": 21, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "2"}
|
| 701 |
+
{"q_no": 24, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 702 |
+
{"q_no": 2, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 703 |
+
{"q_no": 2, "subject": "Physics", "category": "stem", "level": "hard", "answer": "1"}
|
| 704 |
+
{"q_no": 18, "subject": "Physics", "category": "stem", "level": "hard", "answer": "1"}
|
| 705 |
+
{"q_no": 5, "subject": "Physics", "category": "stem", "level": "hard", "answer": "2"}
|
| 706 |
+
{"q_no": 15, "subject": "Physics", "category": "stem", "level": "hard", "answer": "4"}
|
| 707 |
+
{"q_no": 16, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "4"}
|
| 708 |
+
{"q_no": 19, "subject": "Physics", "category": "stem", "level": "hard", "answer": "3"}
|
| 709 |
+
{"q_no": 26, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "2"}
|
| 710 |
+
{"q_no": 27, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "1"}
|
| 711 |
+
{"q_no": 20, "subject": "Physics", "category": "stem", "level": "hard", "answer": "4"}
|
| 712 |
+
{"q_no": 4, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 713 |
+
{"q_no": 3, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "1"}
|
| 714 |
+
{"q_no": 5, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 715 |
+
{"q_no": 8, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "1"}
|
| 716 |
+
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "3"}
|
| 717 |
+
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 718 |
+
{"q_no": 14, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 719 |
+
{"q_no": 11, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 720 |
+
{"q_no": 19, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "1"}
|
training/passes/pass4_think_4096_rot2.jsonl
ADDED
|
@@ -0,0 +1,712 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"q_no": 14, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 2 |
+
{"q_no": 10, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 3 |
+
{"q_no": 19, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 4 |
+
{"q_no": 6, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 5 |
+
{"q_no": 21, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 6 |
+
{"q_no": 24, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 7 |
+
{"q_no": 22, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 8 |
+
{"q_no": 23, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 9 |
+
{"q_no": 1, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 10 |
+
{"q_no": 2, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 11 |
+
{"q_no": 3, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 12 |
+
{"q_no": 5, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 13 |
+
{"q_no": 8, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 14 |
+
{"q_no": 14, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 15 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 16 |
+
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 17 |
+
{"q_no": 22, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 18 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 19 |
+
{"q_no": 4, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 20 |
+
{"q_no": 8, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 21 |
+
{"q_no": 21, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 22 |
+
{"q_no": 7, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 23 |
+
{"q_no": 12, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 24 |
+
{"q_no": 10, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 25 |
+
{"q_no": 14, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 26 |
+
{"q_no": 16, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 27 |
+
{"q_no": 19, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 28 |
+
{"q_no": 24, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 29 |
+
{"q_no": 26, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 30 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 31 |
+
{"q_no": 35, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 32 |
+
{"q_no": 34, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 33 |
+
{"q_no": 37, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 34 |
+
{"q_no": 40, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 35 |
+
{"q_no": 41, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 36 |
+
{"q_no": 39, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 37 |
+
{"q_no": 43, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 38 |
+
{"q_no": 45, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 39 |
+
{"q_no": 49, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 40 |
+
{"q_no": 3, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 41 |
+
{"q_no": 9, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 42 |
+
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 43 |
+
{"q_no": 4, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 44 |
+
{"q_no": 17, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 45 |
+
{"q_no": 15, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 46 |
+
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 47 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 48 |
+
{"q_no": 19, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 49 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 50 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 51 |
+
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 52 |
+
{"q_no": 32, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 53 |
+
{"q_no": 44, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 54 |
+
{"q_no": 48, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 55 |
+
{"q_no": 45, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 56 |
+
{"q_no": 35, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 57 |
+
{"q_no": 52, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 58 |
+
{"q_no": 53, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 59 |
+
{"q_no": 56, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 60 |
+
{"q_no": 58, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 61 |
+
{"q_no": 50, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 62 |
+
{"q_no": 10, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 63 |
+
{"q_no": 57, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 64 |
+
{"q_no": 15, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 65 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 66 |
+
{"q_no": 6, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 67 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 68 |
+
{"q_no": 15, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 69 |
+
{"q_no": 24, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 70 |
+
{"q_no": 14, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 71 |
+
{"q_no": 19, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 72 |
+
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 73 |
+
{"q_no": 17, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 74 |
+
{"q_no": 39, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 75 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 76 |
+
{"q_no": 3, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 77 |
+
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 78 |
+
{"q_no": 2, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 79 |
+
{"q_no": 8, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 80 |
+
{"q_no": 10, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 81 |
+
{"q_no": 4, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 82 |
+
{"q_no": 9, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 83 |
+
{"q_no": 15, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 84 |
+
{"q_no": 17, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 85 |
+
{"q_no": 16, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 86 |
+
{"q_no": 12, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 87 |
+
{"q_no": 23, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 88 |
+
{"q_no": 28, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 89 |
+
{"q_no": 24, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 90 |
+
{"q_no": 30, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 91 |
+
{"q_no": 39, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 92 |
+
{"q_no": 18, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 93 |
+
{"q_no": 29, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 94 |
+
{"q_no": 32, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 95 |
+
{"q_no": 45, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 96 |
+
{"q_no": 52, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 97 |
+
{"q_no": 41, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 98 |
+
{"q_no": 51, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 99 |
+
{"q_no": 56, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 100 |
+
{"q_no": 2, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 101 |
+
{"q_no": 53, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 102 |
+
{"q_no": 55, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 103 |
+
{"q_no": 8, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 104 |
+
{"q_no": 7, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 105 |
+
{"q_no": 11, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 106 |
+
{"q_no": 14, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 107 |
+
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 108 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 109 |
+
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 110 |
+
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 111 |
+
{"q_no": 10, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 112 |
+
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 113 |
+
{"q_no": 40, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 114 |
+
{"q_no": 28, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 115 |
+
{"q_no": 1, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 116 |
+
{"q_no": 36, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 117 |
+
{"q_no": 32, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 118 |
+
{"q_no": 11, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 119 |
+
{"q_no": 19, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 120 |
+
{"q_no": 6, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 121 |
+
{"q_no": 18, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 122 |
+
{"q_no": 33, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 123 |
+
{"q_no": 31, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 124 |
+
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 125 |
+
{"q_no": 35, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 126 |
+
{"q_no": 46, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 127 |
+
{"q_no": 40, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 128 |
+
{"q_no": 42, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 129 |
+
{"q_no": 45, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 130 |
+
{"q_no": 48, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 131 |
+
{"q_no": 10, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 132 |
+
{"q_no": 50, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 133 |
+
{"q_no": 49, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 134 |
+
{"q_no": 15, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 135 |
+
{"q_no": 34, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 136 |
+
{"q_no": 13, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "3"}
|
| 137 |
+
{"q_no": 35, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 138 |
+
{"q_no": 36, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 139 |
+
{"q_no": 29, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "4"}
|
| 140 |
+
{"q_no": 1, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 141 |
+
{"q_no": 12, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 142 |
+
{"q_no": 7, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 143 |
+
{"q_no": 11, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 144 |
+
{"q_no": 16, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 145 |
+
{"q_no": 19, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 146 |
+
{"q_no": 24, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 147 |
+
{"q_no": 25, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 148 |
+
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 149 |
+
{"q_no": 13, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 150 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 151 |
+
{"q_no": 35, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 152 |
+
{"q_no": 28, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 153 |
+
{"q_no": 2, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 154 |
+
{"q_no": 37, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 155 |
+
{"q_no": 3, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 156 |
+
{"q_no": 5, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 157 |
+
{"q_no": 9, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 158 |
+
{"q_no": 11, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 159 |
+
{"q_no": 12, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 160 |
+
{"q_no": 21, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 161 |
+
{"q_no": 4, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 162 |
+
{"q_no": 33, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 163 |
+
{"q_no": 35, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 164 |
+
{"q_no": 39, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 165 |
+
{"q_no": 25, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 166 |
+
{"q_no": 40, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 167 |
+
{"q_no": 56, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 168 |
+
{"q_no": 52, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 169 |
+
{"q_no": 41, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 170 |
+
{"q_no": 75, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 171 |
+
{"q_no": 57, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 172 |
+
{"q_no": 63, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 173 |
+
{"q_no": 71, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 174 |
+
{"q_no": 86, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 175 |
+
{"q_no": 79, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 176 |
+
{"q_no": 84, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 177 |
+
{"q_no": 87, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 178 |
+
{"q_no": 90, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 179 |
+
{"q_no": 1, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 180 |
+
{"q_no": 8, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 181 |
+
{"q_no": 2, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 182 |
+
{"q_no": 12, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 183 |
+
{"q_no": 3, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 184 |
+
{"q_no": 15, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 185 |
+
{"q_no": 10, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 186 |
+
{"q_no": 13, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 187 |
+
{"q_no": 19, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 188 |
+
{"q_no": 22, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 189 |
+
{"q_no": 20, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 190 |
+
{"q_no": 28, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 191 |
+
{"q_no": 18, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 192 |
+
{"q_no": 34, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 193 |
+
{"q_no": 33, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 194 |
+
{"q_no": 40, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 195 |
+
{"q_no": 24, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 196 |
+
{"q_no": 35, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 197 |
+
{"q_no": 41, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 198 |
+
{"q_no": 47, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 199 |
+
{"q_no": 56, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 200 |
+
{"q_no": 52, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 201 |
+
{"q_no": 57, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 202 |
+
{"q_no": 63, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 203 |
+
{"q_no": 61, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 204 |
+
{"q_no": 67, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 205 |
+
{"q_no": 69, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 206 |
+
{"q_no": 66, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 207 |
+
{"q_no": 81, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 208 |
+
{"q_no": 76, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 209 |
+
{"q_no": 73, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 210 |
+
{"q_no": 79, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 211 |
+
{"q_no": 83, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 212 |
+
{"q_no": 1, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 213 |
+
{"q_no": 6, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 214 |
+
{"q_no": 8, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 215 |
+
{"q_no": 7, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 216 |
+
{"q_no": 10, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 217 |
+
{"q_no": 9, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 218 |
+
{"q_no": 12, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 219 |
+
{"q_no": 13, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 220 |
+
{"q_no": 17, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 221 |
+
{"q_no": 20, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 222 |
+
{"q_no": 19, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 223 |
+
{"q_no": 14, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 224 |
+
{"q_no": 22, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 225 |
+
{"q_no": 25, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 226 |
+
{"q_no": 21, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 227 |
+
{"q_no": 24, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 228 |
+
{"q_no": 2, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 229 |
+
{"q_no": 37, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 230 |
+
{"q_no": 30, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 231 |
+
{"q_no": 1, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 232 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 233 |
+
{"q_no": 4, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 234 |
+
{"q_no": 19, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 235 |
+
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 236 |
+
{"q_no": 23, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 237 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 238 |
+
{"q_no": 25, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 239 |
+
{"q_no": 40, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 240 |
+
{"q_no": 35, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 241 |
+
{"q_no": 47, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 242 |
+
{"q_no": 57, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 243 |
+
{"q_no": 59, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 244 |
+
{"q_no": 44, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 245 |
+
{"q_no": 66, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 246 |
+
{"q_no": 65, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 247 |
+
{"q_no": 68, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 248 |
+
{"q_no": 76, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 249 |
+
{"q_no": 67, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 250 |
+
{"q_no": 72, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 251 |
+
{"q_no": 78, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 252 |
+
{"q_no": 83, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 253 |
+
{"q_no": 99, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 254 |
+
{"q_no": 77, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 255 |
+
{"q_no": 80, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 256 |
+
{"q_no": 101, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 257 |
+
{"q_no": 97, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 258 |
+
{"q_no": 100, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 259 |
+
{"q_no": 105, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 260 |
+
{"q_no": 106, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 261 |
+
{"q_no": 107, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 262 |
+
{"q_no": 104, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 263 |
+
{"q_no": 109, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 264 |
+
{"q_no": 108, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 265 |
+
{"q_no": 113, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 266 |
+
{"q_no": 124, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 267 |
+
{"q_no": 118, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 268 |
+
{"q_no": 127, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 269 |
+
{"q_no": 114, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 270 |
+
{"q_no": 128, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 271 |
+
{"q_no": 129, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 272 |
+
{"q_no": 131, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 273 |
+
{"q_no": 132, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 274 |
+
{"q_no": 136, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 275 |
+
{"q_no": 140, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 276 |
+
{"q_no": 139, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 277 |
+
{"q_no": 142, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 278 |
+
{"q_no": 130, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 279 |
+
{"q_no": 150, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 280 |
+
{"q_no": 141, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 281 |
+
{"q_no": 144, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 282 |
+
{"q_no": 156, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 283 |
+
{"q_no": 155, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 284 |
+
{"q_no": 158, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 285 |
+
{"q_no": 162, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 286 |
+
{"q_no": 164, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 287 |
+
{"q_no": 167, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 288 |
+
{"q_no": 3, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 289 |
+
{"q_no": 170, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 290 |
+
{"q_no": 2, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 291 |
+
{"q_no": 172, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 292 |
+
{"q_no": 6, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 293 |
+
{"q_no": 9, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 294 |
+
{"q_no": 4, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 295 |
+
{"q_no": 13, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 296 |
+
{"q_no": 7, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 297 |
+
{"q_no": 19, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 298 |
+
{"q_no": 10, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 299 |
+
{"q_no": 22, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 300 |
+
{"q_no": 17, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 301 |
+
{"q_no": 21, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 302 |
+
{"q_no": 30, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 303 |
+
{"q_no": 33, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 304 |
+
{"q_no": 11, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 305 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 306 |
+
{"q_no": 31, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 307 |
+
{"q_no": 16, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 308 |
+
{"q_no": 34, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 309 |
+
{"q_no": 20, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 310 |
+
{"q_no": 18, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 311 |
+
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 312 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 313 |
+
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 314 |
+
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 315 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 316 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 317 |
+
{"q_no": 7, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 318 |
+
{"q_no": 40, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 319 |
+
{"q_no": 37, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 320 |
+
{"q_no": 28, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 321 |
+
{"q_no": 25, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 322 |
+
{"q_no": 56, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 323 |
+
{"q_no": 60, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 324 |
+
{"q_no": 65, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 325 |
+
{"q_no": 68, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 326 |
+
{"q_no": 64, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 327 |
+
{"q_no": 69, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 328 |
+
{"q_no": 92, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 329 |
+
{"q_no": 86, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 330 |
+
{"q_no": 77, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 331 |
+
{"q_no": 93, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 332 |
+
{"q_no": 95, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 333 |
+
{"q_no": 113, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 334 |
+
{"q_no": 101, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 335 |
+
{"q_no": 94, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 336 |
+
{"q_no": 131, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 337 |
+
{"q_no": 115, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 338 |
+
{"q_no": 139, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 339 |
+
{"q_no": 137, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 340 |
+
{"q_no": 146, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 341 |
+
{"q_no": 140, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 342 |
+
{"q_no": 154, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 343 |
+
{"q_no": 2, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 344 |
+
{"q_no": 150, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 345 |
+
{"q_no": 159, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 346 |
+
{"q_no": 3, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 347 |
+
{"q_no": 12, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "4"}
|
| 348 |
+
{"q_no": 4, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 349 |
+
{"q_no": 11, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "1"}
|
| 350 |
+
{"q_no": 27, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "4"}
|
| 351 |
+
{"q_no": 30, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 352 |
+
{"q_no": 15, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "1"}
|
| 353 |
+
{"q_no": 38, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "1"}
|
| 354 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 355 |
+
{"q_no": 34, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 356 |
+
{"q_no": 7, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 357 |
+
{"q_no": 8, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 358 |
+
{"q_no": 9, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 359 |
+
{"q_no": 16, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 360 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 361 |
+
{"q_no": 20, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 362 |
+
{"q_no": 24, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 363 |
+
{"q_no": 19, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 364 |
+
{"q_no": 26, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 365 |
+
{"q_no": 34, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 366 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 367 |
+
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 368 |
+
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 369 |
+
{"q_no": 43, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 370 |
+
{"q_no": 42, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 371 |
+
{"q_no": 39, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 372 |
+
{"q_no": 49, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 373 |
+
{"q_no": 54, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 374 |
+
{"q_no": 55, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 375 |
+
{"q_no": 63, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 376 |
+
{"q_no": 61, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 377 |
+
{"q_no": 66, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 378 |
+
{"q_no": 67, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 379 |
+
{"q_no": 72, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 380 |
+
{"q_no": 78, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 381 |
+
{"q_no": 76, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 382 |
+
{"q_no": 79, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 383 |
+
{"q_no": 80, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 384 |
+
{"q_no": 83, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 385 |
+
{"q_no": 81, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 386 |
+
{"q_no": 84, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 387 |
+
{"q_no": 92, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 388 |
+
{"q_no": 93, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 389 |
+
{"q_no": 101, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 390 |
+
{"q_no": 94, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 391 |
+
{"q_no": 98, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 392 |
+
{"q_no": 99, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 393 |
+
{"q_no": 105, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 394 |
+
{"q_no": 104, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 395 |
+
{"q_no": 102, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 396 |
+
{"q_no": 106, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 397 |
+
{"q_no": 111, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 398 |
+
{"q_no": 109, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 399 |
+
{"q_no": 117, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 400 |
+
{"q_no": 120, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 401 |
+
{"q_no": 116, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 402 |
+
{"q_no": 126, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 403 |
+
{"q_no": 119, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 404 |
+
{"q_no": 139, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 405 |
+
{"q_no": 131, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 406 |
+
{"q_no": 121, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 407 |
+
{"q_no": 142, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 408 |
+
{"q_no": 145, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 409 |
+
{"q_no": 140, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 410 |
+
{"q_no": 148, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 411 |
+
{"q_no": 149, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 412 |
+
{"q_no": 152, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 413 |
+
{"q_no": 6, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 414 |
+
{"q_no": 151, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 415 |
+
{"q_no": 9, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 416 |
+
{"q_no": 10, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 417 |
+
{"q_no": 11, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 418 |
+
{"q_no": 12, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 419 |
+
{"q_no": 13, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 420 |
+
{"q_no": 36, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 421 |
+
{"q_no": 30, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 422 |
+
{"q_no": 21, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 423 |
+
{"q_no": 2, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 424 |
+
{"q_no": 5, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 425 |
+
{"q_no": 1, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 426 |
+
{"q_no": 3, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 427 |
+
{"q_no": 7, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 428 |
+
{"q_no": 9, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 429 |
+
{"q_no": 14, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 430 |
+
{"q_no": 8, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 431 |
+
{"q_no": 6, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 432 |
+
{"q_no": 17, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 433 |
+
{"q_no": 11, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 434 |
+
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 435 |
+
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 436 |
+
{"q_no": 21, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 437 |
+
{"q_no": 18, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 438 |
+
{"q_no": 23, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 439 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 440 |
+
{"q_no": 22, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 441 |
+
{"q_no": 20, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 442 |
+
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 443 |
+
{"q_no": 33, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 444 |
+
{"q_no": 24, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 445 |
+
{"q_no": 29, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 446 |
+
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 447 |
+
{"q_no": 31, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 448 |
+
{"q_no": 36, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 449 |
+
{"q_no": 6, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 450 |
+
{"q_no": 3, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 451 |
+
{"q_no": 10, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 452 |
+
{"q_no": 18, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 453 |
+
{"q_no": 14, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 454 |
+
{"q_no": 15, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 455 |
+
{"q_no": 23, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 456 |
+
{"q_no": 24, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 457 |
+
{"q_no": 34, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 458 |
+
{"q_no": 28, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 459 |
+
{"q_no": 26, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 460 |
+
{"q_no": 32, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 461 |
+
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 462 |
+
{"q_no": 5, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 463 |
+
{"q_no": 38, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 464 |
+
{"q_no": 22, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 465 |
+
{"q_no": 41, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 466 |
+
{"q_no": 19, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 467 |
+
{"q_no": 29, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 468 |
+
{"q_no": 32, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 469 |
+
{"q_no": 36, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 470 |
+
{"q_no": 40, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 471 |
+
{"q_no": 28, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 472 |
+
{"q_no": 39, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 473 |
+
{"q_no": 49, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 474 |
+
{"q_no": 48, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 475 |
+
{"q_no": 58, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 476 |
+
{"q_no": 59, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 477 |
+
{"q_no": 61, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 478 |
+
{"q_no": 64, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 479 |
+
{"q_no": 60, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 480 |
+
{"q_no": 4, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 481 |
+
{"q_no": 63, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 482 |
+
{"q_no": 10, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 483 |
+
{"q_no": 3, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 484 |
+
{"q_no": 13, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 485 |
+
{"q_no": 8, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 486 |
+
{"q_no": 11, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 487 |
+
{"q_no": 22, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 488 |
+
{"q_no": 24, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 489 |
+
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 490 |
+
{"q_no": 20, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 491 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 492 |
+
{"q_no": 33, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 493 |
+
{"q_no": 37, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 494 |
+
{"q_no": 39, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 495 |
+
{"q_no": 34, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 496 |
+
{"q_no": 38, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 497 |
+
{"q_no": 45, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 498 |
+
{"q_no": 41, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 499 |
+
{"q_no": 52, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 500 |
+
{"q_no": 55, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 501 |
+
{"q_no": 47, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 502 |
+
{"q_no": 56, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 503 |
+
{"q_no": 60, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 504 |
+
{"q_no": 54, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 505 |
+
{"q_no": 62, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 506 |
+
{"q_no": 63, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 507 |
+
{"q_no": 69, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 508 |
+
{"q_no": 61, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 509 |
+
{"q_no": 71, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 510 |
+
{"q_no": 70, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 511 |
+
{"q_no": 75, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 512 |
+
{"q_no": 73, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 513 |
+
{"q_no": 85, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 514 |
+
{"q_no": 82, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 515 |
+
{"q_no": 86, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 516 |
+
{"q_no": 93, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 517 |
+
{"q_no": 88, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 518 |
+
{"q_no": 99, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 519 |
+
{"q_no": 80, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 520 |
+
{"q_no": 103, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 521 |
+
{"q_no": 110, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 522 |
+
{"q_no": 98, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 523 |
+
{"q_no": 100, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 524 |
+
{"q_no": 114, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 525 |
+
{"q_no": 109, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 526 |
+
{"q_no": 116, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 527 |
+
{"q_no": 113, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 528 |
+
{"q_no": 1, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 529 |
+
{"q_no": 115, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 530 |
+
{"q_no": 120, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 531 |
+
{"q_no": 5, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 532 |
+
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 533 |
+
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 534 |
+
{"q_no": 4, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 535 |
+
{"q_no": 14, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 536 |
+
{"q_no": 17, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 537 |
+
{"q_no": 16, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 538 |
+
{"q_no": 13, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 539 |
+
{"q_no": 18, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 540 |
+
{"q_no": 19, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 541 |
+
{"q_no": 20, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 542 |
+
{"q_no": 22, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 543 |
+
{"q_no": 21, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 544 |
+
{"q_no": 23, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 545 |
+
{"q_no": 31, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 546 |
+
{"q_no": 24, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 547 |
+
{"q_no": 36, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 548 |
+
{"q_no": 29, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 549 |
+
{"q_no": 46, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 550 |
+
{"q_no": 32, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 551 |
+
{"q_no": 53, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 552 |
+
{"q_no": 43, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 553 |
+
{"q_no": 51, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 554 |
+
{"q_no": 55, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 555 |
+
{"q_no": 60, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 556 |
+
{"q_no": 64, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 557 |
+
{"q_no": 62, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 558 |
+
{"q_no": 61, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 559 |
+
{"q_no": 63, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 560 |
+
{"q_no": 69, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 561 |
+
{"q_no": 67, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 562 |
+
{"q_no": 70, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 563 |
+
{"q_no": 75, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 564 |
+
{"q_no": 71, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 565 |
+
{"q_no": 77, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 566 |
+
{"q_no": 72, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 567 |
+
{"q_no": 86, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 568 |
+
{"q_no": 85, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 569 |
+
{"q_no": 82, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 570 |
+
{"q_no": 83, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 571 |
+
{"q_no": 88, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 572 |
+
{"q_no": 93, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 573 |
+
{"q_no": 91, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 574 |
+
{"q_no": 87, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 575 |
+
{"q_no": 98, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 576 |
+
{"q_no": 94, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 577 |
+
{"q_no": 95, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 578 |
+
{"q_no": 100, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 579 |
+
{"q_no": 97, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 580 |
+
{"q_no": 99, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 581 |
+
{"q_no": 105, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 582 |
+
{"q_no": 101, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 583 |
+
{"q_no": 113, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 584 |
+
{"q_no": 108, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 585 |
+
{"q_no": 111, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 586 |
+
{"q_no": 119, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 587 |
+
{"q_no": 118, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 588 |
+
{"q_no": 123, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 589 |
+
{"q_no": 124, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 590 |
+
{"q_no": 121, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 591 |
+
{"q_no": 126, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 592 |
+
{"q_no": 132, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 593 |
+
{"q_no": 134, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 594 |
+
{"q_no": 131, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 595 |
+
{"q_no": 138, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 596 |
+
{"q_no": 136, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 597 |
+
{"q_no": 133, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 598 |
+
{"q_no": 140, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 599 |
+
{"q_no": 145, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 600 |
+
{"q_no": 151, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 601 |
+
{"q_no": 156, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 602 |
+
{"q_no": 147, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 603 |
+
{"q_no": 158, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 604 |
+
{"q_no": 152, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 605 |
+
{"q_no": 8, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "1"}
|
| 606 |
+
{"q_no": 11, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "2"}
|
| 607 |
+
{"q_no": 9, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "1"}
|
| 608 |
+
{"q_no": 17, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "3"}
|
| 609 |
+
{"q_no": 1, "subject": "Art", "category": "humanities", "level": "hard", "answer": "1"}
|
| 610 |
+
{"q_no": 8, "subject": "Art", "category": "humanities", "level": "hard", "answer": "1"}
|
| 611 |
+
{"q_no": 34, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "4"}
|
| 612 |
+
{"q_no": 3, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 613 |
+
{"q_no": 11, "subject": "Art", "category": "humanities", "level": "hard", "answer": "2"}
|
| 614 |
+
{"q_no": 10, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 615 |
+
{"q_no": 15, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 616 |
+
{"q_no": 21, "subject": "Biology", "category": "stem", "level": "hard", "answer": "2"}
|
| 617 |
+
{"q_no": 5, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 618 |
+
{"q_no": 23, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 619 |
+
{"q_no": 24, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 620 |
+
{"q_no": 22, "subject": "Biology", "category": "stem", "level": "hard", "answer": "2"}
|
| 621 |
+
{"q_no": 28, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 622 |
+
{"q_no": 34, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 623 |
+
{"q_no": 10, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 624 |
+
{"q_no": 5, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 625 |
+
{"q_no": 23, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "1"}
|
| 626 |
+
{"q_no": 27, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "3"}
|
| 627 |
+
{"q_no": 26, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 628 |
+
{"q_no": 42, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 629 |
+
{"q_no": 3, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 630 |
+
{"q_no": 30, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "1"}
|
| 631 |
+
{"q_no": 36, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 632 |
+
{"q_no": 10, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 633 |
+
{"q_no": 11, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 634 |
+
{"q_no": 17, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 635 |
+
{"q_no": 18, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 636 |
+
{"q_no": 22, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 637 |
+
{"q_no": 23, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 638 |
+
{"q_no": 24, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 639 |
+
{"q_no": 21, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 640 |
+
{"q_no": 29, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 641 |
+
{"q_no": 32, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 642 |
+
{"q_no": 31, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 643 |
+
{"q_no": 37, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 644 |
+
{"q_no": 25, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 645 |
+
{"q_no": 39, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 646 |
+
{"q_no": 6, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 647 |
+
{"q_no": 35, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 648 |
+
{"q_no": 38, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 649 |
+
{"q_no": 40, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 650 |
+
{"q_no": 28, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 651 |
+
{"q_no": 4, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "3"}
|
| 652 |
+
{"q_no": 15, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 653 |
+
{"q_no": 3, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "1"}
|
| 654 |
+
{"q_no": 7, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "4"}
|
| 655 |
+
{"q_no": 11, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "1"}
|
| 656 |
+
{"q_no": 5, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "3"}
|
| 657 |
+
{"q_no": 10, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 658 |
+
{"q_no": 9, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "4"}
|
| 659 |
+
{"q_no": 1, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 660 |
+
{"q_no": 31, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 661 |
+
{"q_no": 15, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 662 |
+
{"q_no": 11, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 663 |
+
{"q_no": 19, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 664 |
+
{"q_no": 38, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 665 |
+
{"q_no": 46, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 666 |
+
{"q_no": 32, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 667 |
+
{"q_no": 42, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 668 |
+
{"q_no": 4, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "4"}
|
| 669 |
+
{"q_no": 8, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 670 |
+
{"q_no": 3, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 671 |
+
{"q_no": 10, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "1"}
|
| 672 |
+
{"q_no": 13, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "1"}
|
| 673 |
+
{"q_no": 17, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 674 |
+
{"q_no": 22, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 675 |
+
{"q_no": 20, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "1"}
|
| 676 |
+
{"q_no": 4, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 677 |
+
{"q_no": 9, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 678 |
+
{"q_no": 13, "subject": "Economics", "category": "social science", "level": "hard", "answer": "3"}
|
| 679 |
+
{"q_no": 18, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 680 |
+
{"q_no": 16, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 681 |
+
{"q_no": 17, "subject": "Economics", "category": "social science", "level": "hard", "answer": "3"}
|
| 682 |
+
{"q_no": 15, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 683 |
+
{"q_no": 7, "subject": "Geography", "category": "social science", "level": "hard", "answer": "1"}
|
| 684 |
+
{"q_no": 31, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 685 |
+
{"q_no": 12, "subject": "Geography", "category": "social science", "level": "hard", "answer": "4"}
|
| 686 |
+
{"q_no": 10, "subject": "Geography", "category": "social science", "level": "hard", "answer": "1"}
|
| 687 |
+
{"q_no": 21, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 688 |
+
{"q_no": 22, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 689 |
+
{"q_no": 30, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 690 |
+
{"q_no": 14, "subject": "Geography", "category": "social science", "level": "hard", "answer": "4"}
|
| 691 |
+
{"q_no": 34, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 692 |
+
{"q_no": 21, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 693 |
+
{"q_no": 2, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 694 |
+
{"q_no": 1, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "4"}
|
| 695 |
+
{"q_no": 9, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "2"}
|
| 696 |
+
{"q_no": 24, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 697 |
+
{"q_no": 2, "subject": "Physics", "category": "stem", "level": "hard", "answer": "1"}
|
| 698 |
+
{"q_no": 15, "subject": "Physics", "category": "stem", "level": "hard", "answer": "4"}
|
| 699 |
+
{"q_no": 19, "subject": "Physics", "category": "stem", "level": "hard", "answer": "3"}
|
| 700 |
+
{"q_no": 5, "subject": "Physics", "category": "stem", "level": "hard", "answer": "2"}
|
| 701 |
+
{"q_no": 16, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "4"}
|
| 702 |
+
{"q_no": 27, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "1"}
|
| 703 |
+
{"q_no": 20, "subject": "Physics", "category": "stem", "level": "hard", "answer": "3"}
|
| 704 |
+
{"q_no": 26, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "2"}
|
| 705 |
+
{"q_no": 4, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 706 |
+
{"q_no": 3, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 707 |
+
{"q_no": 5, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 708 |
+
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 709 |
+
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "3"}
|
| 710 |
+
{"q_no": 11, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 711 |
+
{"q_no": 14, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 712 |
+
{"q_no": 19, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "1"}
|
training/passes/pass5_think_4096_rot3.jsonl
ADDED
|
@@ -0,0 +1,712 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"q_no": 6, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 2 |
+
{"q_no": 19, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 3 |
+
{"q_no": 14, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 4 |
+
{"q_no": 10, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 5 |
+
{"q_no": 21, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 6 |
+
{"q_no": 22, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 7 |
+
{"q_no": 24, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 8 |
+
{"q_no": 23, "subject": "Art", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 9 |
+
{"q_no": 3, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 10 |
+
{"q_no": 1, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 11 |
+
{"q_no": 5, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 12 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 13 |
+
{"q_no": 8, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 14 |
+
{"q_no": 2, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 15 |
+
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 16 |
+
{"q_no": 14, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 17 |
+
{"q_no": 22, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 18 |
+
{"q_no": 21, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 19 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 20 |
+
{"q_no": 4, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 21 |
+
{"q_no": 10, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 22 |
+
{"q_no": 8, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 23 |
+
{"q_no": 12, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 24 |
+
{"q_no": 7, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 25 |
+
{"q_no": 24, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 26 |
+
{"q_no": 19, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 27 |
+
{"q_no": 16, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 28 |
+
{"q_no": 14, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 29 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 30 |
+
{"q_no": 35, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 31 |
+
{"q_no": 34, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 32 |
+
{"q_no": 26, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 33 |
+
{"q_no": 39, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 34 |
+
{"q_no": 41, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 35 |
+
{"q_no": 37, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 36 |
+
{"q_no": 40, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 37 |
+
{"q_no": 49, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 38 |
+
{"q_no": 45, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 39 |
+
{"q_no": 3, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 40 |
+
{"q_no": 9, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 41 |
+
{"q_no": 43, "subject": "Catholicism", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 42 |
+
{"q_no": 4, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 43 |
+
{"q_no": 17, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 44 |
+
{"q_no": 15, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 45 |
+
{"q_no": 19, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 46 |
+
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 47 |
+
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 48 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 49 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 50 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 51 |
+
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 52 |
+
{"q_no": 44, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 53 |
+
{"q_no": 32, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 54 |
+
{"q_no": 48, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 55 |
+
{"q_no": 45, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 56 |
+
{"q_no": 52, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 57 |
+
{"q_no": 35, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 58 |
+
{"q_no": 56, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 59 |
+
{"q_no": 58, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 60 |
+
{"q_no": 50, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 61 |
+
{"q_no": 53, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 62 |
+
{"q_no": 10, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 63 |
+
{"q_no": 57, "subject": "Christianity", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 64 |
+
{"q_no": 15, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 65 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 66 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 67 |
+
{"q_no": 6, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 68 |
+
{"q_no": 15, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 69 |
+
{"q_no": 14, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 70 |
+
{"q_no": 19, "subject": "Civics", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 71 |
+
{"q_no": 24, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 72 |
+
{"q_no": 17, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 73 |
+
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 74 |
+
{"q_no": 39, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 75 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 76 |
+
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 77 |
+
{"q_no": 3, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 78 |
+
{"q_no": 8, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 79 |
+
{"q_no": 2, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 80 |
+
{"q_no": 10, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 81 |
+
{"q_no": 4, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 82 |
+
{"q_no": 15, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 83 |
+
{"q_no": 9, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 84 |
+
{"q_no": 17, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 85 |
+
{"q_no": 12, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "1"}
|
| 86 |
+
{"q_no": 16, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 87 |
+
{"q_no": 23, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 88 |
+
{"q_no": 24, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 89 |
+
{"q_no": 28, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 90 |
+
{"q_no": 30, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 91 |
+
{"q_no": 18, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 92 |
+
{"q_no": 39, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 93 |
+
{"q_no": 32, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 94 |
+
{"q_no": 45, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 95 |
+
{"q_no": 29, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 96 |
+
{"q_no": 52, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 97 |
+
{"q_no": 41, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 98 |
+
{"q_no": 55, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "3"}
|
| 99 |
+
{"q_no": 51, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "4"}
|
| 100 |
+
{"q_no": 2, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 101 |
+
{"q_no": 53, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 102 |
+
{"q_no": 56, "subject": "Drama and Theatre", "category": "other", "level": "easy", "answer": "2"}
|
| 103 |
+
{"q_no": 8, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 104 |
+
{"q_no": 7, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 105 |
+
{"q_no": 11, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 106 |
+
{"q_no": 14, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 107 |
+
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 108 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 109 |
+
{"q_no": 10, "subject": "Eastern_Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 110 |
+
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 111 |
+
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 112 |
+
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 113 |
+
{"q_no": 28, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 114 |
+
{"q_no": 40, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 115 |
+
{"q_no": 36, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 116 |
+
{"q_no": 1, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "1"}
|
| 117 |
+
{"q_no": 11, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 118 |
+
{"q_no": 32, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 119 |
+
{"q_no": 19, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 120 |
+
{"q_no": 42, "subject": "Eastern Music", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 121 |
+
{"q_no": 33, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 122 |
+
{"q_no": 18, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 123 |
+
{"q_no": 31, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 124 |
+
{"q_no": 6, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 125 |
+
{"q_no": 35, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 126 |
+
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 127 |
+
{"q_no": 42, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 128 |
+
{"q_no": 45, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 129 |
+
{"q_no": 40, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "4"}
|
| 130 |
+
{"q_no": 46, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 131 |
+
{"q_no": 48, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 132 |
+
{"q_no": 49, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "2"}
|
| 133 |
+
{"q_no": 10, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 134 |
+
{"q_no": 50, "subject": "Geography", "category": "Social_science", "level": "easy", "answer": "3"}
|
| 135 |
+
{"q_no": 15, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 136 |
+
{"q_no": 34, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 137 |
+
{"q_no": 13, "subject": "Health & Physical Education", "category": "other", "level": "easy", "answer": "4"}
|
| 138 |
+
{"q_no": 36, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "2"}
|
| 139 |
+
{"q_no": 35, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "3"}
|
| 140 |
+
{"q_no": 29, "subject": "Health and Physical Education", "category": "other", "level": "easy", "answer": "1"}
|
| 141 |
+
{"q_no": 7, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 142 |
+
{"q_no": 12, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 143 |
+
{"q_no": 11, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 144 |
+
{"q_no": 1, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 145 |
+
{"q_no": 16, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 146 |
+
{"q_no": 24, "subject": "History", "category": "Humanities", "level": "easy", "answer": "1"}
|
| 147 |
+
{"q_no": 19, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 148 |
+
{"q_no": 25, "subject": "History", "category": "Humanities", "level": "easy", "answer": "3"}
|
| 149 |
+
{"q_no": 13, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 150 |
+
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 151 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 152 |
+
{"q_no": 28, "subject": "History", "category": "Humanities", "level": "easy", "answer": "4"}
|
| 153 |
+
{"q_no": 35, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 154 |
+
{"q_no": 37, "subject": "History", "category": "Humanities", "level": "easy", "answer": "2"}
|
| 155 |
+
{"q_no": 2, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 156 |
+
{"q_no": 3, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 157 |
+
{"q_no": 5, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 158 |
+
{"q_no": 4, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 159 |
+
{"q_no": 9, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 160 |
+
{"q_no": 12, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 161 |
+
{"q_no": 11, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 162 |
+
{"q_no": 21, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 163 |
+
{"q_no": 35, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 164 |
+
{"q_no": 39, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 165 |
+
{"q_no": 25, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 166 |
+
{"q_no": 33, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 167 |
+
{"q_no": 40, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 168 |
+
{"q_no": 52, "subject": "Science", "category": "stem", "level": "easy", "answer": "1"}
|
| 169 |
+
{"q_no": 57, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 170 |
+
{"q_no": 56, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 171 |
+
{"q_no": 41, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 172 |
+
{"q_no": 71, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 173 |
+
{"q_no": 75, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 174 |
+
{"q_no": 79, "subject": "Science", "category": "stem", "level": "easy", "answer": "4"}
|
| 175 |
+
{"q_no": 63, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 176 |
+
{"q_no": 86, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 177 |
+
{"q_no": 90, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 178 |
+
{"q_no": 84, "subject": "Science", "category": "stem", "level": "easy", "answer": "3"}
|
| 179 |
+
{"q_no": 87, "subject": "Science", "category": "stem", "level": "easy", "answer": "2"}
|
| 180 |
+
{"q_no": 8, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 181 |
+
{"q_no": 2, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 182 |
+
{"q_no": 1, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 183 |
+
{"q_no": 3, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 184 |
+
{"q_no": 10, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 185 |
+
{"q_no": 12, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 186 |
+
{"q_no": 15, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 187 |
+
{"q_no": 13, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 188 |
+
{"q_no": 20, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 189 |
+
{"q_no": 18, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 190 |
+
{"q_no": 19, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 191 |
+
{"q_no": 22, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 192 |
+
{"q_no": 33, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 193 |
+
{"q_no": 24, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 194 |
+
{"q_no": 28, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 195 |
+
{"q_no": 34, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 196 |
+
{"q_no": 41, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 197 |
+
{"q_no": 35, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 198 |
+
{"q_no": 40, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 199 |
+
{"q_no": 57, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 200 |
+
{"q_no": 56, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 201 |
+
{"q_no": 52, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 202 |
+
{"q_no": 61, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 203 |
+
{"q_no": 47, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 204 |
+
{"q_no": 63, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "2"}
|
| 205 |
+
{"q_no": 66, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 206 |
+
{"q_no": 60, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 207 |
+
{"q_no": 67, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 208 |
+
{"q_no": 69, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 209 |
+
{"q_no": 73, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 210 |
+
{"q_no": 83, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 211 |
+
{"q_no": 79, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "4"}
|
| 212 |
+
{"q_no": 81, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "1"}
|
| 213 |
+
{"q_no": 76, "subject": "Sinhala Language and Literature", "category": "other", "level": "easy", "answer": "3"}
|
| 214 |
+
{"q_no": 6, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 215 |
+
{"q_no": 8, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 216 |
+
{"q_no": 1, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 217 |
+
{"q_no": 7, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 218 |
+
{"q_no": 10, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 219 |
+
{"q_no": 9, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 220 |
+
{"q_no": 12, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 221 |
+
{"q_no": 13, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 222 |
+
{"q_no": 17, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 223 |
+
{"q_no": 20, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 224 |
+
{"q_no": 19, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 225 |
+
{"q_no": 14, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 226 |
+
{"q_no": 22, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 227 |
+
{"q_no": 25, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 228 |
+
{"q_no": 24, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 229 |
+
{"q_no": 21, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 230 |
+
{"q_no": 1, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 231 |
+
{"q_no": 2, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 232 |
+
{"q_no": 37, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 233 |
+
{"q_no": 30, "subject": "Agriculture and Food Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 234 |
+
{"q_no": 7, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 235 |
+
{"q_no": 4, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 236 |
+
{"q_no": 19, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 237 |
+
{"q_no": 23, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 238 |
+
{"q_no": 10, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 239 |
+
{"q_no": 25, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 240 |
+
{"q_no": 26, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 241 |
+
{"q_no": 35, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 242 |
+
{"q_no": 40, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 243 |
+
{"q_no": 44, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 244 |
+
{"q_no": 57, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 245 |
+
{"q_no": 47, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 246 |
+
{"q_no": 59, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 247 |
+
{"q_no": 66, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 248 |
+
{"q_no": 67, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 249 |
+
{"q_no": 68, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 250 |
+
{"q_no": 65, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 251 |
+
{"q_no": 72, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 252 |
+
{"q_no": 76, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 253 |
+
{"q_no": 77, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 254 |
+
{"q_no": 78, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 255 |
+
{"q_no": 97, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 256 |
+
{"q_no": 83, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 257 |
+
{"q_no": 99, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 258 |
+
{"q_no": 80, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 259 |
+
{"q_no": 100, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 260 |
+
{"q_no": 101, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 261 |
+
{"q_no": 106, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 262 |
+
{"q_no": 105, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 263 |
+
{"q_no": 104, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 264 |
+
{"q_no": 107, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 265 |
+
{"q_no": 108, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 266 |
+
{"q_no": 109, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 267 |
+
{"q_no": 113, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 268 |
+
{"q_no": 124, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 269 |
+
{"q_no": 118, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 270 |
+
{"q_no": 114, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 271 |
+
{"q_no": 128, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 272 |
+
{"q_no": 127, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 273 |
+
{"q_no": 129, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 274 |
+
{"q_no": 131, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 275 |
+
{"q_no": 132, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 276 |
+
{"q_no": 140, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 277 |
+
{"q_no": 130, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 278 |
+
{"q_no": 136, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 279 |
+
{"q_no": 139, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 280 |
+
{"q_no": 142, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 281 |
+
{"q_no": 150, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 282 |
+
{"q_no": 141, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 283 |
+
{"q_no": 144, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 284 |
+
{"q_no": 156, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 285 |
+
{"q_no": 155, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 286 |
+
{"q_no": 158, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 287 |
+
{"q_no": 162, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 288 |
+
{"q_no": 164, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 289 |
+
{"q_no": 172, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 290 |
+
{"q_no": 167, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 291 |
+
{"q_no": 170, "subject": "Buddhism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 292 |
+
{"q_no": 2, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 293 |
+
{"q_no": 3, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 294 |
+
{"q_no": 6, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 295 |
+
{"q_no": 9, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 296 |
+
{"q_no": 13, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 297 |
+
{"q_no": 4, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 298 |
+
{"q_no": 19, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 299 |
+
{"q_no": 7, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 300 |
+
{"q_no": 22, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 301 |
+
{"q_no": 10, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 302 |
+
{"q_no": 21, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 303 |
+
{"q_no": 30, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 304 |
+
{"q_no": 17, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 305 |
+
{"q_no": 33, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 306 |
+
{"q_no": 28, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 307 |
+
{"q_no": 11, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 308 |
+
{"q_no": 31, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 309 |
+
{"q_no": 16, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 310 |
+
{"q_no": 34, "subject": "Catholicism", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 311 |
+
{"q_no": 20, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 312 |
+
{"q_no": 12, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 313 |
+
{"q_no": 18, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 314 |
+
{"q_no": 21, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 315 |
+
{"q_no": 24, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 316 |
+
{"q_no": 27, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 317 |
+
{"q_no": 26, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 318 |
+
{"q_no": 28, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 319 |
+
{"q_no": 25, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 320 |
+
{"q_no": 7, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 321 |
+
{"q_no": 29, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 322 |
+
{"q_no": 37, "subject": "Christianity", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 323 |
+
{"q_no": 40, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 324 |
+
{"q_no": 56, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 325 |
+
{"q_no": 64, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 326 |
+
{"q_no": 65, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 327 |
+
{"q_no": 60, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 328 |
+
{"q_no": 68, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 329 |
+
{"q_no": 69, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 330 |
+
{"q_no": 86, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 331 |
+
{"q_no": 77, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 332 |
+
{"q_no": 92, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 333 |
+
{"q_no": 93, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 334 |
+
{"q_no": 95, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 335 |
+
{"q_no": 101, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 336 |
+
{"q_no": 113, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 337 |
+
{"q_no": 131, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 338 |
+
{"q_no": 115, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 339 |
+
{"q_no": 94, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 340 |
+
{"q_no": 139, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 341 |
+
{"q_no": 140, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 342 |
+
{"q_no": 146, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 343 |
+
{"q_no": 137, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 344 |
+
{"q_no": 154, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 345 |
+
{"q_no": 150, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 346 |
+
{"q_no": 2, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 347 |
+
{"q_no": 159, "subject": "Civics", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 348 |
+
{"q_no": 4, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 349 |
+
{"q_no": 3, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 350 |
+
{"q_no": 12, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "4"}
|
| 351 |
+
{"q_no": 11, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 352 |
+
{"q_no": 15, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "1"}
|
| 353 |
+
{"q_no": 27, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "3"}
|
| 354 |
+
{"q_no": 30, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "1"}
|
| 355 |
+
{"q_no": 34, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 356 |
+
{"q_no": 38, "subject": "Communication and Media Studies", "category": "other", "level": "medium", "answer": "2"}
|
| 357 |
+
{"q_no": 2, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 358 |
+
{"q_no": 9, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 359 |
+
{"q_no": 8, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 360 |
+
{"q_no": 10, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 361 |
+
{"q_no": 7, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 362 |
+
{"q_no": 24, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 363 |
+
{"q_no": 16, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 364 |
+
{"q_no": 20, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 365 |
+
{"q_no": 32, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 366 |
+
{"q_no": 26, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 367 |
+
{"q_no": 19, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 368 |
+
{"q_no": 34, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 369 |
+
{"q_no": 33, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 370 |
+
{"q_no": 35, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 371 |
+
{"q_no": 43, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 372 |
+
{"q_no": 42, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 373 |
+
{"q_no": 39, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 374 |
+
{"q_no": 49, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 375 |
+
{"q_no": 61, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 376 |
+
{"q_no": 55, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 377 |
+
{"q_no": 54, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 378 |
+
{"q_no": 63, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 379 |
+
{"q_no": 67, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 380 |
+
{"q_no": 76, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 381 |
+
{"q_no": 72, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 382 |
+
{"q_no": 78, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 383 |
+
{"q_no": 79, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 384 |
+
{"q_no": 66, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 385 |
+
{"q_no": 81, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 386 |
+
{"q_no": 84, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 387 |
+
{"q_no": 80, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 388 |
+
{"q_no": 93, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 389 |
+
{"q_no": 92, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 390 |
+
{"q_no": 83, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 391 |
+
{"q_no": 101, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 392 |
+
{"q_no": 98, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 393 |
+
{"q_no": 94, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 394 |
+
{"q_no": 104, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 395 |
+
{"q_no": 106, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 396 |
+
{"q_no": 99, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 397 |
+
{"q_no": 102, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 398 |
+
{"q_no": 111, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 399 |
+
{"q_no": 105, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 400 |
+
{"q_no": 117, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 401 |
+
{"q_no": 120, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 402 |
+
{"q_no": 109, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 403 |
+
{"q_no": 116, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 404 |
+
{"q_no": 126, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 405 |
+
{"q_no": 139, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 406 |
+
{"q_no": 119, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 407 |
+
{"q_no": 121, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 408 |
+
{"q_no": 131, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 409 |
+
{"q_no": 140, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 410 |
+
{"q_no": 142, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 411 |
+
{"q_no": 145, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 412 |
+
{"q_no": 149, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 413 |
+
{"q_no": 151, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 414 |
+
{"q_no": 152, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 415 |
+
{"q_no": 148, "subject": "Dancing", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 416 |
+
{"q_no": 9, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 417 |
+
{"q_no": 6, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 418 |
+
{"q_no": 11, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 419 |
+
{"q_no": 10, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 420 |
+
{"q_no": 13, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "3"}
|
| 421 |
+
{"q_no": 12, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 422 |
+
{"q_no": 36, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "2"}
|
| 423 |
+
{"q_no": 30, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "1"}
|
| 424 |
+
{"q_no": 21, "subject": "Design and Construction Technology", "category": "other", "level": "medium", "answer": "4"}
|
| 425 |
+
{"q_no": 5, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 426 |
+
{"q_no": 2, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 427 |
+
{"q_no": 3, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 428 |
+
{"q_no": 7, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 429 |
+
{"q_no": 1, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 430 |
+
{"q_no": 9, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 431 |
+
{"q_no": 14, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 432 |
+
{"q_no": 6, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 433 |
+
{"q_no": 8, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 434 |
+
{"q_no": 11, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 435 |
+
{"q_no": 17, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 436 |
+
{"q_no": 19, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 437 |
+
{"q_no": 18, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 438 |
+
{"q_no": 21, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 439 |
+
{"q_no": 15, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 440 |
+
{"q_no": 23, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 441 |
+
{"q_no": 20, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 442 |
+
{"q_no": 27, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 443 |
+
{"q_no": 30, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 444 |
+
{"q_no": 24, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 445 |
+
{"q_no": 22, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 446 |
+
{"q_no": 33, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 447 |
+
{"q_no": 29, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 448 |
+
{"q_no": 31, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 449 |
+
{"q_no": 35, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 450 |
+
{"q_no": 36, "subject": "Eastern Music", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 451 |
+
{"q_no": 6, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 452 |
+
{"q_no": 3, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 453 |
+
{"q_no": 10, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 454 |
+
{"q_no": 18, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 455 |
+
{"q_no": 24, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 456 |
+
{"q_no": 14, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 457 |
+
{"q_no": 15, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 458 |
+
{"q_no": 23, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 459 |
+
{"q_no": 28, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 460 |
+
{"q_no": 34, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 461 |
+
{"q_no": 26, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 462 |
+
{"q_no": 32, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 463 |
+
{"q_no": 39, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 464 |
+
{"q_no": 38, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 465 |
+
{"q_no": 5, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 466 |
+
{"q_no": 22, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 467 |
+
{"q_no": 19, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 468 |
+
{"q_no": 41, "subject": "Geography", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 469 |
+
{"q_no": 29, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 470 |
+
{"q_no": 28, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 471 |
+
{"q_no": 36, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 472 |
+
{"q_no": 32, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 473 |
+
{"q_no": 49, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 474 |
+
{"q_no": 48, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 475 |
+
{"q_no": 40, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "4"}
|
| 476 |
+
{"q_no": 39, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 477 |
+
{"q_no": 58, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 478 |
+
{"q_no": 59, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 479 |
+
{"q_no": 61, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "2"}
|
| 480 |
+
{"q_no": 64, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 481 |
+
{"q_no": 60, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "3"}
|
| 482 |
+
{"q_no": 4, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 483 |
+
{"q_no": 3, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 484 |
+
{"q_no": 63, "subject": "Health", "category": "Social_science", "level": "medium", "answer": "1"}
|
| 485 |
+
{"q_no": 13, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 486 |
+
{"q_no": 10, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 487 |
+
{"q_no": 11, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 488 |
+
{"q_no": 8, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 489 |
+
{"q_no": 24, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 490 |
+
{"q_no": 22, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 491 |
+
{"q_no": 20, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 492 |
+
{"q_no": 26, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 493 |
+
{"q_no": 30, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 494 |
+
{"q_no": 33, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 495 |
+
{"q_no": 37, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 496 |
+
{"q_no": 34, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 497 |
+
{"q_no": 41, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 498 |
+
{"q_no": 38, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 499 |
+
{"q_no": 45, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 500 |
+
{"q_no": 39, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 501 |
+
{"q_no": 47, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 502 |
+
{"q_no": 54, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 503 |
+
{"q_no": 55, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 504 |
+
{"q_no": 52, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 505 |
+
{"q_no": 56, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 506 |
+
{"q_no": 60, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 507 |
+
{"q_no": 61, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 508 |
+
{"q_no": 63, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 509 |
+
{"q_no": 62, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 510 |
+
{"q_no": 69, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 511 |
+
{"q_no": 71, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 512 |
+
{"q_no": 70, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 513 |
+
{"q_no": 73, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 514 |
+
{"q_no": 75, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 515 |
+
{"q_no": 82, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 516 |
+
{"q_no": 85, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 517 |
+
{"q_no": 86, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 518 |
+
{"q_no": 80, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 519 |
+
{"q_no": 88, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 520 |
+
{"q_no": 93, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 521 |
+
{"q_no": 103, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 522 |
+
{"q_no": 99, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 523 |
+
{"q_no": 98, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 524 |
+
{"q_no": 100, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 525 |
+
{"q_no": 109, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 526 |
+
{"q_no": 110, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 527 |
+
{"q_no": 113, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 528 |
+
{"q_no": 116, "subject": "History", "category": "Humanities", "level": "medium", "answer": "4"}
|
| 529 |
+
{"q_no": 115, "subject": "History", "category": "Humanities", "level": "medium", "answer": "2"}
|
| 530 |
+
{"q_no": 114, "subject": "History", "category": "Humanities", "level": "medium", "answer": "1"}
|
| 531 |
+
{"q_no": 120, "subject": "History", "category": "Humanities", "level": "medium", "answer": "3"}
|
| 532 |
+
{"q_no": 1, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 533 |
+
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 534 |
+
{"q_no": 5, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 535 |
+
{"q_no": 4, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 536 |
+
{"q_no": 10, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 537 |
+
{"q_no": 14, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 538 |
+
{"q_no": 17, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 539 |
+
{"q_no": 13, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 540 |
+
{"q_no": 19, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 541 |
+
{"q_no": 18, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 542 |
+
{"q_no": 16, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 543 |
+
{"q_no": 23, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 544 |
+
{"q_no": 21, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 545 |
+
{"q_no": 20, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 546 |
+
{"q_no": 22, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 547 |
+
{"q_no": 31, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 548 |
+
{"q_no": 29, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 549 |
+
{"q_no": 32, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 550 |
+
{"q_no": 24, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 551 |
+
{"q_no": 36, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 552 |
+
{"q_no": 43, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 553 |
+
{"q_no": 46, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 554 |
+
{"q_no": 53, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 555 |
+
{"q_no": 55, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 556 |
+
{"q_no": 51, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 557 |
+
{"q_no": 62, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 558 |
+
{"q_no": 63, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 559 |
+
{"q_no": 61, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 560 |
+
{"q_no": 67, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 561 |
+
{"q_no": 64, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 562 |
+
{"q_no": 70, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 563 |
+
{"q_no": 72, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 564 |
+
{"q_no": 69, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 565 |
+
{"q_no": 77, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 566 |
+
{"q_no": 71, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 567 |
+
{"q_no": 83, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 568 |
+
{"q_no": 75, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 569 |
+
{"q_no": 86, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 570 |
+
{"q_no": 88, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 571 |
+
{"q_no": 85, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 572 |
+
{"q_no": 82, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 573 |
+
{"q_no": 93, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 574 |
+
{"q_no": 87, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 575 |
+
{"q_no": 91, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 576 |
+
{"q_no": 95, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 577 |
+
{"q_no": 98, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 578 |
+
{"q_no": 94, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 579 |
+
{"q_no": 100, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 580 |
+
{"q_no": 97, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 581 |
+
{"q_no": 99, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 582 |
+
{"q_no": 105, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 583 |
+
{"q_no": 101, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 584 |
+
{"q_no": 111, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 585 |
+
{"q_no": 118, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 586 |
+
{"q_no": 108, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 587 |
+
{"q_no": 121, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 588 |
+
{"q_no": 113, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 589 |
+
{"q_no": 123, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 590 |
+
{"q_no": 124, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 591 |
+
{"q_no": 119, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 592 |
+
{"q_no": 126, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 593 |
+
{"q_no": 131, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 594 |
+
{"q_no": 132, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 595 |
+
{"q_no": 134, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 596 |
+
{"q_no": 136, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "4"}
|
| 597 |
+
{"q_no": 140, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 598 |
+
{"q_no": 138, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 599 |
+
{"q_no": 147, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "2"}
|
| 600 |
+
{"q_no": 145, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "3"}
|
| 601 |
+
{"q_no": 158, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 602 |
+
{"q_no": 156, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 603 |
+
{"q_no": 152, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 604 |
+
{"q_no": 151, "subject": "Sinhala", "category": "language", "level": "medium", "answer": "1"}
|
| 605 |
+
{"q_no": 9, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "3"}
|
| 606 |
+
{"q_no": 8, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "1"}
|
| 607 |
+
{"q_no": 1, "subject": "Art", "category": "humanities", "level": "hard", "answer": "4"}
|
| 608 |
+
{"q_no": 17, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "4"}
|
| 609 |
+
{"q_no": 11, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "3"}
|
| 610 |
+
{"q_no": 8, "subject": "Art", "category": "humanities", "level": "hard", "answer": "2"}
|
| 611 |
+
{"q_no": 34, "subject": "Agricultural Science", "category": "stem", "level": "hard", "answer": "1"}
|
| 612 |
+
{"q_no": 3, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 613 |
+
{"q_no": 10, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 614 |
+
{"q_no": 11, "subject": "Art", "category": "humanities", "level": "hard", "answer": "3"}
|
| 615 |
+
{"q_no": 21, "subject": "Biology", "category": "stem", "level": "hard", "answer": "2"}
|
| 616 |
+
{"q_no": 5, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 617 |
+
{"q_no": 23, "subject": "Biology", "category": "stem", "level": "hard", "answer": "3"}
|
| 618 |
+
{"q_no": 15, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 619 |
+
{"q_no": 28, "subject": "Biology", "category": "stem", "level": "hard", "answer": "1"}
|
| 620 |
+
{"q_no": 22, "subject": "Biology", "category": "stem", "level": "hard", "answer": "2"}
|
| 621 |
+
{"q_no": 24, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 622 |
+
{"q_no": 10, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 623 |
+
{"q_no": 34, "subject": "Biology", "category": "stem", "level": "hard", "answer": "4"}
|
| 624 |
+
{"q_no": 5, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "4"}
|
| 625 |
+
{"q_no": 26, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "1"}
|
| 626 |
+
{"q_no": 30, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 627 |
+
{"q_no": 23, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "1"}
|
| 628 |
+
{"q_no": 27, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 629 |
+
{"q_no": 3, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 630 |
+
{"q_no": 36, "subject": "Biosystem Technology", "category": "stem", "level": "hard", "answer": "2"}
|
| 631 |
+
{"q_no": 11, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 632 |
+
{"q_no": 10, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 633 |
+
{"q_no": 17, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 634 |
+
{"q_no": 22, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 635 |
+
{"q_no": 18, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 636 |
+
{"q_no": 23, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 637 |
+
{"q_no": 21, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 638 |
+
{"q_no": 29, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 639 |
+
{"q_no": 24, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 640 |
+
{"q_no": 31, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 641 |
+
{"q_no": 32, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "4"}
|
| 642 |
+
{"q_no": 25, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 643 |
+
{"q_no": 39, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "2"}
|
| 644 |
+
{"q_no": 37, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 645 |
+
{"q_no": 35, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "3"}
|
| 646 |
+
{"q_no": 38, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 647 |
+
{"q_no": 6, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 648 |
+
{"q_no": 40, "subject": "Buddhist Civilization", "category": "humanities", "level": "hard", "answer": "1"}
|
| 649 |
+
{"q_no": 3, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "1"}
|
| 650 |
+
{"q_no": 4, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "1"}
|
| 651 |
+
{"q_no": 15, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 652 |
+
{"q_no": 28, "subject": "Business Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 653 |
+
{"q_no": 7, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "3"}
|
| 654 |
+
{"q_no": 11, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "2"}
|
| 655 |
+
{"q_no": 9, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "4"}
|
| 656 |
+
{"q_no": 5, "subject": "Chemistry", "category": "stem", "level": "hard", "answer": "4"}
|
| 657 |
+
{"q_no": 10, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 658 |
+
{"q_no": 15, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 659 |
+
{"q_no": 1, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "1"}
|
| 660 |
+
{"q_no": 11, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 661 |
+
{"q_no": 31, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "4"}
|
| 662 |
+
{"q_no": 38, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 663 |
+
{"q_no": 19, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "3"}
|
| 664 |
+
{"q_no": 32, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 665 |
+
{"q_no": 46, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 666 |
+
{"q_no": 4, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "4"}
|
| 667 |
+
{"q_no": 3, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 668 |
+
{"q_no": 10, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "1"}
|
| 669 |
+
{"q_no": 8, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 670 |
+
{"q_no": 17, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 671 |
+
{"q_no": 42, "subject": "Communication and Media Studies", "category": "social science", "level": "hard", "answer": "2"}
|
| 672 |
+
{"q_no": 22, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 673 |
+
{"q_no": 13, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "2"}
|
| 674 |
+
{"q_no": 20, "subject": "Dancing (Indigenous)", "category": "humanities", "level": "hard", "answer": "3"}
|
| 675 |
+
{"q_no": 9, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 676 |
+
{"q_no": 4, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 677 |
+
{"q_no": 13, "subject": "Economics", "category": "social science", "level": "hard", "answer": "3"}
|
| 678 |
+
{"q_no": 15, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 679 |
+
{"q_no": 18, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 680 |
+
{"q_no": 16, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 681 |
+
{"q_no": 17, "subject": "Economics", "category": "social science", "level": "hard", "answer": "1"}
|
| 682 |
+
{"q_no": 21, "subject": "Economics", "category": "social science", "level": "hard", "answer": "2"}
|
| 683 |
+
{"q_no": 31, "subject": "Economics", "category": "social science", "level": "hard", "answer": "4"}
|
| 684 |
+
{"q_no": 7, "subject": "Geography", "category": "social science", "level": "hard", "answer": "1"}
|
| 685 |
+
{"q_no": 12, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 686 |
+
{"q_no": 14, "subject": "Geography", "category": "social science", "level": "hard", "answer": "4"}
|
| 687 |
+
{"q_no": 22, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 688 |
+
{"q_no": 34, "subject": "Geography", "category": "social science", "level": "hard", "answer": "3"}
|
| 689 |
+
{"q_no": 10, "subject": "Geography", "category": "social science", "level": "hard", "answer": "3"}
|
| 690 |
+
{"q_no": 30, "subject": "Geography", "category": "social science", "level": "hard", "answer": "2"}
|
| 691 |
+
{"q_no": 21, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 692 |
+
{"q_no": 2, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "1"}
|
| 693 |
+
{"q_no": 1, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "3"}
|
| 694 |
+
{"q_no": 2, "subject": "Physics", "category": "stem", "level": "hard", "answer": "2"}
|
| 695 |
+
{"q_no": 9, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "2"}
|
| 696 |
+
{"q_no": 24, "subject": "Home Economics", "category": "other", "level": "hard", "answer": "2"}
|
| 697 |
+
{"q_no": 15, "subject": "Physics", "category": "stem", "level": "hard", "answer": "4"}
|
| 698 |
+
{"q_no": 19, "subject": "Physics", "category": "stem", "level": "hard", "answer": "3"}
|
| 699 |
+
{"q_no": 16, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "1"}
|
| 700 |
+
{"q_no": 5, "subject": "Physics", "category": "stem", "level": "hard", "answer": "1"}
|
| 701 |
+
{"q_no": 27, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "1"}
|
| 702 |
+
{"q_no": 18, "subject": "Physics", "category": "stem", "level": "hard", "answer": "3"}
|
| 703 |
+
{"q_no": 20, "subject": "Physics", "category": "stem", "level": "hard", "answer": "3"}
|
| 704 |
+
{"q_no": 4, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 705 |
+
{"q_no": 26, "subject": "Political Science", "category": "social science", "level": "hard", "answer": "2"}
|
| 706 |
+
{"q_no": 3, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 707 |
+
{"q_no": 8, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 708 |
+
{"q_no": 5, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 709 |
+
{"q_no": 9, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "3"}
|
| 710 |
+
{"q_no": 11, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "2"}
|
| 711 |
+
{"q_no": 14, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "4"}
|
| 712 |
+
{"q_no": 19, "subject": "Sinhala", "category": "language", "level": "hard", "answer": "1"}
|
training/passes/positional_option_keys.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[[1, "Design and Construction Technology", "other", "medium"], [12, "Health", "Social_science", "medium"], [19, "Health and Physical Education", "other", "easy"], [20, "Science", "stem", "easy"], [28, "Health and Physical Education", "other", "easy"], [32, "Health and Physical Education", "other", "easy"], [45, "Science", "stem", "easy"], [144, "Dancing", "Humanities", "medium"]]
|
training/src/baseline_runner.py
ADDED
|
@@ -0,0 +1,456 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
# Historical source snapshot. Comments about accuracy, data origin, or compliance
|
| 3 |
+
# are author claims, not verification; see training/README.md and REPRODUCIBILITY.md.
|
| 4 |
+
"""
|
| 5 |
+
Baseline Inference Runner for Sinhala MMLU Shared Task
|
| 6 |
+
Loads all questions from data/ (easy, medium, hard) and outputs predictions.jsonl
|
| 7 |
+
Uses Ollama /api/chat with strict structured exam prompting.
|
| 8 |
+
Supports:
|
| 9 |
+
- Fast direct mode (default), Cross-Lingual CoT mode (--cot), and <think> mode (--think)
|
| 10 |
+
- Rapid local validation benchmark (--val_only)
|
| 11 |
+
- Automatic checkpointing and resuming
|
| 12 |
+
"""
|
| 13 |
+
|
| 14 |
+
import json
|
| 15 |
+
import argparse
|
| 16 |
+
import sys
|
| 17 |
+
import re
|
| 18 |
+
import os
|
| 19 |
+
import random
|
| 20 |
+
from pathlib import Path
|
| 21 |
+
import urllib.request
|
| 22 |
+
|
| 23 |
+
# Add src to sys.path so prompts can be imported from anywhere
|
| 24 |
+
sys.path.insert(0, str(Path(__file__).parent))
|
| 25 |
+
from prompts import build_prompt
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def extract_answer_digit(text: str) -> str:
|
| 29 |
+
"""Extracts the chosen option index (1, 2, 3, 4) from model output text."""
|
| 30 |
+
if not text:
|
| 31 |
+
return "1"
|
| 32 |
+
# If '</think>' is present in content, only parse after '</think>'
|
| 33 |
+
if "</think>" in text:
|
| 34 |
+
text = text.split("</think>")[-1]
|
| 35 |
+
text = text.strip()
|
| 36 |
+
|
| 37 |
+
# 1. Explicit 'Answer: X' or 'පිළිතුර: X' or 'Option X' (take last match if CoT text precedes it)
|
| 38 |
+
explicit_matches = re.findall(
|
| 39 |
+
r"(?:පිළිතුර|Answer|Final Answer|Correct Option|නිවැරදි පිළිතුර|තෝරාගැනීම)\s*(?:is|වන්නේ)?\s*[:\s*#(\[]*(?:Option\s*)?([1-4])\b",
|
| 40 |
+
text,
|
| 41 |
+
re.IGNORECASE,
|
| 42 |
+
)
|
| 43 |
+
if explicit_matches:
|
| 44 |
+
return explicit_matches[-1]
|
| 45 |
+
|
| 46 |
+
# 2. Match leading digit if response is just a digit
|
| 47 |
+
m = re.match(r"^[(\[]?\s*([1-4])\b", text)
|
| 48 |
+
if m and len(text) <= 8:
|
| 49 |
+
return m.group(1)
|
| 50 |
+
|
| 51 |
+
# 3. Match the last standalone digit 1-4 in the response
|
| 52 |
+
matches = re.findall(r"\b([1-4])\b", text)
|
| 53 |
+
if matches:
|
| 54 |
+
return matches[-1]
|
| 55 |
+
|
| 56 |
+
m = re.search(r"[1-4]", text)
|
| 57 |
+
if m:
|
| 58 |
+
return m.group(0)
|
| 59 |
+
|
| 60 |
+
# Fallback default
|
| 61 |
+
return "1"
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
def load_all_questions(data_dir: Path):
|
| 65 |
+
"""Loads all questions from easy, medium, and hard folders in consistent order."""
|
| 66 |
+
questions = []
|
| 67 |
+
levels = ["easy", "medium", "hard"]
|
| 68 |
+
|
| 69 |
+
for lvl in levels:
|
| 70 |
+
folder = data_dir / lvl
|
| 71 |
+
if not folder.exists():
|
| 72 |
+
continue
|
| 73 |
+
files = sorted(list(folder.glob("*.json")))
|
| 74 |
+
for f in files:
|
| 75 |
+
with open(f, "r", encoding="utf-8") as fp:
|
| 76 |
+
data = json.load(fp)
|
| 77 |
+
for item in data:
|
| 78 |
+
item["_level"] = lvl
|
| 79 |
+
item["_source_file"] = f.name
|
| 80 |
+
questions.append(item)
|
| 81 |
+
|
| 82 |
+
return questions
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
def load_val_questions(gold_val_path: Path):
|
| 86 |
+
"""Loads questions from the gold validation file."""
|
| 87 |
+
questions = []
|
| 88 |
+
with open(gold_val_path, "r", encoding="utf-8") as f:
|
| 89 |
+
for line in f:
|
| 90 |
+
line = line.strip()
|
| 91 |
+
if line:
|
| 92 |
+
d = json.loads(line)
|
| 93 |
+
d["_level"] = d["level"]
|
| 94 |
+
questions.append(d)
|
| 95 |
+
return questions
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
def make_q_key(record: dict) -> str:
|
| 99 |
+
lvl = str(record.get("level", "")).lower().strip()
|
| 100 |
+
subj = str(record.get("subject", "")).strip()
|
| 101 |
+
q_no = str(record.get("q_no", "")).strip()
|
| 102 |
+
return f"{lvl}_{subj}_{q_no}"
|
| 103 |
+
|
| 104 |
+
|
| 105 |
+
def load_existing_checkpoint(output_path: Path):
|
| 106 |
+
"""Loads existing predictions from output_file if resuming, indexed by composite key."""
|
| 107 |
+
existing = {}
|
| 108 |
+
if output_path.exists():
|
| 109 |
+
with open(output_path, "r", encoding="utf-8") as fp:
|
| 110 |
+
for line in fp:
|
| 111 |
+
line = line.strip()
|
| 112 |
+
if line:
|
| 113 |
+
try:
|
| 114 |
+
record = json.loads(line)
|
| 115 |
+
key = make_q_key(record)
|
| 116 |
+
existing[key] = record
|
| 117 |
+
except Exception:
|
| 118 |
+
pass
|
| 119 |
+
return existing
|
| 120 |
+
|
| 121 |
+
|
| 122 |
+
SYSTEM_EXAM_PROMPT = (
|
| 123 |
+
"You are an examination AI for the Sri Lankan school curriculum (Sinhala medium). "
|
| 124 |
+
"For every multiple-choice question, analyze the options carefully and answer by replying "
|
| 125 |
+
"with ONLY the single digit of the best option (1, 2, 3, or 4). "
|
| 126 |
+
"Do NOT provide explanations, do NOT include option text, and do NOT write anything other than the single digit."
|
| 127 |
+
)
|
| 128 |
+
|
| 129 |
+
SYSTEM_COT_PROMPT = (
|
| 130 |
+
"You are an expert examiner for the Sri Lankan school curriculum (Sinhala medium). "
|
| 131 |
+
"For each multiple-choice question, write a concise 1-2 sentence English translation and fact-check ('Analysis:'), "
|
| 132 |
+
"then end on a new line with strictly 'Answer: <digit>' (where <digit> is 1, 2, 3, or 4)."
|
| 133 |
+
)
|
| 134 |
+
|
| 135 |
+
SYSTEM_THINK_PROMPT = (
|
| 136 |
+
"You are an expert teacher of the Sri Lankan national school curriculum (grades 6-13), "
|
| 137 |
+
"fluent in Sinhala. You will receive a multiple-choice question written in Sinhala with four "
|
| 138 |
+
"numbered options. Exactly one option is correct. Read the Sinhala carefully, including "
|
| 139 |
+
"negations such as 'නොවන' / 'නොවේ' (NOT). You may reason in English. "
|
| 140 |
+
"Finish with the final answer in the form 'Answer: <number>'."
|
| 141 |
+
)
|
| 142 |
+
|
| 143 |
+
ANSWER_THINK_RE = re.compile(r"(?:Answer|පිළිතුර)\s*[::]?\s*\**\s*\(?([1-4])\)?", re.IGNORECASE)
|
| 144 |
+
|
| 145 |
+
|
| 146 |
+
def build_think_user_prompt(q: dict) -> str:
|
| 147 |
+
"""Builds the Zero-Shot Curriculum Teacher user prompt with Subject & Grade context (72.82% val accuracy)."""
|
| 148 |
+
choices = q.get("choices")
|
| 149 |
+
if choices is None:
|
| 150 |
+
choices = q.get("options", [])
|
| 151 |
+
if isinstance(choices, dict):
|
| 152 |
+
keys = sorted(choices.keys(), key=lambda x: str(x))
|
| 153 |
+
opt_list = [choices[k] for k in keys]
|
| 154 |
+
else:
|
| 155 |
+
opt_list = list(choices) if choices else []
|
| 156 |
+
|
| 157 |
+
opts = "\n".join(f"{i}. {c}" for i, c in enumerate(opt_list, 1))
|
| 158 |
+
lvl = str(q.get("_level", q.get("level", "medium"))).lower().strip()
|
| 159 |
+
grade = "6-9" if lvl == "easy" else ("10-11 (O/L)" if lvl == "medium" else "12-13 (A/L)")
|
| 160 |
+
subj = q.get("subject", "General")
|
| 161 |
+
qtext = q.get("question", "").strip()
|
| 162 |
+
return (
|
| 163 |
+
f"විෂය (Subject): {subj} | ශ්රේණිය (Grade): {grade}\n\n"
|
| 164 |
+
f"ප්රශ්නය (Question):\n{qtext}\n\n"
|
| 165 |
+
f"විකල්ප (Options):\n{opts}\n\n"
|
| 166 |
+
"Which option (1, 2, 3 or 4) is correct? End your reply with 'Answer: <number>'."
|
| 167 |
+
)
|
| 168 |
+
|
| 169 |
+
|
| 170 |
+
_NO_PROXY_OPENER = urllib.request.build_opener(urllib.request.ProxyHandler({}))
|
| 171 |
+
|
| 172 |
+
|
| 173 |
+
def query_ollama_chat(
|
| 174 |
+
model_name: str,
|
| 175 |
+
system_prompt: str,
|
| 176 |
+
user_prompt: str,
|
| 177 |
+
think: bool = False,
|
| 178 |
+
cot: bool = False,
|
| 179 |
+
timeout: int = 240
|
| 180 |
+
) -> tuple[str, str]:
|
| 181 |
+
"""Sends a chat request to local Ollama /api/chat and returns (raw_text, extracted_digit)."""
|
| 182 |
+
if think:
|
| 183 |
+
num_predict = 2048
|
| 184 |
+
elif cot:
|
| 185 |
+
num_predict = 260
|
| 186 |
+
else:
|
| 187 |
+
num_predict = 15
|
| 188 |
+
|
| 189 |
+
options = {
|
| 190 |
+
"temperature": 0.0,
|
| 191 |
+
"num_predict": num_predict,
|
| 192 |
+
}
|
| 193 |
+
if not think:
|
| 194 |
+
options["stop"] = ["\nප්රශ්නය:", "\nQuestion:", "<|im_end|>", "<|endoftext|>", "<|im_start|>"]
|
| 195 |
+
|
| 196 |
+
req_data = json.dumps({
|
| 197 |
+
"model": model_name,
|
| 198 |
+
"messages": [
|
| 199 |
+
{"role": "system", "content": system_prompt},
|
| 200 |
+
{"role": "user", "content": user_prompt}
|
| 201 |
+
],
|
| 202 |
+
"stream": False,
|
| 203 |
+
"think": think,
|
| 204 |
+
"options": options
|
| 205 |
+
}).encode("utf-8")
|
| 206 |
+
|
| 207 |
+
req = urllib.request.Request(
|
| 208 |
+
"http://127.0.0.1:11434/api/chat",
|
| 209 |
+
data=req_data,
|
| 210 |
+
headers={"Content-Type": "application/json"}
|
| 211 |
+
)
|
| 212 |
+
|
| 213 |
+
with _NO_PROXY_OPENER.open(req, timeout=timeout) as resp:
|
| 214 |
+
res = json.loads(resp.read().decode("utf-8"))
|
| 215 |
+
msg = res.get("message", {})
|
| 216 |
+
content = msg.get("content", "")
|
| 217 |
+
thinking = msg.get("thinking", "")
|
| 218 |
+
if think:
|
| 219 |
+
m = ANSWER_THINK_RE.findall(content) or ANSWER_THINK_RE.findall(thinking)
|
| 220 |
+
if m:
|
| 221 |
+
return content or thinking, m[-1]
|
| 222 |
+
combined = (thinking + "\n" + content).strip()
|
| 223 |
+
return combined, extract_answer_digit(content if content.strip() else thinking)
|
| 224 |
+
return content, extract_answer_digit(content)
|
| 225 |
+
|
| 226 |
+
|
| 227 |
+
def save_merged_full_predictions(
|
| 228 |
+
canonical_questions: list,
|
| 229 |
+
completed_map: dict,
|
| 230 |
+
fallback_map: dict,
|
| 231 |
+
merged_path: Path
|
| 232 |
+
):
|
| 233 |
+
"""Writes a complete 2,238-line prediction file in canonical order using completed_map + fallback_map."""
|
| 234 |
+
with open(merged_path, "w", encoding="utf-8") as fp:
|
| 235 |
+
for q in canonical_questions:
|
| 236 |
+
q_no = q["q_no"]
|
| 237 |
+
subj = q.get("subject", "general")
|
| 238 |
+
cat = q.get("category", "general")
|
| 239 |
+
lvl = q["_level"].lower()
|
| 240 |
+
q_key = f"{lvl}_{subj}_{q_no}"
|
| 241 |
+
if q_key in completed_map:
|
| 242 |
+
rec = completed_map[q_key]
|
| 243 |
+
elif q_key in fallback_map:
|
| 244 |
+
rec = fallback_map[q_key]
|
| 245 |
+
else:
|
| 246 |
+
rec = {
|
| 247 |
+
"q_no": q_no,
|
| 248 |
+
"subject": subj,
|
| 249 |
+
"category": cat,
|
| 250 |
+
"level": lvl,
|
| 251 |
+
"answer": "1"
|
| 252 |
+
}
|
| 253 |
+
fp.write(json.dumps(rec, ensure_ascii=False) + "\n")
|
| 254 |
+
|
| 255 |
+
|
| 256 |
+
def run_inference(
|
| 257 |
+
data_dir: str,
|
| 258 |
+
output_file: str,
|
| 259 |
+
engine: str,
|
| 260 |
+
model_name: str,
|
| 261 |
+
mock: bool,
|
| 262 |
+
max_questions: int = None,
|
| 263 |
+
resume: bool = True,
|
| 264 |
+
val_only: bool = False,
|
| 265 |
+
gold_val_file: str = "data/gold_val_41.jsonl",
|
| 266 |
+
think: bool = False,
|
| 267 |
+
cot: bool = False,
|
| 268 |
+
priority_disputed: bool = False,
|
| 269 |
+
fallback_file: str = "data/predictions_gemma4_cot.jsonl",
|
| 270 |
+
compare_file: str = "data/predictions_gemma4_direct.jsonl",
|
| 271 |
+
merged_output: str = "data/predictions_gemma4_think_full.jsonl"
|
| 272 |
+
):
|
| 273 |
+
if val_only:
|
| 274 |
+
val_path = Path(gold_val_file)
|
| 275 |
+
if not val_path.exists():
|
| 276 |
+
print(f"Error: Gold validation file '{gold_val_file}' not found!")
|
| 277 |
+
sys.exit(1)
|
| 278 |
+
all_questions = load_val_questions(val_path)
|
| 279 |
+
print(f"Loaded {len(all_questions)} validation questions from '{gold_val_file}'.")
|
| 280 |
+
else:
|
| 281 |
+
data_path = Path(data_dir)
|
| 282 |
+
if not data_path.exists():
|
| 283 |
+
print(f"Error: Data directory '{data_dir}' not found!")
|
| 284 |
+
sys.exit(1)
|
| 285 |
+
all_questions = load_all_questions(data_path)
|
| 286 |
+
print(f"Loaded {len(all_questions)} questions across easy, medium, and hard.")
|
| 287 |
+
|
| 288 |
+
canonical_questions = list(all_questions)
|
| 289 |
+
|
| 290 |
+
fallback_map = {}
|
| 291 |
+
compare_map = {}
|
| 292 |
+
if not val_only and Path(fallback_file).exists():
|
| 293 |
+
fallback_map = load_existing_checkpoint(Path(fallback_file))
|
| 294 |
+
if not val_only and Path(compare_file).exists():
|
| 295 |
+
compare_map = load_existing_checkpoint(Path(compare_file))
|
| 296 |
+
|
| 297 |
+
if priority_disputed and not val_only and fallback_map and compare_map:
|
| 298 |
+
lvl_rank = {"hard": 0, "medium": 1, "easy": 2}
|
| 299 |
+
def sort_key(q):
|
| 300 |
+
lvl = q["_level"].lower()
|
| 301 |
+
subj = q.get("subject", "general")
|
| 302 |
+
q_no = q["q_no"]
|
| 303 |
+
k = f"{lvl}_{subj}_{q_no}"
|
| 304 |
+
a1 = fallback_map.get(k, {}).get("answer", "1")
|
| 305 |
+
a2 = compare_map.get(k, {}).get("answer", "1")
|
| 306 |
+
is_disputed = 0 if a1 != a2 else 1
|
| 307 |
+
return (is_disputed, lvl_rank.get(lvl, 3))
|
| 308 |
+
all_questions = sorted(all_questions, key=sort_key)
|
| 309 |
+
disputed_cnt = sum(
|
| 310 |
+
1 for q in all_questions
|
| 311 |
+
if fallback_map.get(f"{q['_level'].lower()}_{q.get('subject','general')}_{q['q_no']}", {}).get("answer")
|
| 312 |
+
!= compare_map.get(f"{q['_level'].lower()}_{q.get('subject','general')}_{q['q_no']}", {}).get("answer")
|
| 313 |
+
)
|
| 314 |
+
print(f"Priority-Disputed Mode ON: Processing {disputed_cnt} disputed questions first (Hard -> Medium -> Easy)!")
|
| 315 |
+
|
| 316 |
+
if max_questions and max_questions > 0:
|
| 317 |
+
all_questions = all_questions[:max_questions]
|
| 318 |
+
print(f"Limiting inference to first {len(all_questions)} questions as requested.")
|
| 319 |
+
|
| 320 |
+
output_path = Path(output_file)
|
| 321 |
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
| 322 |
+
merged_path = Path(merged_output)
|
| 323 |
+
|
| 324 |
+
existing_preds = {}
|
| 325 |
+
if resume and output_path.exists():
|
| 326 |
+
existing_preds = load_existing_checkpoint(output_path)
|
| 327 |
+
print(f"Resuming: Found {len(existing_preds)} existing predictions in '{output_file}'.")
|
| 328 |
+
|
| 329 |
+
predictions = []
|
| 330 |
+
completed_map = dict(existing_preds)
|
| 331 |
+
|
| 332 |
+
if mock:
|
| 333 |
+
print("Running in MOCK mode (generating valid random predictions)...")
|
| 334 |
+
for q in all_questions:
|
| 335 |
+
q_no = q["q_no"]
|
| 336 |
+
subj = q.get("subject", "general")
|
| 337 |
+
lvl = q["_level"].lower()
|
| 338 |
+
q_key = f"{lvl}_{subj}_{q_no}"
|
| 339 |
+
if resume and q_key in existing_preds:
|
| 340 |
+
predictions.append(existing_preds[q_key])
|
| 341 |
+
continue
|
| 342 |
+
pred_record = {
|
| 343 |
+
"q_no": q_no,
|
| 344 |
+
"subject": subj,
|
| 345 |
+
"category": q.get("category", "general"),
|
| 346 |
+
"level": lvl,
|
| 347 |
+
"answer": str(random.randint(1, 4))
|
| 348 |
+
}
|
| 349 |
+
predictions.append(pred_record)
|
| 350 |
+
completed_map[q_key] = pred_record
|
| 351 |
+
elif engine == "ollama":
|
| 352 |
+
print(f"Running inference with local Ollama model: '{model_name}' via /api/chat (think={think}, cot={cot})...")
|
| 353 |
+
if think:
|
| 354 |
+
sys_prompt = SYSTEM_THINK_PROMPT
|
| 355 |
+
elif cot:
|
| 356 |
+
sys_prompt = SYSTEM_COT_PROMPT
|
| 357 |
+
else:
|
| 358 |
+
sys_prompt = SYSTEM_EXAM_PROMPT
|
| 359 |
+
|
| 360 |
+
for i, q in enumerate(all_questions, 1):
|
| 361 |
+
q_no = q["q_no"]
|
| 362 |
+
subj = q.get("subject", "general")
|
| 363 |
+
cat = q.get("category", "general")
|
| 364 |
+
lvl = q["_level"].lower()
|
| 365 |
+
|
| 366 |
+
q_key = f"{lvl}_{subj}_{q_no}"
|
| 367 |
+
if resume and q_key in existing_preds:
|
| 368 |
+
predictions.append(existing_preds[q_key])
|
| 369 |
+
continue
|
| 370 |
+
|
| 371 |
+
if think:
|
| 372 |
+
prompt = build_think_user_prompt(q)
|
| 373 |
+
else:
|
| 374 |
+
prompt = build_prompt(q)
|
| 375 |
+
if cot:
|
| 376 |
+
prompt += "\nAnalysis:"
|
| 377 |
+
raw = ""
|
| 378 |
+
try:
|
| 379 |
+
raw, ans_digit = query_ollama_chat(model_name, sys_prompt, prompt, think=think, cot=cot)
|
| 380 |
+
except Exception as e:
|
| 381 |
+
print(f"[{i}/{len(all_questions)}] Ollama error on Q#{q_no} ({subj}): {e}. Using fallback 1.")
|
| 382 |
+
ans_digit = fallback_map.get(q_key, {}).get("answer", "1")
|
| 383 |
+
|
| 384 |
+
record = {
|
| 385 |
+
"q_no": q_no,
|
| 386 |
+
"subject": subj,
|
| 387 |
+
"category": cat,
|
| 388 |
+
"level": lvl,
|
| 389 |
+
"answer": str(ans_digit)
|
| 390 |
+
}
|
| 391 |
+
predictions.append(record)
|
| 392 |
+
completed_map[q_key] = record
|
| 393 |
+
|
| 394 |
+
if i % 10 == 0 or i == len(all_questions):
|
| 395 |
+
print(f"Progress: {i}/{len(all_questions)} processed (Total solved={len(completed_map)}). Latest ({lvl}/{subj} Q#{q_no}): => {ans_digit}")
|
| 396 |
+
with open(output_path, "w", encoding="utf-8") as fp:
|
| 397 |
+
for p in predictions:
|
| 398 |
+
fp.write(json.dumps(p, ensure_ascii=False) + "\n")
|
| 399 |
+
if not val_only and fallback_map:
|
| 400 |
+
save_merged_full_predictions(canonical_questions, completed_map, fallback_map, merged_path)
|
| 401 |
+
else:
|
| 402 |
+
print(f"Unsupported engine: {engine}")
|
| 403 |
+
sys.exit(1)
|
| 404 |
+
|
| 405 |
+
# Write final predictions
|
| 406 |
+
with open(output_path, "w", encoding="utf-8") as fp:
|
| 407 |
+
for p in predictions:
|
| 408 |
+
fp.write(json.dumps(p, ensure_ascii=False) + "\n")
|
| 409 |
+
|
| 410 |
+
if not val_only and fallback_map:
|
| 411 |
+
save_merged_full_predictions(canonical_questions, completed_map, fallback_map, merged_path)
|
| 412 |
+
print(f"Complete 2,238-line merged file updated at: {merged_output}")
|
| 413 |
+
|
| 414 |
+
print(f"\nDONE! {len(predictions)} predictions written to {output_file}")
|
| 415 |
+
if not val_only:
|
| 416 |
+
target_sub = merged_output if (priority_disputed and fallback_map) else output_file
|
| 417 |
+
print(f"To package and validate for Codabench at any time, run:")
|
| 418 |
+
print(f" python3 src/package_submission.py {target_sub} submission_gemma4_think.zip\n")
|
| 419 |
+
|
| 420 |
+
|
| 421 |
+
def main():
|
| 422 |
+
parser = argparse.ArgumentParser(description="Sinhala MMLU Baseline Runner")
|
| 423 |
+
parser.add_argument("--data_dir", default="data", help="Path to data directory containing easy, medium, hard")
|
| 424 |
+
parser.add_argument("--output", default="data/predictions.jsonl", help="Output predictions path")
|
| 425 |
+
parser.add_argument("--engine", choices=["ollama"], default="ollama", help="Inference engine")
|
| 426 |
+
parser.add_argument("--model", default="qwen3.5:4b", help="Model name in Ollama")
|
| 427 |
+
parser.add_argument("--mock", action="store_true", help="Generate fast mock predictions to test pipeline")
|
| 428 |
+
parser.add_argument("--max_questions", type=int, default=None, help="Process only first N questions")
|
| 429 |
+
parser.add_argument("--no_resume", action="store_true", help="Do not resume from existing checkpoint")
|
| 430 |
+
parser.add_argument("--val_only", action="store_true", help="Run only on the 41-question local gold benchmark")
|
| 431 |
+
parser.add_argument("--gold_val_file", default="data/gold_val_41.jsonl", help="Gold validation benchmark file")
|
| 432 |
+
parser.add_argument("--think", action="store_true", help="Enable native thinking mode (72.82%% val accuracy on gemma4:e4b)")
|
| 433 |
+
parser.add_argument("--cot", action="store_true", help="Enable concise Cross-Lingual Translate-and-Reason CoT mode")
|
| 434 |
+
parser.add_argument("--priority_disputed", action="store_true", help="Solve disputed questions first and continuously update 2238-line merged output")
|
| 435 |
+
parser.add_argument("--merged_output", default="data/predictions_gemma4_think_full.jsonl", help="Path for continuously updated 2238-line full submission file")
|
| 436 |
+
args = parser.parse_args()
|
| 437 |
+
|
| 438 |
+
run_inference(
|
| 439 |
+
args.data_dir,
|
| 440 |
+
args.output,
|
| 441 |
+
args.engine,
|
| 442 |
+
args.model,
|
| 443 |
+
args.mock,
|
| 444 |
+
args.max_questions,
|
| 445 |
+
resume=not args.no_resume,
|
| 446 |
+
val_only=args.val_only,
|
| 447 |
+
gold_val_file=args.gold_val_file,
|
| 448 |
+
think=args.think,
|
| 449 |
+
cot=args.cot,
|
| 450 |
+
priority_disputed=args.priority_disputed,
|
| 451 |
+
merged_output=args.merged_output
|
| 452 |
+
)
|
| 453 |
+
|
| 454 |
+
|
| 455 |
+
if __name__ == "__main__":
|
| 456 |
+
main()
|
training/src/few_shot_prompts.py
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Historical source snapshot. Comments about accuracy, data origin, or compliance
|
| 2 |
+
# are author claims, not verification; see training/README.md and REPRODUCIBILITY.md.
|
| 3 |
+
"""
|
| 4 |
+
SinhalaMMLU Few-Shot (In-Context Learning) Prompt Builder
|
| 5 |
+
Derived from the EMNLP 2025 benchmark paper:
|
| 6 |
+
'SinhalaMMLU: A Comprehensive Benchmark for Evaluating Multitask Language Understanding in Sinhala'
|
| 7 |
+
|
| 8 |
+
Features:
|
| 9 |
+
- 100% external Sri Lankan curriculum exemplars (zero overlap with test questions, strictly abiding by Rule #04)
|
| 10 |
+
- Balanced exemplars covering Humanities, Social Sciences, STEM, Language, and Other
|
| 11 |
+
- Non-sequential balanced gold answer order (2, 4, 1, 3) to prevent ascending 1->2->3->4->1 continuation bias
|
| 12 |
+
- Supports Direct Mode, English Cross-Lingual CoT (--cot), and Tamil Cross-Lingual CoT (--cot --cot_lang ta)
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
# Exact task-849 (57.78% overall, 73.33% Hard) exemplars ordered (2, 4, 1, 3)
|
| 16 |
+
EXEMPLARS_BY_DOMAIN = {
|
| 17 |
+
"humanities": [
|
| 18 |
+
{
|
| 19 |
+
"question": "අනුරාධපුර රාජධානියේ පළමු රජු ලෙස සැලකෙන්නේ කවුරුන්ද?",
|
| 20 |
+
"choices": ["දේවානම්පියතිස්ස රජු", "පණ්ඩුකාභය රජු", "දුටුගැමුණු රජු", "වළගම්බා රජු"],
|
| 21 |
+
"analysis": "The question asks who is considered the first king of the Anuradhapura Kingdom. Options: (1) Devanampiyatissa, (2) Pandukabhaya, (3) Dutugemunu, (4) Valagamba. King Pandukabhaya founded Anuradhapura as the capital and was its first king.",
|
| 22 |
+
"analysis_ta": "வினா: அனுராதபுர இராச்சியத்தின் முதல் மன்னராகக் கருதப்படுபவர் யார்? தெரிவுகள்: (1) தேவநம்பியதிஸ்ஸ, (2) பண்டுகாபய, (3) துட்டகைமுனு, (4) வலகம்பா. அனுராதபுரத்தைத் தலைநகராகக் கொண்டு ஆட்சி செய்த முதல் மன்னன் பண்டுகாபய ஆவார்.",
|
| 23 |
+
"answer": "2"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"question": "මහාචාර්ය එදිරිවීර සරච්චන්ද්රයන් විසින් රචිත ප්රකට ශෛලිගත නාට්යය කුමක්ද?",
|
| 27 |
+
"choices": ["කැලණි පාලම", "හුණුවටයේ කතාව", "සුබ සහ යස", "මනමේ"],
|
| 28 |
+
"analysis": "The question asks for the famous stylized drama written by Prof. Ediriweera Sarachchandra. Options: (1) Kelani Palama, (2) Hunuwataye Kathawa, (3) Suba saha Yasa, (4) Maname. Maname (1956) is Sarachchandra's iconic stylized drama.",
|
| 29 |
+
"analysis_ta": "வினா: பேராசிரியர் எதிரிவீர சரச்சந்திரவால் எழுதப்பட்ட புகழ்பெற்ற நாடகம் எது? தெரிவுகள்: (1) களனி பாலம, (2) ஹுனுவட்டயே கதாவ, (3) சுப சஹ யச, (4) மனமே. 'மனமே' (1956) சரச்சந்திரவின் புகழ்பெற்ற நாடகமாகும்.",
|
| 30 |
+
"answer": "4"
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"question": "සිදුහත් කුමරු ගිහිගෙය හැර යාමේ සිදුවීම බෞද්ධ සාහිත්යයේ හඳුන්වනු ලබන්නේ කුමන නමකින්ද?",
|
| 34 |
+
"choices": ["මහාභිනිෂ්ක්රමණය", "ධම්මචක්කප්පවත්තනය", "මහා පරිනිර්වාණය", "සම්බෝධිය"],
|
| 35 |
+
"analysis": "The question asks how Prince Siddhartha's renunciation of worldly life is known in Buddhist literature. Options: (1) Mahabinishkramanaya (Great Renunciation), (2) Dhammacakkappavattana, (3) Maha Parinirvana, (4) Sambodhi. Renunciation is Mahabinishkramanaya.",
|
| 36 |
+
"analysis_ta": "வினா: சித்தார்த்த இளவரசர் இல்லற வாழ்வைத் துறந்த நிகழ்வு பௌத்த இலக்கியத்தில் எவ்வாறு அழைக்கப்படுகிறது? தெரிவுகள்: (1) மஹாபினிஷ்கிரமணய (மகா துறவு), (2) தம்மசக்கப்பவத்தன, (3) மகா பரிநிர்வாணம், (4) சம்போதி. இல்லறத் துறவு மஹாபினிஷ்கிரமணய எனப்படும்.",
|
| 37 |
+
"answer": "1"
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"question": "උඩරට නර්තන සම්ප්රදායේ ප්රධානතම අවනද්ධ භාණ්ඩය කුමක්ද?",
|
| 41 |
+
"choices": ["දවුල", "තම්මැට්ටම", "ගැට බෙරය", "යක් බෙරය"],
|
| 42 |
+
"analysis": "The question asks for the main percussion drum of the Kandyan (Udarata) dance tradition. Options: (1) Dawula, (2) Thammattama, (3) Geta Beraya, (4) Yak Beraya. Geta Beraya is the primary drum of Kandyan dance.",
|
| 43 |
+
"analysis_ta": "வினா: கண்டிய (உடரட்ட) நடன மரபின் முக்கிய தோற்கருவி எது? தெரிவுகள்: (1) தவுல, (2) தம்மட்டம, (3) கெட்ட பெரய, (4) யக் பெரய. கண்டிய நடனத்தின் பிரதான மேளம் கெட்ட பெரய ஆகும்.",
|
| 44 |
+
"answer": "3"
|
| 45 |
+
}
|
| 46 |
+
],
|
| 47 |
+
"stem": [
|
| 48 |
+
{
|
| 49 |
+
"question": "ශාක ප්රභාසංශ්ලේෂණ ක්රියාවලියේදී අතුරු ඵලයක් ලෙස පරිසරයට නිදහස් වන වායුව කුමක්ද?",
|
| 50 |
+
"choices": ["කාබන් ඩයොක්සයිඩ්", "ඔක්සිජන්", "නයිට්රජන්", "හයිඩ්රජන්"],
|
| 51 |
+
"analysis": "The question asks which gas is released as a byproduct of plant photosynthesis. Options: (1) Carbon dioxide, (2) Oxygen, (3) Nitrogen, (4) Hydrogen. Photosynthesis absorbs CO2 and releases Oxygen.",
|
| 52 |
+
"analysis_ta": "வினா: தாவர ஒளித்தொகுப்பின் போது பக்க விளைபொருளாகச் சூழலுக்கு விடுவிக்கப்படும் வாயு எது? தெரிவுகள்: (1) காபீரனீரொட்சைட்டு, (2) ஒட்சிசன், (3) நைதரசன், (4) ஐதரசன். ஒளித்தொகுப்பின் போது ஒட்சிசன் வாயு வெளியேற்றப்படுகிறது.",
|
| 53 |
+
"answer": "2"
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"question": "විද්යුත් ධාරාව මැනීම සඳහා භාවිත කරන ජාත්යන්තර සම්මත (SI) ඒකකය කුමක්ද?",
|
| 57 |
+
"choices": ["වෝල්ට් (V)", "ඕම් (Ω)", "වොට් (W)", "ඇම්පියර් (A)"],
|
| 58 |
+
"analysis": "The question asks for the SI unit used to measure electric current. Options: (1) Volt, (2) Ohm, (3) Watt, (4) Ampere. Electric current is measured in Amperes (A).",
|
| 59 |
+
"analysis_ta": "வினா: மின்னோட்டத்தை அளவிடப் பயன்படும் சர்வதேச நியம (SI) அலகு யாது? தெரிவுகள்: (1) வோல்ட் (V), (2) ஓம் (Ω), (3) வாட் (W), (4) அம்பியர் (A). மின்னோட்டத்தின் SI அலகு அம்பியர் (A) ஆகும்.",
|
| 60 |
+
"answer": "4"
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"question": "ජලයේ රසායනික සූත්රය නිවැරදිව දක්වා ඇත්තේ කවරේද?",
|
| 64 |
+
"choices": ["H2O", "CO2", "NaCl", "CH4"],
|
| 65 |
+
"analysis": "The question asks for the chemical formula of water. Options: (1) H2O, (2) CO2, (3) NaCl, (4) CH4. Water is H2O.",
|
| 66 |
+
"analysis_ta": "வினா: நீரின் இரசாயனச் சூத்திரம் எது? தெரிவுகள்: (1) H2O, (2) CO2, (3) NaCl, (4) CH4. நீரின் இரசாயனச் சூத்திரம் H2O ஆகும்.",
|
| 67 |
+
"answer": "1"
|
| 68 |
+
},
|
| 69 |
+
{
|
| 70 |
+
"question": "දිග මැනීම සඳහා භාවිත වන ජාත්යන්තර සම්මත (SI) ඒකකය කුමක්ද?",
|
| 71 |
+
"choices": ["මිලිමීටර්", "සෙන්ටිමීටර්", "මීටර්", "කිලෝමීටර්"],
|
| 72 |
+
"analysis": "The question asks for the SI base unit of length. Options: (1) millimeter, (2) centimeter, (3) meter, (4) kilometer. The SI base unit of length is the meter.",
|
| 73 |
+
"analysis_ta": "வினா: நீளத்தை அளவிடப் பயன்படும் சர்வதேச நியம (SI) அலகு எது? தெரிவுகள்: (1) மில்லிமீற்றர், (2) சென்ரிமீற்றர், (3) மீற்றர், (4) கிலோமீற்றர். நீளத்தின் SI அடிப்படை அலகு மீற்றர் ஆகும்.",
|
| 74 |
+
"answer": "3"
|
| 75 |
+
}
|
| 76 |
+
],
|
| 77 |
+
"social_science": [
|
| 78 |
+
{
|
| 79 |
+
"question": "ශ්රී ලංකාවේ මුදල් නෝට්ටු නිකුත් කිරීමේ නිල බලය හිමි ආයතන�� කුමක්ද?",
|
| 80 |
+
"choices": ["මුදල් අමාත්යාංශය", "ශ්රී ලංකා මහ බැංකුව", "ලංකා බැංකුව", "මහා භාණ්ඩාගාරය"],
|
| 81 |
+
"analysis": "The question asks which institution has official authority to issue currency notes in Sri Lanka. Options: (1) Ministry of Finance, (2) Central Bank of Sri Lanka, (3) Bank of Ceylon, (4) General Treasury. The Central Bank of Sri Lanka issues currency.",
|
| 82 |
+
"analysis_ta": "வினா: இலங்கையில் நாணயத்தாள்களை வெளியிடும் அதிகாரம் கொண்ட நிறுவனம் எது? தெரிவுகள்: (1) நிதி அமைச்சு, (2) இலங்கை மத்திய வங்கி, (3) இலங்கை வங்கி, (4) மகா திறைசேரி. இலங்கை மத்திய வங்கியே நாணயத்தாள்களை வெளியிடுகிறது.",
|
| 83 |
+
"answer": "2"
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"question": "නිෂ්පාදන සාධක සතරට අයත් නොවන සාධකය තෝරන්න.",
|
| 87 |
+
"choices": ["භූමිය", "ශ්රමය", "ප්රාග්ධනය", "උද්ධමනය"],
|
| 88 |
+
"analysis": "The question asks which item does NOT belong to the four factors of production. Options: (1) Land, (2) Labor, (3) Capital, (4) Inflation. Land, labor, capital, and entrepreneurship are factors of production; inflation is not.",
|
| 89 |
+
"analysis_ta": "வினா: நான்கு உற்பத்திக் காரணிகளில் அடங்காத ஒன்றைத் தெரிவு செய்க. தெரிவுகள்: (1) நிலம், (2) உழைப்பு, (3) மூலதனம், (4) பணவீக்கம். நிலம், உழைப்பு, மூலதனம், முயற்சியாண்மை என்பன உற்பத்திக் காரணிகள்; பணவீக்கம் உற்பத்திக் காரணி அல்ல.",
|
| 90 |
+
"answer": "4"
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"question": "ශ්රී ලංකාවේ දිගම ගංගාව කුමක්ද?",
|
| 94 |
+
"choices": ["මහවැලි ගඟ", "කැලණි ගඟ", "කළු ගඟ", "වලවේ ගඟ"],
|
| 95 |
+
"analysis": "The question asks for the longest river in Sri Lanka. Options: (1) Mahaweli River, (2) Kelani River, (3) Kalu River, (4) Walawe River. Mahaweli River (335 km) is the longest.",
|
| 96 |
+
"analysis_ta": "வினா: இலங்கையின் மிக நீளமான ஆறு எது? தெரிவுகள்: (1) மகாவலி கங்கை, (2) களனி கங்கை, (3) களு கங்கை, (4) வளவை கங்கை. மகாவலி கங்கை (335 கி.மீ) இலங்கையின் மிக நீளமான ஆறாகும்.",
|
| 97 |
+
"answer": "1"
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"question": "ශ්රී ලංකාවේ භූමි ප්රමාණය අනුව විශාලතම පළාත කුමක්ද?",
|
| 101 |
+
"choices": ["බස්නාහිර පළාත", "වයඹ පළාත", "උතුරු මැද පළාත", "දකුණු පළාත"],
|
| 102 |
+
"analysis": "The question asks for the largest province in Sri Lanka by land area. Options: (1) Western, (2) North Western, (3) North Central, (4) Southern. North Central Province is the largest by area.",
|
| 103 |
+
"analysis_ta": "வினா: நிலப்பரப்பின் அடிப்படையில் இலங்கையின் மிகப்பெரிய மாகாணம் எது? தெரிவுகள்: (1) மேல் மாகாணம், (2) வயம்ப மாகாணம், (3) வடமத்திய மாகாணம், (4) தென் மாகாணம். வடமத்திய மாகாணமே நிலப்பரப்பில் மிகப்பெரியது.",
|
| 104 |
+
"answer": "3"
|
| 105 |
+
}
|
| 106 |
+
],
|
| 107 |
+
"language": [
|
| 108 |
+
{
|
| 109 |
+
"question": "'ගම්පෙරළිය' නවකතාව රචනා කළ ලේඛකයා කවුරුන්ද?",
|
| 110 |
+
"choices": ["කුමාරතුංග මුනිදාස", "මාර්ටින් වික්රමසිංහ", "ඩබ්ලියු. ඒ. සිල්වා", "පියදාස සිරිසේන"],
|
| 111 |
+
"analysis": "The question asks who wrote the Sinhala novel 'Gamperaliya'. Options: (1) Kumaratunga Munidasa, (2) Martin Wickramasinghe, (3) W. A. Silva, (4) Piyadasa Sirisena. Gamperaliya was written by Martin Wickramasinghe.",
|
| 112 |
+
"analysis_ta": "வினா: 'கம்பெரலிய' நாவ���ை எழுதிய ஆசிரியர் யார்? தெரிவுகள்: (1) குமாரதுங்க முனிதாச, (2) மார்ட்டின் விக்கிரமசிங்க, (3) டபிள்யூ. ஏ. சில்வா, (4) பியதாச சிறிசேன. கம்பெரலிய நாவலை எழுதியவர் மார்ட்டின் விக்கிரமசிங்க ஆவார்.",
|
| 113 |
+
"answer": "2"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"question": "සිංහල ව්යාකරණයට අනුව උක්ත ආඛ්යාත සම්බන්ධය නිවැරදි වාක්යය තෝරන්න.",
|
| 117 |
+
"choices": ["ළමයි පොත් කියවයි.", "මම පාසල් ගියෝය.", "අපි ගීත ගයති.", "ගොවියෝ කුඹුරු කොටති."],
|
| 118 |
+
"analysis": "The question asks for the grammatically correct Sinhala subject-verb agreement. Options 1, 2, 3 mismatch plural/first-person subjects with third-person singular/plural verbs. Option 4 ('ගොවියෝ කුඹුරු කොටති') correctly pairs plural animate subject 'ගොවියෝ' with plural verb 'කොටති'.",
|
| 119 |
+
"analysis_ta": "வினா: சிங்கள இலக்கணத்தின்படி எழுவாய்-பயனிலை இயைபு சரியாக உள்ள வாக்கியத்தைத் தெரிவு செய்க. 4-வது தெரிவு ('ගොවියෝ කුඹුරු කොටති') பன்மை எழுவாயுடன் ('ගොවියෝ') பன்மை வினைமுற்றை ('කොටති') சரியாக இணைக்கிறது.",
|
| 120 |
+
"answer": "4"
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"question": "නූතන සම්මත සිංහල වර්ණ මාලාවේ අඩංගු මුළු අක්ෂර ගණන කීයද?",
|
| 124 |
+
"choices": ["60 කි.", "54 කි.", "36 කි.", "42 කි."],
|
| 125 |
+
"analysis": "The question asks for the total number of letters in the modern standard Sinhala alphabet (Nuthana Sinhala Varnamalawa). It contains 60 letters.",
|
| 126 |
+
"analysis_ta": "வினா: நவீன நியம சிங்கள நெடுங்கணக்கில் உள்ள மொத்த எழுத்துக்களின் எண்ணிக்கை யாது? தெரிவுகள்: (1) 60, (2) 54, (3) 36, (4) 42. நவீன சிங்கள நெடுங்கணக்கில் மொத்தம் 60 எழுத்துக்கள் உள்ளன.",
|
| 127 |
+
"answer": "1"
|
| 128 |
+
},
|
| 129 |
+
{
|
| 130 |
+
"question": "'හිරු' යන පදයට සමානාර්ථ පදයක් නොවන්නේ කුමක්ද?",
|
| 131 |
+
"choices": ["සූර්යයා", "දිනකර", "නිශාකර", "රවි"],
|
| 132 |
+
"analysis": "The question asks which word is NOT a synonym for 'Hiru' (Sun). Options: (1) Suryaya (Sun), (2) Dinakara (Sun), (3) Nishakara (Moon - night maker), (4) Ravi (Sun). Nishakara means Moon, not Sun.",
|
| 133 |
+
"analysis_ta": "வினா: 'ஹிரு' (சூரியன்) என்ற சொல்லுக்கு ஒத்த கருத்துச் சொல் அல்லாதது எது? தெரிவுகள்: (1) சூர்யயா (சூரியன்), (2) தினகர (சூரியன்), (3) நிஷாகர (சந்திரன்), (4) ரவி (சூரியன்). நிஷாகர என்பது சந்திரனைக் குறிக்கும்.",
|
| 134 |
+
"answer": "3"
|
| 135 |
+
}
|
| 136 |
+
],
|
| 137 |
+
"other": [
|
| 138 |
+
{
|
| 139 |
+
"question": "මිනිස් සිරුරේ වර්ධනයට සහ පටක අලුත්වැඩියාවට ප්රධාන වශයෙන් අවශ්ය වන පෝෂකය කුමක්ද?",
|
| 140 |
+
"choices": ["කාබෝහයිඩ්රේට්", "ප්රෝටීන්", "ලිපිඩ", "ඛනිජ ලවණ"],
|
| 141 |
+
"analysis": "The question asks which nutrient is primarily needed for human body growth and tissue repair. Options: (1) Carbohydrates, (2) Proteins, (3) Lipids, (4) Minerals. Proteins are responsible for growth and tissue repair.",
|
| 142 |
+
"analysis_ta": "வினா: மனித உடல் வளர்ச்சிக்கும் இழையங்களைப் பழுதுபார்த்தலுக்கும் பிரதானமாகத் தேவைப்படும் போசணைப் பொருள் எது? தெரிவுகள்: (1) காபோவைதரேற்று, (2) புரதம், (3) இலிப்பிட்டு, (4) கனியுப்பு. புரதமே உடல�� வளர்ச்சிக்குப் பிரதானமாகத் தேவைப்படுகிறது.",
|
| 143 |
+
"answer": "2"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"question": "සමබල ආහාර වේලක අඩංගු විය යුතු සංඝටකයක් නොවන්නේ කුමක්ද?",
|
| 147 |
+
"choices": ["විටමින්", "ප්රෝටීන්", "ජලය", "කෘත්රිම වර්ණක"],
|
| 148 |
+
"analysis": "The question asks what is NOT an essential component of a balanced diet. Options: (1) Vitamins, (2) Proteins, (3) Water, (4) Artificial colorings. Artificial colorings are not part of a healthy balanced diet.",
|
| 149 |
+
"analysis_ta": "வினா: சமநிலை உணவில் அடங்கக்கூடாத கூறு எது? தெரிவுகள்: (1) விற்றமின், (2) புரதம், (3) நீர், (4) செயற்கை நிறமூட்டிகள். செயற்கை நிறமூட்டிகள் சமநிலை உணவின் கூறு அல்ல.",
|
| 150 |
+
"answer": "4"
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"question": "පරිගණකයක මධ්ය සැකසුම් ඒකකය හඳුන්වන කෙටි නාමය කුමක්ද?",
|
| 154 |
+
"choices": ["CPU", "RAM", "ROM", "USB"],
|
| 155 |
+
"analysis": "The question asks for the abbreviation of a computer's Central Processing Unit. It is CPU.",
|
| 156 |
+
"analysis_ta": "வினா: கணினியின் மையச் செயற்பாட்டு அலகைக் குறிக்கும் சுருக்கப் பெயர் யாது? அது CPU ஆகும்.",
|
| 157 |
+
"answer": "1"
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"question": "ශාක වර්ධනය සඳහා අත්යවශ්ය මහා පෝෂක තුන වන්නේ,",
|
| 161 |
+
"choices": ["යකඩ, තඹ, සින්ක්", "කැල්සියම්, මැග්නීසියම්, ගෙන්දගම්", "නයිට්රජන්, පොස්පරස්, පොටෑසියම්", "බෝරෝන්, මැංගනීස්, ක්ලෝරීන්"],
|
| 162 |
+
"analysis": "The question asks for the three primary macronutrients essential for plant growth. Options: (3) Nitrogen, Phosphorus, Potassium (NPK). NPK are the three primary macronutrients.",
|
| 163 |
+
"analysis_ta": "வினா: தாவர வளர்ச்சிக்கு அத்தியாவசியமான மூன்று மாபோசணைப் பதார்த்தங்கள் யாவை? தெரிவு (3) நைதரசன், பொசுபரசு, பொட்டாசியம் (NPK) ஆகும்.",
|
| 164 |
+
"answer": "3"
|
| 165 |
+
}
|
| 166 |
+
]
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
# Standard 4 balanced exemplars ordered (2, 4, 1, 3) to break sequential bias
|
| 170 |
+
GLOBAL_BALANCED_EXEMPLARS = [
|
| 171 |
+
EXEMPLARS_BY_DOMAIN["humanities"][0], # answer: 2
|
| 172 |
+
EXEMPLARS_BY_DOMAIN["social_science"][1],# answer: 4
|
| 173 |
+
EXEMPLARS_BY_DOMAIN["stem"][2], # answer: 1
|
| 174 |
+
EXEMPLARS_BY_DOMAIN["language"][3], # answer: 3
|
| 175 |
+
]
|
| 176 |
+
|
| 177 |
+
|
| 178 |
+
def normalize_category(raw_category: str) -> str:
|
| 179 |
+
"""Normalizes dataset category strings (e.g., 'Social_science', 'social science', 'Humanities')."""
|
| 180 |
+
cat = (raw_category or "").strip().lower().replace(" ", "_")
|
| 181 |
+
if cat in EXEMPLARS_BY_DOMAIN:
|
| 182 |
+
return cat
|
| 183 |
+
return "other"
|
| 184 |
+
|
| 185 |
+
|
| 186 |
+
def build_few_shot_prompt(question_dict: dict, num_shots: int = 4, cot: bool = False, cot_lang: str = "en") -> str:
|
| 187 |
+
"""
|
| 188 |
+
Constructs a few-shot prompt with strictly balanced (2, 4, 1, 3) exemplars
|
| 189 |
+
followed by the target question.
|
| 190 |
+
If cot=True, includes a concise 1-line translation & fact-check Analysis (in English or Tamil) before Answer.
|
| 191 |
+
"""
|
| 192 |
+
subject = question_dict.get("subject", "සාමාන්ය දැනීම")
|
| 193 |
+
category = normalize_category(question_dict.get("category", ""))
|
| 194 |
+
|
| 195 |
+
if cot and cot_lang == "ta":
|
| 196 |
+
prompt_parts = [
|
| 197 |
+
f"Subject: {subject} (இலங்கைப் பாடத்திட்டம் - சிங்கள மூலம்).\n"
|
| 198 |
+
f"ஒவ்வொரு வினாவிற்கும் சிங்கள வினாவையும் தெரிவுகளையும் தமிழில் சுருக்கமாக மொழிபெயர்த்து ('Analysis:'), "
|
| 199 |
+
f"சரியான விடையைத் தீர்மானித்து 'Answer: <digit>' (1, 2, 3, or 4) என எழுதுக.\n"
|
| 200 |
+
]
|
| 201 |
+
elif cot:
|
| 202 |
+
prompt_parts = [
|
| 203 |
+
f"Subject: {subject} (Sri Lankan School Curriculum - Sinhala Medium).\n"
|
| 204 |
+
f"For each question, briefly translate the Sinhala question and options into English in 1-2 sentences ('Analysis:'), "
|
| 205 |
+
f"verify the curriculum fact, and output 'Answer: <digit>' (1, 2, 3, or 4).\n"
|
| 206 |
+
]
|
| 207 |
+
else:
|
| 208 |
+
prompt_parts = [
|
| 209 |
+
f"මෙය {subject} විෂයට අදාළ බහුවරණ ප්රශ්නයකි. පහත උදාහරණ පරිදි නිවැරදි පිළිතුරේ අංකය (1, 2, 3, හෝ 4) පමණක් තෝරන්න.\n"
|
| 210 |
+
]
|
| 211 |
+
|
| 212 |
+
# Select exemplars: domain specific if available, else global balanced
|
| 213 |
+
exemplars = GLOBAL_BALANCED_EXEMPLARS[:num_shots]
|
| 214 |
+
if category in EXEMPLARS_BY_DOMAIN and len(EXEMPLARS_BY_DOMAIN[category]) >= num_shots:
|
| 215 |
+
exemplars = EXEMPLARS_BY_DOMAIN[category][:num_shots]
|
| 216 |
+
|
| 217 |
+
for ex in exemplars:
|
| 218 |
+
opts_formatted = "\n".join([f"{idx+1}. {c}" for idx, c in enumerate(ex["choices"])])
|
| 219 |
+
if cot:
|
| 220 |
+
analysis_text = ex.get("analysis_ta", ex["analysis"]) if cot_lang == "ta" else ex["analysis"]
|
| 221 |
+
ex_block = (
|
| 222 |
+
f"ප්රශ්නය: {ex['question']}\n{opts_formatted}\n"
|
| 223 |
+
f"Analysis: {analysis_text}\n"
|
| 224 |
+
f"Answer: {ex['answer']}\n"
|
| 225 |
+
)
|
| 226 |
+
else:
|
| 227 |
+
ex_block = f"ප්රශ්නය: {ex['question']}\n{opts_formatted}\nපිළිතුර: {ex['answer']}\n"
|
| 228 |
+
prompt_parts.append(ex_block)
|
| 229 |
+
|
| 230 |
+
# Now the target question
|
| 231 |
+
q_text = question_dict.get("question", "").strip()
|
| 232 |
+
choices = question_dict.get("choices")
|
| 233 |
+
if choices is None:
|
| 234 |
+
choices = question_dict.get("options", [])
|
| 235 |
+
if isinstance(choices, dict):
|
| 236 |
+
keys = sorted(choices.keys(), key=lambda x: str(x))
|
| 237 |
+
opt_list = [choices[k] for k in keys]
|
| 238 |
+
elif isinstance(choices, list):
|
| 239 |
+
opt_list = choices
|
| 240 |
+
else:
|
| 241 |
+
opt_list = []
|
| 242 |
+
|
| 243 |
+
target_opts = "\n".join([f"{idx+1}. {c}" for idx, c in enumerate(opt_list)])
|
| 244 |
+
if cot:
|
| 245 |
+
target_block = f"ප්රශ්නය: {q_text}\n{target_opts}\nAnalysis:"
|
| 246 |
+
else:
|
| 247 |
+
target_block = f"දැන් මෙම ප්රශ්නයට පිළිතුරු දෙන්න:\nප්රශ්නය: {q_text}\n{target_opts}\nපිළිතුර: "
|
| 248 |
+
prompt_parts.append(target_block)
|
| 249 |
+
|
| 250 |
+
return "\n".join(prompt_parts)
|
training/src/few_shot_runner.py
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
# Historical source snapshot. Comments about accuracy, data origin, or compliance
|
| 3 |
+
# are author claims, not verification; see training/README.md and REPRODUCIBILITY.md.
|
| 4 |
+
"""
|
| 5 |
+
Few-Shot In-Context Inference Runner for Sinhala MMLU Shared Task
|
| 6 |
+
Uses 100% external, balanced exemplars (2, 4, 1, 3) to eliminate position bias and ground the LLM.
|
| 7 |
+
Supports:
|
| 8 |
+
- Rapid local evaluation on the gold validation set (--val_only)
|
| 9 |
+
- Cross-Lingual Translate-and-Reason CoT mode (--cot) in English (--cot_lang en) or Tamil (--cot_lang ta)
|
| 10 |
+
- Thinking mode control (--think / default think=False) for Qwen 3 / 3.5 models
|
| 11 |
+
- Cyclic option-permutation debiasing (--passes 1, 2, or 4)
|
| 12 |
+
- Reliable checkpoint resuming
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
import json
|
| 16 |
+
import argparse
|
| 17 |
+
import sys
|
| 18 |
+
from collections import Counter
|
| 19 |
+
from pathlib import Path
|
| 20 |
+
|
| 21 |
+
# Add src to sys.path
|
| 22 |
+
sys.path.insert(0, str(Path(__file__).parent))
|
| 23 |
+
from few_shot_prompts import build_few_shot_prompt
|
| 24 |
+
from baseline_runner import (
|
| 25 |
+
extract_answer_digit,
|
| 26 |
+
load_all_questions,
|
| 27 |
+
load_val_questions,
|
| 28 |
+
load_existing_checkpoint,
|
| 29 |
+
query_ollama_chat,
|
| 30 |
+
SYSTEM_EXAM_PROMPT,
|
| 31 |
+
SYSTEM_COT_PROMPT,
|
| 32 |
+
)
|
| 33 |
+
|
| 34 |
+
SYSTEM_COT_TA_PROMPT = (
|
| 35 |
+
"You are an expert examiner for the Sri Lankan school curriculum (Sinhala & Tamil medium). "
|
| 36 |
+
"For each multiple-choice question, write a concise 1-2 sentence Tamil translation and fact-check ('Analysis:'), "
|
| 37 |
+
"then end on a new line with strictly 'Answer: <digit>' (where <digit> is 1, 2, 3, or 4)."
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
def get_choices_list(q: dict) -> list:
|
| 42 |
+
choices = q.get("choices")
|
| 43 |
+
if choices is None:
|
| 44 |
+
choices = q.get("options", [])
|
| 45 |
+
if isinstance(choices, dict):
|
| 46 |
+
keys = sorted(choices.keys(), key=lambda x: str(x))
|
| 47 |
+
return [choices[k] for k in keys]
|
| 48 |
+
elif isinstance(choices, list):
|
| 49 |
+
return list(choices)
|
| 50 |
+
return []
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def predict_single_or_debiased(
|
| 54 |
+
q: dict,
|
| 55 |
+
model_name: str,
|
| 56 |
+
num_shots: int = 4,
|
| 57 |
+
think: bool = False,
|
| 58 |
+
cot: bool = False,
|
| 59 |
+
cot_lang: str = "en",
|
| 60 |
+
passes: int = 1
|
| 61 |
+
) -> tuple[str, str]:
|
| 62 |
+
"""
|
| 63 |
+
Runs 1-pass or multi-pass cyclic option-permutation inference on question q.
|
| 64 |
+
Returns (raw_debug_str, chosen_original_digit).
|
| 65 |
+
"""
|
| 66 |
+
if cot:
|
| 67 |
+
sys_prompt = SYSTEM_COT_TA_PROMPT if cot_lang == "ta" else SYSTEM_COT_PROMPT
|
| 68 |
+
else:
|
| 69 |
+
sys_prompt = SYSTEM_EXAM_PROMPT
|
| 70 |
+
|
| 71 |
+
orig_choices = get_choices_list(q)
|
| 72 |
+
if passes <= 1 or len(orig_choices) != 4:
|
| 73 |
+
prompt = build_few_shot_prompt(q, num_shots=num_shots, cot=cot, cot_lang=cot_lang)
|
| 74 |
+
raw, ans_digit = query_ollama_chat(model_name, sys_prompt, prompt, think=think, cot=cot)
|
| 75 |
+
return raw, ans_digit
|
| 76 |
+
|
| 77 |
+
# Multi-pass cyclic permutation debiasing
|
| 78 |
+
shifts = [0, 2] if passes == 2 else [0, 1, 2, 3][:passes]
|
| 79 |
+
votes = []
|
| 80 |
+
raw_logs = []
|
| 81 |
+
|
| 82 |
+
for s in shifts:
|
| 83 |
+
rotated_choices = orig_choices[s:] + orig_choices[:s]
|
| 84 |
+
q_rot = dict(q)
|
| 85 |
+
q_rot["choices"] = rotated_choices
|
| 86 |
+
prompt = build_few_shot_prompt(q_rot, num_shots=num_shots, cot=cot, cot_lang=cot_lang)
|
| 87 |
+
raw, rot_digit = query_ollama_chat(model_name, sys_prompt, prompt, think=think, cot=cot)
|
| 88 |
+
rot_idx = int(rot_digit) - 1 if rot_digit in {"1", "2", "3", "4"} else 0
|
| 89 |
+
orig_idx = (rot_idx + s) % 4
|
| 90 |
+
orig_digit = str(orig_idx + 1)
|
| 91 |
+
votes.append(orig_digit)
|
| 92 |
+
raw_logs.append(f"s{s}:{rot_digit}->orig={orig_digit}")
|
| 93 |
+
|
| 94 |
+
counts = Counter(votes)
|
| 95 |
+
best_digit = counts.most_common(1)[0][0]
|
| 96 |
+
return ",".join(raw_logs), best_digit
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
def run_few_shot(
|
| 100 |
+
data_dir: str,
|
| 101 |
+
output_file: str,
|
| 102 |
+
model_name: str,
|
| 103 |
+
num_shots: int = 4,
|
| 104 |
+
val_only: bool = False,
|
| 105 |
+
gold_val_file: str = "data/gold_val_41.jsonl",
|
| 106 |
+
resume: bool = True,
|
| 107 |
+
think: bool = False,
|
| 108 |
+
cot: bool = False,
|
| 109 |
+
cot_lang: str = "en",
|
| 110 |
+
passes: int = 1
|
| 111 |
+
):
|
| 112 |
+
output_path = Path(output_file)
|
| 113 |
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
| 114 |
+
|
| 115 |
+
if val_only:
|
| 116 |
+
val_path = Path(gold_val_file)
|
| 117 |
+
if not val_path.exists():
|
| 118 |
+
print(f"Error: Gold validation file '{gold_val_file}' not found!")
|
| 119 |
+
sys.exit(1)
|
| 120 |
+
questions = load_val_questions(val_path)
|
| 121 |
+
print(f"Loaded {len(questions)} validation questions for rapid local benchmark.")
|
| 122 |
+
else:
|
| 123 |
+
questions = load_all_questions(Path(data_dir))
|
| 124 |
+
print(f"Loaded {len(questions)} full exam questions across easy, medium, and hard.")
|
| 125 |
+
|
| 126 |
+
existing_preds = {}
|
| 127 |
+
if resume and output_path.exists():
|
| 128 |
+
existing_preds = load_existing_checkpoint(output_path)
|
| 129 |
+
print(f"Resuming: Found {len(existing_preds)} existing predictions in '{output_file}'.")
|
| 130 |
+
|
| 131 |
+
predictions = []
|
| 132 |
+
|
| 133 |
+
print(f"Running {num_shots}-Shot inference with Ollama model: '{model_name}' (think={think}, cot={cot}, cot_lang={cot_lang}, passes={passes})...")
|
| 134 |
+
|
| 135 |
+
for i, q in enumerate(questions, 1):
|
| 136 |
+
q_no = q["q_no"]
|
| 137 |
+
subj = q.get("subject", "general")
|
| 138 |
+
cat = q.get("category", "general")
|
| 139 |
+
lvl = q.get("_level", "medium").lower()
|
| 140 |
+
|
| 141 |
+
q_key = f"{lvl}_{subj}_{q_no}"
|
| 142 |
+
if resume and q_key in existing_preds:
|
| 143 |
+
predictions.append(existing_preds[q_key])
|
| 144 |
+
continue
|
| 145 |
+
|
| 146 |
+
raw_info = ""
|
| 147 |
+
try:
|
| 148 |
+
raw_info, ans_digit = predict_single_or_debiased(
|
| 149 |
+
q, model_name=model_name, num_shots=num_shots, think=think, cot=cot, cot_lang=cot_lang, passes=passes
|
| 150 |
+
)
|
| 151 |
+
except Exception as e:
|
| 152 |
+
print(f"[{i}/{len(questions)}] Error on Q#{q_no} ({subj}): {e}. Using fallback 1.")
|
| 153 |
+
ans_digit = "1"
|
| 154 |
+
|
| 155 |
+
record = {
|
| 156 |
+
"q_no": q_no,
|
| 157 |
+
"subject": subj,
|
| 158 |
+
"category": cat,
|
| 159 |
+
"level": lvl,
|
| 160 |
+
"answer": str(ans_digit)
|
| 161 |
+
}
|
| 162 |
+
predictions.append(record)
|
| 163 |
+
|
| 164 |
+
if i % 10 == 0 or i == len(questions):
|
| 165 |
+
snippet = raw_info.strip().replace("\n", " ")[-60:]
|
| 166 |
+
print(f"Progress: {i}/{len(questions)} | Q#{q_no} ({subj}) [{snippet}] => {ans_digit}")
|
| 167 |
+
with open(output_path, "w", encoding="utf-8") as fp:
|
| 168 |
+
for p in predictions:
|
| 169 |
+
fp.write(json.dumps(p, ensure_ascii=False) + "\n")
|
| 170 |
+
|
| 171 |
+
with open(output_path, "w", encoding="utf-8") as fp:
|
| 172 |
+
for p in predictions:
|
| 173 |
+
fp.write(json.dumps(p, ensure_ascii=False) + "\n")
|
| 174 |
+
|
| 175 |
+
print(f"\nDone! {len(predictions)} predictions written to {output_file}")
|
| 176 |
+
|
| 177 |
+
|
| 178 |
+
def main():
|
| 179 |
+
parser = argparse.ArgumentParser(description="Sinhala MMLU Few-Shot Runner")
|
| 180 |
+
parser.add_argument("--data_dir", default="data", help="Path to data directory")
|
| 181 |
+
parser.add_argument("--output", default="data/predictions_few_shot.jsonl", help="Output path")
|
| 182 |
+
parser.add_argument("--model", default="qwen3.5:4b", help="Model name in Ollama")
|
| 183 |
+
parser.add_argument("--shots", type=int, default=4, help="Number of in-context exemplars (e.g. 4)")
|
| 184 |
+
parser.add_argument("--val_only", action="store_true", help="Run only on the 41-question local gold benchmark")
|
| 185 |
+
parser.add_argument("--gold_val_file", default="data/gold_val_41.jsonl", help="Gold validation benchmark file")
|
| 186 |
+
parser.add_argument("--no_resume", action="store_true", help="Overwrite existing output file")
|
| 187 |
+
parser.add_argument("--think", action="store_true", help="Enable <think> reasoning mode for Qwen 3 / 3.5 models")
|
| 188 |
+
parser.add_argument("--cot", action="store_true", help="Enable concise Cross-Lingual Translate-and-Reason CoT mode")
|
| 189 |
+
parser.add_argument("--cot_lang", default="en", choices=["en", "ta"], help="Target bridge language for CoT ('en' or 'ta')")
|
| 190 |
+
parser.add_argument("--passes", type=int, default=1, choices=[1, 2, 4], help="Cyclic option-permutation passes (1, 2, or 4)")
|
| 191 |
+
args = parser.parse_args()
|
| 192 |
+
|
| 193 |
+
run_few_shot(
|
| 194 |
+
args.data_dir,
|
| 195 |
+
args.output,
|
| 196 |
+
args.model,
|
| 197 |
+
num_shots=args.shots,
|
| 198 |
+
val_only=args.val_only,
|
| 199 |
+
gold_val_file=args.gold_val_file,
|
| 200 |
+
resume=not args.no_resume,
|
| 201 |
+
think=args.think,
|
| 202 |
+
cot=args.cot,
|
| 203 |
+
cot_lang=args.cot_lang,
|
| 204 |
+
passes=args.passes
|
| 205 |
+
)
|
| 206 |
+
|
| 207 |
+
|
| 208 |
+
if __name__ == "__main__":
|
| 209 |
+
main()
|
training/src/package_submission.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Historical source snapshot. Comments about accuracy, data origin, or compliance
|
| 2 |
+
# are author claims, not verification; see training/README.md and REPRODUCIBILITY.md.
|
| 3 |
+
"""
|
| 4 |
+
Submission Packager and Validator for Sinhala MMLU Shared Task
|
| 5 |
+
Ensures predictions match Codabench format requirements:
|
| 6 |
+
- Valid JSON on each line
|
| 7 |
+
- Required keys: 'q_no', 'subject', 'category', 'level', 'answer'
|
| 8 |
+
- Answer must be non-empty string index ('1', '2', '3', '4', '5')
|
| 9 |
+
- Creates predictions.zip containing predictions.jsonl
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import json
|
| 13 |
+
import zipfile
|
| 14 |
+
import sys
|
| 15 |
+
from pathlib import Path
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def validate_and_package(predictions_file: str, output_zip: str = None) -> bool:
|
| 19 |
+
pred_path = Path(predictions_file)
|
| 20 |
+
if not pred_path.exists():
|
| 21 |
+
print(f"Error: {predictions_file} does not exist!")
|
| 22 |
+
return False
|
| 23 |
+
|
| 24 |
+
if output_zip is None:
|
| 25 |
+
output_zip = pred_path.parent / "predictions.zip"
|
| 26 |
+
else:
|
| 27 |
+
output_zip = Path(output_zip)
|
| 28 |
+
|
| 29 |
+
required_keys = {"q_no", "subject", "category", "level", "answer"}
|
| 30 |
+
total_lines = 0
|
| 31 |
+
valid_lines = 0
|
| 32 |
+
errors = []
|
| 33 |
+
|
| 34 |
+
with open(pred_path, "r", encoding="utf-8") as f:
|
| 35 |
+
for idx, line in enumerate(f, 1):
|
| 36 |
+
line = line.strip()
|
| 37 |
+
if not line:
|
| 38 |
+
continue
|
| 39 |
+
total_lines += 1
|
| 40 |
+
try:
|
| 41 |
+
record = json.loads(line)
|
| 42 |
+
except json.JSONDecodeError as e:
|
| 43 |
+
errors.append(f"Line {idx}: Malformed JSON ({e})")
|
| 44 |
+
continue
|
| 45 |
+
|
| 46 |
+
missing = required_keys - set(record.keys())
|
| 47 |
+
if missing:
|
| 48 |
+
errors.append(f"Line {idx}: Missing keys {missing}")
|
| 49 |
+
continue
|
| 50 |
+
|
| 51 |
+
ans = str(record["answer"]).strip()
|
| 52 |
+
if not ans:
|
| 53 |
+
errors.append(f"Line {idx}: Empty answer")
|
| 54 |
+
continue
|
| 55 |
+
|
| 56 |
+
valid_lines += 1
|
| 57 |
+
|
| 58 |
+
print(f"Validated {valid_lines}/{total_lines} prediction records.")
|
| 59 |
+
if errors:
|
| 60 |
+
print(f"Found {len(errors)} validation errors:")
|
| 61 |
+
for err in errors[:10]:
|
| 62 |
+
print(" -", err)
|
| 63 |
+
if len(errors) > 10:
|
| 64 |
+
print(f" ... and {len(errors) - 10} more errors.")
|
| 65 |
+
return False
|
| 66 |
+
|
| 67 |
+
print(f"Packing {pred_path} into {output_zip}...")
|
| 68 |
+
with zipfile.ZipFile(output_zip, "w", zipfile.ZIP_DEFLATED) as z:
|
| 69 |
+
# Note: Codabench requires the file inside the zip to be named predictions.jsonl
|
| 70 |
+
z.write(pred_path, arcname="predictions.jsonl")
|
| 71 |
+
|
| 72 |
+
print(f"SUCCESS: Submission ready at {output_zip}")
|
| 73 |
+
print("Ready to upload to Codabench (up to 3 submissions/day).")
|
| 74 |
+
return True
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
if __name__ == "__main__":
|
| 78 |
+
if len(sys.argv) < 2:
|
| 79 |
+
print("Usage: python package_submission.py <path/to/predictions.jsonl> [path/to/output.zip]")
|
| 80 |
+
sys.exit(1)
|
| 81 |
+
|
| 82 |
+
input_file = sys.argv[1]
|
| 83 |
+
out_file = sys.argv[2] if len(sys.argv) > 2 else None
|
| 84 |
+
success = validate_and_package(input_file, out_file)
|
| 85 |
+
sys.exit(0 if success else 1)
|
training/src/prompts.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Historical source snapshot. Comments about accuracy, data origin, or compliance
|
| 2 |
+
# are author claims, not verification; see training/README.md and REPRODUCIBILITY.md.
|
| 3 |
+
"""
|
| 4 |
+
SinhalaMMLU Official Prompt Templates
|
| 5 |
+
Derived from the EMNLP 2025 benchmark paper:
|
| 6 |
+
'SinhalaMMLU: A Comprehensive Benchmark for Evaluating Multitask Language Understanding in Sinhala'
|
| 7 |
+
(Pramodya et al., 2025)
|
| 8 |
+
"""
|
| 9 |
+
|
| 10 |
+
SINHALA_PROMPT_4OPT = """මෙය {subject} විෂයට අදාළ බහුවරණ ප්රශ්නයකි. පහත ප්රශ්නයට 1, 2, 3, 4 යන පිළිතුරු වලින් නිවැරදි හෝ ඉතාමත් ගැළපෙන පිළිතුර තෝරන්න.
|
| 11 |
+
ප්රශ්නය: {question}
|
| 12 |
+
1. {opt1}
|
| 13 |
+
2. {opt2}
|
| 14 |
+
3. {opt3}
|
| 15 |
+
4. {opt4}
|
| 16 |
+
පිළිතුර: """
|
| 17 |
+
|
| 18 |
+
SINHALA_PROMPT_5OPT = """මෙය {subject} විෂයට අදාළ බහුවරණ ප්රශ්නයකි. පහත ප්රශ්නයට 1, 2, 3, 4, 5 යන පිළිතුරු වලින් නිවැරදි හෝ ඉතාමත් ගැළපෙන පිළිතුර තෝරන්න.
|
| 19 |
+
ප්රශ්නය: {question}
|
| 20 |
+
1. {opt1}
|
| 21 |
+
2. {opt2}
|
| 22 |
+
3. {opt3}
|
| 23 |
+
4. {opt4}
|
| 24 |
+
5. {opt5}
|
| 25 |
+
පිළිතුර: """
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def build_prompt(question_dict: dict) -> str:
|
| 29 |
+
"""
|
| 30 |
+
Builds the standardized Sinhala prompt based on question dictionary.
|
| 31 |
+
Handles 'choices' (list) and 'options' (dict or list).
|
| 32 |
+
"""
|
| 33 |
+
subject = question_dict.get("subject", "").strip()
|
| 34 |
+
question = question_dict.get("question", "").strip()
|
| 35 |
+
|
| 36 |
+
# The dataset uses 'choices', but support 'options' as well
|
| 37 |
+
choices = question_dict.get("choices")
|
| 38 |
+
if choices is None:
|
| 39 |
+
choices = question_dict.get("options", [])
|
| 40 |
+
|
| 41 |
+
if isinstance(choices, dict):
|
| 42 |
+
keys = sorted(choices.keys(), key=lambda x: str(x))
|
| 43 |
+
opt_list = [choices[k] for k in keys]
|
| 44 |
+
elif isinstance(choices, list):
|
| 45 |
+
opt_list = choices
|
| 46 |
+
else:
|
| 47 |
+
opt_list = []
|
| 48 |
+
|
| 49 |
+
if len(opt_list) >= 5:
|
| 50 |
+
return SINHALA_PROMPT_5OPT.format(
|
| 51 |
+
subject=subject or "සාමාන්ය",
|
| 52 |
+
question=question,
|
| 53 |
+
opt1=opt_list[0],
|
| 54 |
+
opt2=opt_list[1],
|
| 55 |
+
opt3=opt_list[2],
|
| 56 |
+
opt4=opt_list[3],
|
| 57 |
+
opt5=opt_list[4],
|
| 58 |
+
)
|
| 59 |
+
elif len(opt_list) >= 4:
|
| 60 |
+
return SINHALA_PROMPT_4OPT.format(
|
| 61 |
+
subject=subject or "සාමාන්ය",
|
| 62 |
+
question=question,
|
| 63 |
+
opt1=opt_list[0],
|
| 64 |
+
opt2=opt_list[1],
|
| 65 |
+
opt3=opt_list[2],
|
| 66 |
+
opt4=opt_list[3],
|
| 67 |
+
)
|
| 68 |
+
else:
|
| 69 |
+
opts_formatted = "\n".join([f"{i+1}. {opt}" for i, opt in enumerate(opt_list)])
|
| 70 |
+
return f"ප්රශ්නය: {question}\n{opts_formatted}\nපිළිතුර: "
|
verify_submission.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Audit historical artifacts without calling a model or using gold answers."""
|
| 2 |
+
import argparse
|
| 3 |
+
import ast
|
| 4 |
+
import hashlib
|
| 5 |
+
import importlib.util
|
| 6 |
+
import json
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
HERE = Path(__file__).resolve().parent
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def load_module(name, path):
|
| 13 |
+
spec = importlib.util.spec_from_file_location(name, path)
|
| 14 |
+
m = importlib.util.module_from_spec(spec)
|
| 15 |
+
spec.loader.exec_module(m)
|
| 16 |
+
return m
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
def check(condition, message):
|
| 20 |
+
if not condition:
|
| 21 |
+
raise ValueError(message)
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
def audit(data=None):
|
| 25 |
+
merger = load_module('v9_merge', HERE / 'training/ensemble_v9.py')
|
| 26 |
+
runner = load_module('v9_runner', HERE / 'inference.py')
|
| 27 |
+
manifest = json.loads((HERE / 'submission_manifest.json').read_text())
|
| 28 |
+
submitted = (HERE / 'predictions.jsonl').read_bytes()
|
| 29 |
+
check(hashlib.sha256(submitted).hexdigest() == manifest['predictions_sha256'], 'Submitted prediction hash changed')
|
| 30 |
+
maps = {}
|
| 31 |
+
for name, entry in manifest['passes'].items():
|
| 32 |
+
path = HERE / entry['file']
|
| 33 |
+
check(hashlib.sha256(path.read_bytes()).hexdigest() == entry['sha256'], f'Pass hash changed: {name}')
|
| 34 |
+
maps[name] = merger.load_map(path)
|
| 35 |
+
check(len(maps[name]) == entry['rows'], f'Pass row count changed: {name}')
|
| 36 |
+
records = [json.loads(line) for line in submitted.splitlines() if line.strip()]
|
| 37 |
+
keys = [merger.key_of(r) for r in records]
|
| 38 |
+
check(len(keys) == len(set(keys)), 'Duplicate submitted key')
|
| 39 |
+
check(all(r['answer'] in {'1','2','3','4'} for r in records), 'Invalid submitted answer')
|
| 40 |
+
check(set(keys) == set(maps['p1']), 'Pass 1 and submission keys differ')
|
| 41 |
+
check(all(set(m) <= set(keys) for m in maps.values()), 'Unknown key in a pass')
|
| 42 |
+
pos = {tuple(k) for k in json.loads((HERE / 'training/passes/positional_option_keys.json').read_text())}
|
| 43 |
+
check(pos <= set(keys), 'Unknown positional key')
|
| 44 |
+
rebuilt = ''.join(json.dumps({**r, 'answer': merger.merge_one(merger.key_of(r), pos, **maps)}, ensure_ascii=False)+'\n' for r in records).encode()
|
| 45 |
+
check(rebuilt == submitted, 'Archival vote does not reproduce submitted bytes')
|
| 46 |
+
check(all(runner.merge_one(k, pos, **maps) == merger.merge_one(k, pos, **maps) for k in keys), 'Runner and archive merger disagree')
|
| 47 |
+
result = {'submission_id': manifest['codabench_submission_id'], 'rows':len(records), 'sha256':manifest['predictions_sha256'],
|
| 48 |
+
'saved_pass_merge_byte_identical':True, 'pass_counts':{k:len(v) for k,v in maps.items()},
|
| 49 |
+
'fresh_model_inference_verified':False, 'rules_compliance_certified':False}
|
| 50 |
+
if data:
|
| 51 |
+
qs = runner.prepare(runner.load_questions('', local_data=data))
|
| 52 |
+
check({runner.kof(q) for q in qs} == set(keys), 'Dataset key set differs')
|
| 53 |
+
actual_pos = {runner.kof(q) for q in qs if runner.POS_RE.search(' '.join(map(str,q['choices'])))}
|
| 54 |
+
check(actual_pos == pos, 'Recorded positional filter differs from input text')
|
| 55 |
+
priority = runner.priority_order(qs, maps['cot'], maps['dr'])
|
| 56 |
+
t2 = {runner.kof(q) for q in priority if q['_level']=='hard' or maps['cot'][runner.kof(q)] != maps['dr'][runner.kof(q)]}
|
| 57 |
+
t3 = {runner.kof(q) for q in qs if (maps['p1'][runner.kof(q)] != maps['p2'][runner.kof(q)] if runner.kof(q) in maps['p2'] else maps['p1'][runner.kof(q)] != maps['cot'][runner.kof(q)] or maps['p1'][runner.kof(q)] != maps['dr'][runner.kof(q)])}
|
| 58 |
+
check(t2 == set(maps['p2']), 'Pass 2 target rule mismatch')
|
| 59 |
+
check(t3 == set(maps['p3']), 'Pass 3 target rule mismatch')
|
| 60 |
+
mac_rows = [json.loads(l) for l in (HERE / manifest['passes']['mac']['file']).read_text().splitlines() if l.strip()]
|
| 61 |
+
check([merger.key_of(r) for r in mac_rows] == [runner.kof(q) for q in priority[:len(mac_rows)]], 'Mac prefix does not match original scheduler')
|
| 62 |
+
source = ast.parse((HERE / 'training/evidence/original_cell5_pass4_pass5.py').read_text())
|
| 63 |
+
literal = None
|
| 64 |
+
for node in source.body:
|
| 65 |
+
if isinstance(node, ast.Assign) and any(isinstance(t, ast.Name) and t.id=='TARGET_IDX' for t in node.targets):
|
| 66 |
+
literal = next(n.value for n in ast.walk(node.value) if isinstance(n,ast.Constant) and isinstance(n.value,str) and ',' in n.value and len(n.value) > 10)
|
| 67 |
+
check(literal is not None, 'Original target indices not found')
|
| 68 |
+
indices = {int(v.strip()) for v in literal.split(',') if v.strip()}
|
| 69 |
+
canonical = sorted(qs, key=lambda q:(runner.LEVEL_RANK[q['_level']],q['_file']))
|
| 70 |
+
check({runner.kof(q) for j,q in enumerate(canonical) if j in indices} == t3, 'Original literal target set differs')
|
| 71 |
+
t45 = t3 - pos
|
| 72 |
+
for n in ['p4','p5']:
|
| 73 |
+
check(set(maps[n]) <= t45, f'Unexpected {n} key')
|
| 74 |
+
examples = json.loads((HERE / 'data/few_shot_examples.json').read_text())
|
| 75 |
+
qtexts = {' '.join(q['question'].split()) for q in qs}
|
| 76 |
+
overlap = [{'category':cat,'index':j} for cat,exs in examples.items() for j,ex in enumerate(exs) if ' '.join(ex['question'].split()) in qtexts]
|
| 77 |
+
result['input_checks'] = {'pass2_targets':len(t2),'pass3_targets':len(t3),'literal_notebook_targets_match':True,
|
| 78 |
+
'pass45_targets':len(t45),'mac_priority_prefix_match':True,
|
| 79 |
+
'omitted_keys':{n:sorted([list(k) for k in t45-set(maps[n])],key=str) for n in ['p4','p5']},
|
| 80 |
+
'few_shot_exact_text_overlaps':overlap,
|
| 81 |
+
'overlap_check_limit':'Exact normalized question text only; not semantic overlap or contamination certification.'}
|
| 82 |
+
return result
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
def main():
|
| 86 |
+
ap = argparse.ArgumentParser(description=__doc__)
|
| 87 |
+
ap.add_argument('--data', help='optional local folder containing easy/medium/hard question JSON')
|
| 88 |
+
ap.add_argument('--report', help='optional JSON report path')
|
| 89 |
+
args = ap.parse_args()
|
| 90 |
+
result = audit(args.data)
|
| 91 |
+
text = json.dumps(result, ensure_ascii=False, indent=2)+'\n'
|
| 92 |
+
if args.report:
|
| 93 |
+
Path(args.report).write_text(text)
|
| 94 |
+
print(text)
|
| 95 |
+
|
| 96 |
+
|
| 97 |
+
if __name__ == '__main__':
|
| 98 |
+
main()
|