Skip to content

Lectura autoadministrada y la tarea maze

Ejecuta en Potato la lectura autoadministrada con ventana móvil, acumulativa o centrada, o la tarea A-maze, con tiempos de lectura por región, preguntas de comprensión y comprobaciones.

Nuevo en v2.12.0

trial_timing.presentation muestra el texto de cada ítem región a región y registra cuánto tiempo dedica el participante a cada región. Cubre los métodos de tiempos de lectura de la psicolingüística:

modeMétodoLo que ve el participante
moving_windowLectura autoadministrada (Just, Carpenter & Woolley, 1982)La oración como guiones. Cada pulsación de tecla revela la región siguiente y enmascara la anterior
cumulativeLectura autoadministrada acumulativaComo la anterior, pero las regiones previas siguen visibles
centeredLectura autoadministrada centrada, al estilo de la RSVPUna región cada vez en el centro de la pantalla
mazeTarea maze (Forster, Guerrera & Elliot, 2009), incluida la A-maze (Boyce, Futrell & Levy, 2020)Dos palabras una al lado de la otra. El participante elige la que continúa la oración

Se apoya en los ensayos cronometrados y comparte con ellos la fijación, el intervalo entre ensayos, los inicios alineados con los fotogramas, las comprobaciones del servidor y el registro del ensayo. Cada región aparece en el límite de un fotograma, y su tiempo de lectura es la siguiente pulsación de tecla menos ese fotograma.

Lectura autoadministrada

yaml
item_properties:
  id_key: id
  text_key: sentence
 
trial_timing:
  enabled: true
  fixation_ms: 400
  iti_ms: 500
  presentation:
    mode: moving_window
    field: sentence
    region_separator: "|"
    advance_key: space
    question_field: question
  response:
    schema: comprehension
    keys: {f: "Yes", j: "No"}
 
annotation_schemes:
  - annotation_type: radio
    name: comprehension
    description: Answer the question
    labels: ["Yes", "No"]
    label_requirement:
      required: true
json
{"id": "gp1", "condition": "ambiguous",
 "sentence": "The horse | raced | past | the barn | fell | to the ground.",
 "question": "Did the horse fall?"}

Las regiones se separan por region_separator, o por espacios en blanco (una palabra por región) cuando no está definido. La primera pulsación de tecla muestra la primera región, y la pulsación que sigue a la última región termina la oración.

Con question_field, una oración cuyo campo de pregunta está relleno va seguida de esa pregunta de comprensión, que se responde con las teclas de response como cualquier ensayo cronometrado. Una oración sin pregunta termina tras su última región con el resultado completed, y el participante avanza sin responder. Sin question_field, cada oración formula el esquema de response, lo que encaja con un juicio de aceptabilidad o de plausibilidad después de cada oración.

Sin ningún bloque response, la página registra solo tiempos de lectura, y entonces todos los esquemas de la página deben ser pure_display.

Maze

yaml
trial_timing:
  enabled: true
  fixation_ms: 300
  presentation:
    mode: maze
    field: sentence
    distractor_field: distractors
    maze_keys: {left: e, right: i}
    on_error: stop
 
annotation_schemes:
  - annotation_type: pure_display
    name: instructions
    description: Choose the word that continues the sentence.
json
{"id": "m1", "sentence": "The horse raced past the barn fell to the ground.",
 "distractors": "x-x-x clock holly toward soft hint knew duty hope fuel."}

distractor_field enumera un distractor por región, separados de la misma forma que la oración. Si tiene uno menos, se usa x-x-x para la primera palabra, como en la A-maze. El lado de la palabra correcta es aleatorio en cada par. on_error: stop termina la oración en la primera elección incorrecta, y redo hace parpadear el par, espera la palabra correcta y registra cuántas pulsaciones incorrectas hubo antes.

Los distractores de la A-maze suelen generarse con un modelo de lenguaje como continuaciones agramaticales igualadas en longitud y frecuencia. Potato los lee de los datos, así que genéralos con las herramientas de A-maze antes de importar los ítems.

Opciones

ClaveValor predeterminadoSignificado
modemoving_windowmoving_window, cumulative, centered o maze
fielditem_properties.text_keyCampo del ítem que contiene el texto
region_separatorningunoSepara las regiones por esta cadena (de 1 a 3 caracteres) en lugar de por espacios en blanco
advance_keyspaceTecla que muestra la región siguiente (no la usa maze)
question_fieldningunoCampo del ítem con una pregunta de comprensión propia de cada ítem
distractor_fieldobligatorio para mazeCampo del ítem con un distractor por región
maze_keys{left: e, right: i}Teclas para la palabra de la izquierda y la de la derecha
on_errorstopstop o redo, para maze
mask_char-Carácter con el que la ventana móvil enmascara las letras

Las visualizaciones de ventana móvil y acumulativa usan una fuente monoespaciada, de modo que las máscaras conservan la longitud de cada palabra y la línea no se desplaza a medida que se revelan las palabras. Las teclas de avance y de maze no pueden ser también teclas de response.

Datos de tiempos de lectura

El registro del ensayo en user_state.json lleva una lista regions con una entrada por cada región mostrada:

CampoSignificado
indexPosición de la región, desde 0
textEl texto de la región
rt_msTiempo desde el fotograma de inicio de la región hasta la pulsación de tecla
correct, side, errorsSolo en maze: si se eligió la palabra correcta, qué lado se pulsó y las pulsaciones incorrectas previas (on_error: redo)

Las exportaciones CSV y TSV escriben las regiones en regions.csv (o regions.tsv), una fila por región con las columnas de participante, ítem y condición, el resultado del ensayo y su momento de inicio. El archivo trials tiene una fila por ensayo y ninguna columna de regiones.

El servidor comprueba cada registro y añade marcas:

MarcaSignificado
reading_exceeds_server_elapsedEl tiempo de lectura total es más largo que el tiempo durante el que el servidor vio el ítem
bad_region_rtUna región tiene un rt_ms negativo. La región se conserva tal como se envió
completed_without_presentationEl registro dice que el ensayo terminó tras la lectura, pero el ítem no tenía regiones que leer. No cuenta como terminado
completed_with_questionEl registro dice que el ensayo terminó tras la lectura, pero el ítem tiene una pregunta que responder. No cuenta como terminado
regions_incompleteEl registro tiene menos o más regiones que la oración. No cuenta como terminado
maze_errorUn ensayo de maze terminó en una elección incorrecta (on_error: stop), y la última región tiene correct: false
reloaded_mid_trialLa página se recargó durante la oración, lo que la reinicia. Las regiones proceden de la segunda lectura

trial_duration_ms y stimulus_duration_ms se aplican a la pregunta que sigue a la lectura, no a la lectura en sí. El plazo empieza cuando aparece la pregunta, y stimulus_duration_ms oculta el texto de la pregunta, así que un ítem sin pregunta no tiene plazo. potato validate avisa cuando cualquiera de los dos se define junto con presentation.

Ejemplos

bash
python potato/flask_server.py start examples/advanced/self-paced-reading/config.yaml -p 8000
python potato/flask_server.py start examples/advanced/maze-task/config.yaml -p 8000

Ambos usan oraciones de vía muerta con y sin la cláusula relativa que deshace la ambigüedad. Para un diseño completo, añade una condición list con un archivo de datos por lista, de modo que cada participante vea una versión de cada ítem (Flujo del experimento). Un experimento existente de Ibex o PCIbex se importa directamente a esta estructura (Si vienes de Ibex).

Lecturas adicionales

Para detalles de implementación, consulta la documentación fuente.