Skip to content

Self-Paced Reading und die Maze-Aufgabe

Self-Paced Reading mit Moving Window, kumulativ oder zentriert sowie die A-Maze-Aufgabe in Potato ausführen, mit Lesezeiten pro Region, Verständnisfragen und Prüfungen.

Neu in v2.12.0

trial_timing.presentation zeigt den Text jedes Items regionsweise an und zeichnet auf, wie lange die teilnehmende Person bei jeder Region verweilt. Es deckt die Lesezeitmethoden der Psycholinguistik ab:

modeMethodeWas die teilnehmende Person sieht
moving_windowSelf-Paced Reading (Just, Carpenter & Woolley, 1982)Den Satz als Striche. Jeder Tastendruck deckt die nächste Region auf und maskiert die vorherige
cumulativeKumulatives Self-Paced ReadingWie oben, aber frühere Regionen bleiben sichtbar
centeredZentriertes Self-Paced Reading, im Stil von RSVPJeweils eine Region in der Mitte des Bildschirms
mazeMaze-Aufgabe (Forster, Guerrera & Elliot, 2009), einschließlich A-Maze (Boyce, Futrell & Levy, 2020)Zwei Wörter nebeneinander. Die Person wählt das Wort, das den Satz fortsetzt

Es baut auf zeitgesteuerten Trials auf und teilt mit ihnen Fixation, Inter-Trial-Intervall, frame-genaue Onsets, Serverprüfungen und Trial-Datensatz. Jede Region erscheint an einer Frame-Grenze, und ihre Lesezeit ist der nächste Tastendruck minus dieses Frames.

Self-Paced Reading

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?"}

Regionen werden an region_separator getrennt, oder an Leerraum (ein Wort pro Region), wenn er nicht gesetzt ist. Der erste Tastendruck zeigt die erste Region, und der Tastendruck nach der letzten Region beendet den Satz.

Mit question_field folgt auf einen Satz, dessen Fragefeld ausgefüllt ist, diese Verständnisfrage, die wie bei jedem zeitgesteuerten Trial mit den response-Tasten beantwortet wird. Ein Satz ohne Frage endet nach seiner letzten Region mit dem Ergebnis completed, und die Person geht ohne Antwort weiter. Ohne question_field fragt jeder Satz das Schema response ab, was zu einem Akzeptabilitäts- oder Plausibilitätsurteil nach jedem Satz passt.

Ganz ohne Block response zeichnet die Seite nur Lesezeiten auf, und jedes Schema auf der Seite muss dann pure_display sein.

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 listet einen Distraktor pro Region auf, getrennt wie der Satz. Hat es einen weniger, wird für das erste Wort x-x-x verwendet, wie bei A-Maze. Die Seite des richtigen Worts ist bei jedem Paar zufällig. on_error: stop beendet den Satz bei der ersten falschen Wahl, und redo lässt das Paar aufblinken, wartet auf das richtige Wort und zeichnet auf, wie viele falsche Tastendrücke vorausgingen.

A-Maze-Distraktoren werden üblicherweise mit einem Sprachmodell als ungrammatische Fortsetzungen erzeugt, die in Länge und Frequenz angeglichen sind. Potato liest sie aus den Daten. Erzeugen Sie sie daher mit den A-Maze-Werkzeugen, bevor Sie die Items importieren.

Optionen

SchlüsselStandardwertBedeutung
modemoving_windowmoving_window, cumulative, centered oder maze
fielditem_properties.text_keyItem-Feld mit dem Text
region_separatorkeinerTrennt Regionen an dieser Zeichenkette (1-3 Zeichen) statt an Leerraum
advance_keyspaceTaste, die die nächste Region zeigt (von maze nicht verwendet)
question_fieldkeinerItem-Feld mit einer Verständnisfrage pro Item
distractor_fielderforderlich für mazeItem-Feld mit einem Distraktor pro Region
maze_keys{left: e, right: i}Tasten für das linke und das rechte Wort
on_errorstopstop oder redo, für maze
mask_char-Zeichen, mit dem das Moving Window Buchstaben maskiert

Die Anzeigen für Moving Window und kumulatives Lesen verwenden eine nichtproportionale Schrift, sodass die Masken die Länge jedes Worts erhalten und die Zeile sich beim Aufdecken der Wörter nicht verschiebt. Die Weiter- und Maze-Tasten können nicht zugleich response-Tasten sein.

Lesezeitdaten

Der Trial-Datensatz in user_state.json enthält eine Liste regions mit einem Eintrag pro gezeigter Region:

FeldBedeutung
indexPosition der Region, ab 0
textDer Text der Region
rt_msZeit vom Onset-Frame der Region bis zum Tastendruck
correct, side, errorsNur Maze: ob das richtige Wort gewählt wurde, welche Seite gedrückt wurde und die falschen Tastendrücke davor (on_error: redo)

Die CSV- und TSV-Exporte schreiben die Regionen in regions.csv (oder regions.tsv), eine Zeile pro Region mit den Spalten für teilnehmende Person, Item und Bedingung, dem Ergebnis des Trials und seiner Onset-Zeit. Die Datei trials hat eine Zeile pro Trial und keine Regionsspalten.

Der Server prüft jeden Datensatz und fügt Flags hinzu:

FlagBedeutung
reading_exceeds_server_elapsedDie gesamte Lesezeit ist länger, als der Server das Item ausgegeben sah
bad_region_rtEine Region hat ein negatives rt_ms. Die Region wird so behalten, wie sie gesendet wurde
completed_without_presentationDer Datensatz gibt an, dass der Trial nach dem Lesen endete, aber das Item hatte keine Regionen zum Lesen. Es zählt nicht als abgeschlossen
completed_with_questionDer Datensatz gibt an, dass der Trial nach dem Lesen endete, aber das Item hat eine zu beantwortende Frage. Es zählt nicht als abgeschlossen
regions_incompleteDer Datensatz hat weniger oder mehr Regionen als der Satz. Es zählt nicht als abgeschlossen
maze_errorEin Maze-Trial endete bei einer falschen Wahl (on_error: stop), und die letzte Region hat correct: false
reloaded_mid_trialDie Seite wurde während des Satzes neu geladen, was ihn von vorn beginnen lässt. Die Regionen stammen aus dem zweiten Lesedurchgang

trial_duration_ms und stimulus_duration_ms gelten für die Frage, die auf das Lesen folgt, nicht für das Lesen selbst. Die Deadline beginnt, wenn die Frage erscheint, und stimulus_duration_ms blendet den Fragetext aus, sodass ein Item ohne Frage keine Deadline hat. potato validate warnt, wenn eines davon zusammen mit presentation gesetzt ist.

Beispiele

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

Beide verwenden Holzwegsätze mit und ohne den disambiguierenden Relativsatz. Für ein vollständiges Design fügen Sie eine Bedingung list mit einer Datendatei pro Liste hinzu, sodass jede teilnehmende Person eine Version jedes Items sieht (Experimentablauf). Ein bestehendes Ibex- oder PCIbex-Experiment lässt sich direkt in diese Struktur importieren (Umstieg von Ibex).

Weiterführende Informationen

Implementierungsdetails finden Sie in der Quelldokumentation.