Controlul calității pentru examenele scanate cu alegere multiplă

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R/exameneși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

Ghid pas cu pas pentru utilizarea NOPS_FIX () pentru rezolvarea problemelor care au apărut în timpul scanării examenelor NOPS scrise la R/examene.

Controlul calității pentru examenele scanate cu alegere multiplă

Prezentare generală

Pachetul R/Exams oferă un flux de lucru pentru generare (exams2nops()), scanarea (nops_scan()) și evaluarea automată (nops_eval()) Examene de alegere multiplă la scară largă, consultați Tutorialul NOPS corespunzător pentru mai multe detalii.

Recent, o altă funcție nops_fix() S -a adăugat la pachetul care ajută la găsirea și corectarea problemelor care au apărut la citirea examenelor scanate și care ar putea împiedica procesul de evaluare automată. Problemele tipice includ scanări care sunt rotite sau cu markere de scaner corupte, căsuțe de răspuns care nu sunt bifate sau completate corect, sau verificări lipsă din casete pentru ID -urile de înregistrare, printre altele. Prin urmare, nops_fix() ajută examinatorul să rezolve astfel de probleme după nops_scan() și înainte nops_eval() pentru a asigura o notare exactă.

În acest tutorial, evidențiem caracteristicile cheie ale nops_fix():

  1. Afișarea automată a foilor problematice
  2. Solicitarea corecțiilor manuale
  3. Verificări specializate pentru modele de răspuns implauzibile
  4. Revizuirea manuală a foilor de examen specifice

Acestea sunt ilustrate prin fixarea scanării PDF din două examene demo: unul cu exerciții cu o singură alegere (și doar probleme mai mici) și unul cu exerciții cu alegere multiplă (și probleme mai severe). Câteva comentarii mai detaliate despre toate caracteristicile sunt furnizate chiar la sfârșitul acestui tutorial.

Demo 1: examen cu o singură alegere cu probleme tipice

Creați examen

În primul rând, generăm cinci PDF-uri (într-un nou subdirector „NOPS”) dintr-un examen demo cu cinci exerciții cu o singură alegere (toate furnizate în pachet: Swisscapital, RLOGO, Deriv2, Fruit2, Hessian).

.

creacrea
library("exams")
sc <- c("swisscapital.Rmd", "Rlogo.Rmd", "deriv2.Rmd", "fruit2.Rmd", "hessian.Rmd")
set.seed(403)
exams2nops(sc, n = 5, dir = "nops", date = "2024-10-07")

Efectuați rezultatele examenelor și scanează

Să presupunem că am efectuat examenul cu trei participanți și le-am scanat foile de examen (prima pagină), rotiți cu susul în jos (facilitând de obicei scanarea, deoarece colțul din stânga sus este deteriorat de capse).

examenexamen
scanarescanare

Aici, puteți descărca fișierul PDF Scans-schoice.pdf:

SCANS-SCHOICE.pdfSCANS-SCHOICE.pdf

Apoi putem citi informațiile din foile scanate prin intermediul nops_scan()rezultând un fișier nops_scan_*.zip. * Placeholder va corespunde datei/orei în care rulați codul. Fișierul conține cele trei foi de examen scanate convertite în PNG împreună cu un fișier text Daten.txt conținând informațiile pe care R le -a extras din foile scanate.

nops_scan("scans-schoice.pdf", rotate = TRUE)

Rezultatele scanării și evaluarea finală

Ulterior, apelând la funcție nops_fix() Fără argumente nu caută automat fișiere numite nops_scan_*.zip și verifică eventualele erori evidente, cum ar fi ID -urile de înregistrare introduse incorect în fișele demo furnizate.

evaluaevalua
nops_fix()

Când rulați codul, R afișează o secțiune a foii de examen și vă solicită să introduceți manual numărul de înregistrare corect. În acest caz, programul nu poate citi numărul nouă, deoarece crucea în penultima poziție a fost introdusă în mod eronat în ultima coloană.

SC-Registration.pngSC-Registration.png

După introducerea numărului de înregistrare, datele corectate sunt salvate în fișierul ZIP actualizat.

## Correct registration number (for 0000000, S0000002.PNG): 0157193
##   adding: Daten.txt (deflated 89%)
##   adding: S0000001.PNG (deflated 8%)
##   adding: S0000002.PNG (deflated 6%)
##   adding: S0000003.PNG (deflated 6%)

În plus, putem verifica dacă în acest lucru schoice Examenul Există exact o casetă bifată pe întrebare. Modelele de răspuns implauzibile fără casete bifate sau cu mai multe casete bifate ar putea fi răspunsuri reale de la examinatori, dar s -ar putea datora și problemelor de scanare în cazul în care casetele bifate sau completate nu sunt detectate corect. Dacă răspunsul scanat are nevoie de corectare, puteți introduce răspunsul corect ca scrisoare (a, b…), ca număr (1, 2…), sau în codificarea binară (de exemplu, 00010) Pentru a accepta rezultatul scanat, pur și simplu apăsați .

În primul rând, verificăm și (dacă este necesar) cazuri corecte cu mai multe casete bifate:

nops_fix(check = "schoice")

sc-schoice1.pngsc-schoice1.png
sc-schoice2.pngsc-schoice2.png

## Correct answer 3 (for 01010, S0000003.PNG): d
## Correct answer 4 (for 01001, S0000003.PNG): 
##   adding: Daten.txt (deflated 89%)
##   adding: S0000001.PNG (deflated 8%)
##   adding: S0000002.PNG (deflated 6%)
##   adding: S0000003.PNG (deflated 6%)

În al doilea rând, verificăm cazurile cu răspunsuri lipsă:

nops_fix(check = "missing")

SC-MISSING.PNGSC-MISSING.PNG

## Correct answer 2 (for 00000, S0000003.PNG): 
##   adding: Daten.txt (deflated 89%)
##   adding: S0000001.PNG (deflated 8%)
##   adding: S0000002.PNG (deflated 6%)
##   adding: S0000003.PNG (deflated 6%)

În cele din urmă, după rezolvarea problemelor de mai sus în nops_scan_*.zip Fișier, examenul cu o singură alegere poate fi evaluat. Acest lucru necesită în plus soluțiile corecte de la exams2nops() Metainformation (produs mai sus) și o listă cu participanții înregistrați (conținând numărul de înregistrare, numele și ID -ul utilizatorului). Acestea din urmă pot fi descărcate ca participanți-schoice.csv.

ev <- nops_eval(
  register = "participants-schoice.csv",
  solutions = "nops/metainfo.rds",
  scans = Sys.glob("nops_scan_*.zip"))

Acest lucru produce obișnuitul nops_eval.* ieșire care sunt descrise mai detaliat în tutorialul NOPS.

Pentru a curăța înainte de demo -ul următor, puteți utiliza următorul cod:

unlink("nops", recursive = TRUE)
file.remove(Sys.glob("nops_eval.*"))
file.remove(Sys.glob("nops_scan_*.zip"))

Demo 2: examen cu alegere multiplă cu probleme severe

Creați examen

creacrea
library("exams")
mc <- c("capitals.Rmd", "switzerland.Rmd", "gaussmarkov.Rmd",
  "boxplots.Rmd", "scatterplot.Rmd", "ttest.Rmd")
set.seed(404)
exams2nops(mc, n = 5, dir = "nops", date = "2024-10-08")

Efectuați rezultatele examenelor și scanează

Din nou, să presupunem că am efectuat examenul cu trei participanți și le -am scanat foile de examen (prima pagină), rotiți cu susul în jos.

examenexamen
scanarescanare

Aici, puteți descărca fișierul PDF Scans-mchoice.pdf:

SCANS-MCHOICE.pdfSCANS-MCHOICE.pdf

Apoi putem citi informațiile din foile scanate prin intermediul nops_scan()rezultând un fișier nops_scan_*.zip.

nops_scan("scans-mchoice.pdf", rotate = TRUE)

În acest caz, acest lucru duce la un mesaj de avertizare că există erori în datele scanate și că rularea nops_fix() este necesar înainte de nops_eval().

Rezultatele scanării și evaluarea finală

Ca mai sus, apelarea funcției nops_fix() Fără argumente nu caută automat fișiere numite nops_scan_*.zip și verifică eventualele erori evidente. Aici, a treia pagină este foarte puternic rotită, iar marcajele de scaner sunt corupte, astfel încât PDF să nu poată fi citit deloc.

evaluaevalua

Datorită rotației proaste și a markerilor corupți, nu este posibil pentru nops_fix() pentru a extrage câmpurile individuale suficient de fiabile. Prin urmare, afișează întreaga foaie de examen scanată în browser, lângă o formă web interactivă în care toate câmpurile pot fi introduse manual. Ca nici măcar nu se poate citi nici câmpul „tip”, nops_fix() Nu știe că există doar șase exerciții și, prin urmare, afișează 45 de exerciții, maximul posibil.

nops_fix()

Mc-Error.pngMc-Error.png

După introducerea tuturor câmpurilor, apăsați butonul „OK” din browser (dreapta jos). Aceasta copiază toate datele introduse în clipboard (într -un șir JSON) și R va încerca să le citească de acolo, fie îl puteți lipi în promptul R. Pe Windows, citirea din clipboard ar trebui să funcționeze întotdeauna, în timp ce pe alte platforme pachetul R clipr ar trebui să fie instalat pentru a fi citit din clipboard în mod fiabil. În orice caz, ar trebui să vă asigurați că clipboard -ul nu este modificat înainte de a citi sau de a lipi din nou clipboard -ul în R.

În loc să utilizați forma interactivă din browser, puteți utiliza și nops_fix(display = "browser") care afișează doar foaia scanată în browser și apoi toate câmpurile pot fi introduse individual în promptul R (ca în exemplele anterioare).

Ulterior, putem rula verificările suplimentare de precauție ale câmpurilor de răspuns în care, respectiv, nu au fost bifate toate casetele. Cu toate acestea, în aceste trei examene, nu avem niciuna dintre aceste probleme.

nops_fix(check = "mchoice")
nops_fix(check = "missing")

Pentru a demonstra o altă caracteristică a nops_fix()Să presupunem că știm că câmpurile de răspuns pe a doua scanare ar trebui inspectate mai amănunțit.

nops_fix(exam = 2, field = "answer")

Acest lucru iterează prin toate cele șase câmpuri de răspuns, în acest caz, a transformat o serie de ambiguități care trebuie rezolvate de examinator.

MC-EXAM2-ANSWER.GIFMC-EXAM2-ANSWER.GIF

## Correct answer 1 (for 00001, S0000002.PNG): 
## Correct answer 2 (for 10000, S0000002.PNG): 
## Correct answer 3 (for 01100, S0000002.PNG): 
## Correct answer 4 (for 01110, S0000002.PNG): 
## Correct answer 5 (for 10000, S0000002.PNG): 1
## Correct answer 6 (for 11010, S0000002.PNG): bd
##   adding: Daten.txt (deflated 88%)
##   adding: S0000001.PNG (deflated 8%)
##   adding: S0000002.PNG (deflated 5%)
##   adding: S0000003.PNG (deflated 6%)

Apoi, nops_scan_*.zip Fișierul este gata pentru evaluarea finală și trebuie doar să descărcați lista de participanți participanți-mchoice.csv înainte de a rula nops_eval().

ev <- nops_eval(
  register = "participants-mchoice.csv",
  solutions = "nops/metainfo.rds",
  scans = Sys.glob("nops_scan_*.zip"))

Pentru a curăța folderul de lucru după demo -uri, utilizați:

unlink("nops", recursive = TRUE)
file.remove(Sys.glob("nops_eval.*"))
file.remove(Sys.glob("nops_scan_*.zip"))

Detalii

  1. Afișarea automată a foilor problematice
    • Dacă anumite foi sunt slab scanate (de exemplu, aliniate greșit sau scalate prost) sau dacă casetele pentru ID -ul de înregistrare nu sunt bifate corect (exact o casetă bifată pe coloană), nops_scan() steag aceste foi la fel de eronate și nops_fix() le prezintă automat pentru inspecție manuală.
    • Funcția afișează fie întreaga foaie de examen din browser, fie secțiunea care are nevoie de atenție într-un complot R și solicită utilizatorului să fie introdusă pe consolă, permițând inspecția și corecția pas cu pas.
    • Cel mai potrivit display este ales automat sau poate fi setat la "plot" (Afișare Extras scanat în graficul R), "browser" (Afișați o imagine scanată completă în browser) sau "interactive" (Afișați o imagine scanată completă împreună cu forma HTML interactivă în browser). Implicit este "plot" cu excepția cazului în care au apărut erori în timpul scanării unde "interactive" este folosit în schimb.
  2. Solicitarea corecțiilor manuale
    • Pentru fiecare field în foaia de examen (fie "type", "id", "registration"sau "answers"), nops_fix() Afișează conținutul detectat și solicită utilizatorului pentru actualizări potențiale.
    • Doar apăsarea Enter acceptă conținutul detectat fără modificări.
    • Când verificați un anumit câmp de răspuns, răspunsul detectat este reprezentat de un cod binar de cinci cifre (chiar dacă întrebarea a avut mai puțin de cinci alternative de răspuns), cum ar fi 01001 (când a fost bifată a doua și a cincea casetă). Pentru a corecta acest lucru, spuneți doar a doua casetă, sunt acceptate următoarele formate: binar (01000), litere (b), sau numeric (2)
  3. Verificări specializate pentru modele de răspuns implauzibile
    • Pentru a sprijini examinatorii în găsirea potenţial Probleme din foile de examen înainte de a se plânge examinatorii, nops_fix() Oferă verificări pentru diverse modele de răspuns implauzibile.
    • Adesea, astfel de modele implauzibile sunt erori în numele examinatorilor (și apoi trebuie să fie păstrate), dar când erorile se datorează detectării incorecte a casetelor bifate din foaia scanată, răspunsurile pot fi corectate.
    • nops_fix(check = "missing") Verifică răspunsurile fără casete bifate care sunt implauzibile, cu excepția cazului în care există puncte negative pentru răspunsuri incorecte.
    • nops_fix(check = "schoice") Bifică răspunsurile cu mai multe casete bifate, care sunt adesea cauzate de a nu completa complet o casetă bifată eronat.
    • nops_fix(check = "mchoice") Verifică răspunsurile cu toate casetele bifate care sunt implauzibile, deoarece astfel de modele sunt de obicei clasificate cu zero puncte.
  4. Revizuirea manuală a foilor de examen specifice
    • Uneori, foile de examen specifice necesită mai multă atenție, de exemplu, atunci când se aplică condiții speciale la examen sau când foaia nu a fost completată corect.
    • Spuneți dacă acest lucru se aplică primei foi scanate, atunci nops_fix(exam = 1) poate fi folosit pentru a verifica fiecare câmp al foii.
    • O astfel de recenzie asigură că fiecare răspuns este examinat, ceea ce este util în special în setările necesare cu mize mari sau verificate.

Detaliile complete pentru toate argumentele sunt documentate pe ?nops_fix Pagina manuală care include, de asemenea, exemple de aplicație mai tipice.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.