Skip to content

Dialectologie perceptive dans Potato : tâches de dessin sur carte et cartes de chaleur des chevauchements

Menez en ligne la tâche de dessin sur carte de Preston dans Potato : les participants délimitent et nomment des aires dialectales sur un fond de carte, et l'export les superpose en cartes de chaleur.

La dialectologie perceptive étudie où des non-linguistes situent les aires dialectales, et comment ils les nomment. Sa méthode la plus connue est la tâche de dessin sur carte (draw-a-map) de Dennis Preston, dans laquelle les participants tracent sur une carte vierge les contours des zones où, selon eux, les gens parlent différemment, et nomment chacune d'elles. Potato 2.12.0 exécute cette tâche en ligne avec le schéma geo_annotation et agrège les dessins de nombreux participants en cartes de chaleur avec l'export geo_overlap.

La superposition des cartes montre sur quelles zones les participants s'accordent et comment ils les appellent. L'implémentation de Potato lui est propre : les outils de dessin sur carte disponibles en ligne ne portent aucune licence, et Potato ne partage donc aucun code avec eux.

Essayer l'étude d'exemple

examples/advanced/dialect-map/ est une étude complète portant sur un pays fictif, l'Arventa, dont les contours des dix provinces sont synthétiques et ne ressemblent à aucune frontière réelle. Elle pose trois questions sur une même page :

  1. Tracez les zones où les gens parlent différemment (task: draw) : contours à main levée ou polygones, une étiquette indiquant à quel point le parler semble différent, et un nom obligatoire pour chaque zone.
  2. Où avez-vous grandi ? (task: pin) : une seule épingle.
  3. Comment sonne pour vous le parler de chaque province ? (task: classify_region) : chaque province reçoit Sounds like home, Sounds different ou Don't know.
bash
python potato/flask_server.py start examples/advanced/dialect-map/config.yaml -p 8000

La carte ne nécessite aucune connexion réseau, et rien n'est récupéré auprès d'un serveur de tuiles.

Choisir un fond de carte

Utilisez un fond de carte que les participants reconnaîtront, sans les étiquettes dialectales ni les noms régionaux que vous cherchez à faire émerger, car une carte étiquetée oriente les réponses. Les limites d'États, de provinces ou de comtés sont le choix habituel.

  • Placez le fichier dans le répertoire du projet et indiquez-le dans basemap.geojson. Il est intégré à la page ; simplifiez-le donc d'abord, avec mapshaper, QGIS ou un outil similaire, jusqu'à quelques centaines de kilo-octets au plus.
  • Vérifiez la licence des données de limites avant de les mettre dans le projet. De nombreux instituts nationaux de statistique publient des fichiers de limites sous licence ouverte, et certains jeux de limites commerciaux ne peuvent pas être redistribués.
  • Si le fichier écrit la latitude en premier, définissez coordinate_order: latlon.
  • Les noms de régions présents dans le fond de carte (region_name_property) sont affichés sur la carte. S'ils risquent d'orienter les participants, retirez cette propriété du fichier.

Configurer la question de dessin

yaml
- annotation_type: geo_annotation
  name: dialect_areas
  description: "Draw the areas where people speak differently"
  task: draw
  tools: [freehand, polygon]
  labels:
    - "A little different"
    - "Very different"
    - "Hard to understand"
  feature_text:
    prompt: "What do you call how people talk there?"
    required: true
  basemap:
    geojson: maps/regions.geojson
  label_requirement:
    required: true
  • tools: [freehand] seul est ce qui se rapproche le plus d'un dessin au stylo sur une carte papier. Les contours à main levée peuvent se recouper, et l'agrégat les remplit selon la règle pair-impair ; un huit compte donc comme ses deux boucles.
  • Une seule étiquette suffit si vous ne voulez que les zones et leurs noms. Davantage d'étiquettes permettent aux participants d'évaluer chaque zone au moment où ils la tracent : à quel point le parler est différent, agréable ou facile à comprendre.
  • feature_text.required impose un nom à chaque zone avant Next, et min_features et max_features bornent le nombre de zones qu'un participant trace.

task: pin avec une étiquette par question enregistre des lieux comme le lieu de naissance ou de résidence actuelle, dont vous aurez généralement besoin pour regrouper les dessins. task: classify_region demande un jugement par région et produit une carte choroplèthe au lieu de contours libres. Cartes décrit toutes les options.

Cartes de chaleur des chevauchements

bash
python -m potato.export --config config.yaml --format geo_overlap --output out/

Pour chaque item et chaque schéma de dessin, l'export pose une grille régulière en longitude/latitude sur le fond de carte, ou sur les dessins s'il n'y a pas de fond de carte. Pour chaque étiquette, la part d'une cellule est la fraction des répondants ayant au moins un polygone de cette étiquette dont le contour contient le centre de la cellule. Les répondants sont les participants qui ont tracé au moins un polygone dans ce schéma sur cet item, et un participant compte une seule fois par cellule, quel que soit le nombre de ses polygones qui s'y chevauchent.

FichierContenu
geo_overlap/<item>__<schema>__<group>.geojsonUn polygone carré par cellule couverte, avec count, respondents, share, row, col, ainsi que l'item, le schéma et le groupe
geo_overlap/<item>__<schema>__<group>.pngUn aperçu, avec les cellules couvertes ombrées du clair (peu de répondants) au foncé (tous les répondants) et le fond de carte en gris
geo_overlap_summary.csvUne ligne par carte de chaleur : répondants, polygones, cellules couvertes, part la plus élevée, taille et étendue de la grille
geo_names.csvChaque entité tracée : participant, item, étiquette, nom tel que saisi, forme normalisée, type de géométrie, superficie en km² et un point d'étiquette
geo_name_counts.csvPar schéma, étiquette et nom normalisé, le nombre de participants qui l'ont utilisé
geo_regions.csvPour les schémas classify_region, par région et par étiquette, le nombre de participants qui l'ont choisie et la part correspondante
OptionValeur par défautSignification
group_bylabellabel, text (le nom normalisé) ou label_text (les deux)
cells100Nombre de cellules le long du plus grand côté de l'étendue
cell_sizeaucuneTaille des cellules en degrés, qui remplace cells
extentlimites du fond de cartemin_lon,min_lat,max_lon,max_lat
schematousExporte un seul schéma

Les cellules sont égales en degrés, et non en superficie. À l'échelle d'un pays, la différence est faible, et les cellules GeoJSON portent les coordonnées de leurs coins, de sorte qu'un SIG peut les reprojeter. L'aperçu PNG est en plate carrée ; il paraît donc plus large que la carte en Web Mercator affichée sur la page.

Le regroupement par nom ne réunit deux zones que lorsque leurs noms normalisés coïncident, après neutralisation de la casse et réduction des espaces. geo_name_counts.csv montre les graphies employées par les participants. Pour fusionner des variantes comme "Southern", "the south" et "southern drawl", recodez geo_names.csv et agrégez vous-même les polygones, ou demandez plutôt aux participants de choisir parmi des étiquettes. Les points et les lignes ne sont pas agrégés, et une carte de chaleur dont la part vaut 1,0 partout où elle est ombrée signifie qu'un seul participant a tracé cette étiquette.

L'export geojson écrit chaque dessin avec son participant et son item, pour l'analyse dans QGIS, R (sf) ou Python (geopandas).

Pour aller plus loin

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