Skip to content

Lecture auto-rythmée et tâche du labyrinthe

Menez dans Potato une lecture auto-rythmée en fenêtre mobile, cumulative ou centrée, ou la tâche A-maze, avec des temps de lecture par région, des questions de compréhension et des vérifications.

Nouveau dans la v2.12.0

trial_timing.presentation affiche le texte de chaque item une région à la fois et enregistre le temps que le participant passe sur chaque région. Il couvre les méthodes de mesure des temps de lecture de la psycholinguistique :

modeMéthodeCe que voit le participant
moving_windowLecture auto-rythmée (Just, Carpenter & Woolley, 1982)La phrase sous forme de tirets. Chaque pression de touche révèle la région suivante et masque la précédente
cumulativeLecture auto-rythmée cumulativeComme ci-dessus, mais les régions précédentes restent visibles
centeredLecture auto-rythmée centrée, à la manière de la RSVPUne région à la fois au centre de l'écran
mazeTâche du labyrinthe (Forster, Guerrera & Elliot, 2009), y compris A-maze (Boyce, Futrell & Levy, 2020)Deux mots côte à côte. Le participant choisit celui qui continue la phrase

Il s'appuie sur les essais chronométrés et partage avec eux la fixation, l'intervalle inter-essais, les apparitions alignées sur les images, les vérifications du serveur et l'enregistrement de l'essai. Chaque région apparaît à une frontière d'image, et son temps de lecture est la pression de touche suivante moins cette image.

Lecture auto-rythmée

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

Les régions sont découpées selon region_separator, ou selon les espaces (un mot par région) quand il n'est pas défini. La première pression de touche affiche la première région, et la pression qui suit la dernière région termine la phrase.

Avec question_field, une phrase dont le champ de question est rempli est suivie de cette question de compréhension, à laquelle on répond avec les touches de response comme pour tout essai chronométré. Une phrase sans question se termine après sa dernière région avec le résultat completed, et le participant passe à la suite sans répondre. Sans question_field, chaque phrase pose le schéma de response, ce qui convient à un jugement d'acceptabilité ou de plausibilité après chaque phrase.

Sans aucun bloc response, la page n'enregistre que les temps de lecture, et chaque schéma de la page doit alors être pure_display.

Labyrinthe

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 liste un distracteur par région, découpé de la même façon que la phrase. S'il en compte un de moins, x-x-x est utilisé pour le premier mot, comme dans A-maze. Le côté du mot correct est tiré au hasard pour chaque paire. on_error: stop termine la phrase au premier mauvais choix, et redo fait clignoter la paire, attend le bon mot et enregistre combien de mauvaises pressions l'ont précédé.

Les distracteurs A-maze sont généralement produits avec un modèle de langue, sous forme de continuations agrammaticales appariées en longueur et en fréquence. Potato les lit dans les données ; générez-les donc avec les outils A-maze avant d'importer les items.

Options

CléValeur par défautSignification
modemoving_windowmoving_window, cumulative, centered ou maze
fielditem_properties.text_keyChamp de l'item qui contient le texte
region_separatoraucuneDécoupe les régions selon cette chaîne (1 à 3 caractères) au lieu des espaces
advance_keyspaceTouche qui affiche la région suivante (non utilisée par maze)
question_fieldaucuneChamp de l'item qui contient une question de compréhension propre à l'item
distractor_fieldobligatoire pour mazeChamp de l'item qui contient un distracteur par région
maze_keys{left: e, right: i}Touches pour le mot de gauche et celui de droite
on_errorstopstop ou redo, pour maze
mask_char-Caractère avec lequel la fenêtre mobile masque les lettres

Les affichages en fenêtre mobile et cumulatif utilisent une police à chasse fixe ; les masques conservent ainsi la longueur de chaque mot, et la ligne ne se décale pas à mesure que les mots sont révélés. Les touches d'avance et de labyrinthe ne peuvent pas être aussi des touches de response.

Données de temps de lecture

L'enregistrement de l'essai dans user_state.json contient une liste regions avec une entrée par région affichée :

ChampSignification
indexPosition de la région, à partir de 0
textLe texte de la région
rt_msTemps entre l'image d'apparition de la région et la pression de touche
correct, side, errorsLabyrinthe uniquement : si le bon mot a été choisi, quel côté a été pressé, et les mauvaises pressions qui l'ont précédé (on_error: redo)

Les exports CSV et TSV écrivent les régions dans regions.csv (ou regions.tsv), une ligne par région avec les colonnes du participant, de l'item et de la condition, le résultat de l'essai et son heure d'apparition. Le fichier trials compte une ligne par essai et aucune colonne de région.

Le serveur vérifie chaque enregistrement et ajoute des indicateurs :

IndicateurSignification
reading_exceeds_server_elapsedLe temps de lecture total dépasse la durée pendant laquelle le serveur a vu l'item servi
bad_region_rtUne région a un rt_ms négatif. La région est conservée telle qu'envoyée
completed_without_presentationL'enregistrement indique que l'essai s'est terminé après la lecture, mais l'item n'avait aucune région à lire. Il ne compte pas comme terminé
completed_with_questionL'enregistrement indique que l'essai s'est terminé après la lecture, mais l'item a une question à laquelle répondre. Il ne compte pas comme terminé
regions_incompleteL'enregistrement compte moins ou plus de régions que la phrase. Il ne compte pas comme terminé
maze_errorUn essai de labyrinthe s'est terminé sur un mauvais choix (on_error: stop), et la dernière région a correct: false
reloaded_mid_trialLa page a été rechargée pendant la phrase, ce qui la fait recommencer. Les régions proviennent de la deuxième lecture

trial_duration_ms et stimulus_duration_ms s'appliquent à la question qui suit la lecture, pas à la lecture elle-même. Le délai commence quand la question apparaît, et stimulus_duration_ms masque le texte de la question ; un item sans question n'a donc pas de délai. potato validate avertit quand l'un ou l'autre est défini en même temps que presentation.

Exemples

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

Les deux utilisent des phrases « garden-path » avec et sans la relative qui lève l'ambiguïté. Pour un plan complet, ajoutez une condition list avec un fichier de données par liste, afin que chaque participant voie une seule version de chaque item (Déroulement de l'expérience). Une expérience Ibex ou PCIbex existante s'importe directement dans cette organisation (Venir d'Ibex).

Pour aller plus loin

Pour les détails d'implémentation, consultez la documentation source.