Perzeptive Dialektologie in Potato: Draw-a-Map-Aufgaben und Überlappungs-Heatmaps
Prestons Draw-a-Map-Aufgabe online in Potato durchführen: Teilnehmende umranden und benennen Dialektgebiete auf einer Umrisskarte, und der Export überlagert sie als Heatmaps.
Die perzeptive Dialektologie untersucht, wo Laien Dialektgebiete vermuten und wie sie diese nennen. Ihre bekannteste Methode ist Dennis Prestons Draw-a-Map-Aufgabe, bei der Teilnehmende auf einer leeren Karte die Gebiete umranden, in denen nach ihrer Meinung anders gesprochen wird, und jedes davon benennen. Potato 2.12.0 führt die Aufgabe online mit dem Schema geo_annotation aus und fasst die Zeichnungen vieler Teilnehmender mit dem Export geo_overlap zu Heatmaps zusammen.
Die Überlagerung der Karten zeigt, über welche Gebiete sich die Teilnehmenden einig sind und wie sie diese nennen. Potatos Implementierung ist eine eigene: Die online verfügbaren Draw-a-Map-Werkzeuge tragen keine Lizenz, daher teilt sie keinen Code mit ihnen.
Die Beispielstudie ausprobieren
examples/advanced/dialect-map/ ist eine vollständige Studie über ein fiktives Land, Arventa, dessen zehn Provinzumrisse synthetisch sind und keinen realen Grenzen ähneln. Sie stellt drei Fragen auf einer Seite:
- Draw the areas where people speak differently (
task: draw): Freihand- oder Polygonumrisse, ein Label dafür, wie anders die Sprechweise klingt, und ein Pflichtname für jedes Gebiet. - Where did you grow up? (
task: pin): eine Stecknadel. - How does the speech of each province sound to you? (
task: classify_region): Jede Provinz erhält Sounds like home, Sounds different oder Don't know.
python potato/flask_server.py start examples/advanced/dialect-map/config.yaml -p 8000Die Karte braucht keine Netzwerkverbindung, und nichts wird von einem Kachelserver abgerufen.
Eine Umrisskarte wählen
Verwenden Sie einen Umriss, den die Teilnehmenden wiedererkennen, ohne die Dialektbezeichnungen oder regionalen Namen, die Sie erheben möchten, denn eine beschriftete Karte beeinflusst die Antworten. Grenzen von Bundesstaaten, Provinzen oder Landkreisen sind die übliche Wahl.
- Legen Sie die Datei im Projektverzeichnis ab und nennen Sie sie in
basemap.geojson. Sie wird in die Seite eingebettet, vereinfachen Sie sie daher vorher mit mapshaper, QGIS oder Ähnlichem auf höchstens einige hundert Kilobyte. - Prüfen Sie die Lizenz der Grenzdaten, bevor Sie sie ins Projekt aufnehmen. Viele nationale Statistikämter veröffentlichen Grenzdateien unter offenen Lizenzen, und manche kommerziellen Grenzdatensätze dürfen nicht weitergegeben werden.
- Wenn die Datei den Breitengrad zuerst schreibt, setzen Sie
coordinate_order: latlon. - Regionsnamen im Umriss (
region_name_property) werden auf die Karte gezeichnet. Wenn sie die Teilnehmenden beeinflussen würden, lassen Sie die Eigenschaft in der Datei weg.
Die Zeichenfrage konfigurieren
- 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: truetools: [freehand]allein kommt dem Zeichnen mit einem Stift auf einer Papierkarte am nächsten. Freihandumrisse dürfen sich selbst kreuzen, und die Aggregation füllt sie nach der Even-Odd-Regel, sodass eine Acht als ihre zwei Schleifen zählt.- Ein Label genügt, wenn Sie nur die Gebiete und ihre Namen erfassen wollen. Mehr Labels lassen Teilnehmende jedes Gebiet beim Zeichnen bewerten, etwa wie anders, wie angenehm oder wie leicht verständlich die Sprechweise ist.
feature_text.requiredverlangt für jedes Gebiet einen Namen, bevor Next möglich ist, undmin_featuresundmax_featuresbegrenzen, wie viele Gebiete eine teilnehmende Person zeichnet.
task: pin mit einem Label pro Frage erfasst Orte wie Geburtsort oder aktuellen Wohnort, die Sie meist zum Gruppieren der Zeichnungen brauchen. task: classify_region verlangt ein Urteil pro Region und ergibt eine Choroplethenkarte statt freier Umrisse. Karten beschreibt alle Optionen.
Überlappungs-Heatmaps
python -m potato.export --config config.yaml --format geo_overlap --output out/Für jedes Item und jedes Zeichenschema legt der Export ein regelmäßiges Längen-/Breitengitter über die Umrisskarte oder, wenn es keinen Umriss gibt, über die Zeichnungen. Für jedes Label ist der Anteil (share) einer Zelle der Bruchteil der Antwortenden mit mindestens einem Polygon dieses Labels, dessen Umriss den Mittelpunkt der Zelle enthält. Antwortende sind die Teilnehmenden, die in diesem Schema auf diesem Item mindestens ein Polygon gezeichnet haben, und eine teilnehmende Person zählt pro Zelle einmal, gleich wie viele ihrer Polygone sich dort überlappen.
| Datei | Inhalt |
|---|---|
geo_overlap/<item>__<schema>__<group>.geojson | Ein quadratisches Polygon pro abgedeckter Zelle, mit count, respondents, share, row, col sowie Item, Schema und Gruppe |
geo_overlap/<item>__<schema>__<group>.png | Eine Vorschau, in der abgedeckte Zellen von hell (wenige Antwortende) bis dunkel (alle) schattiert sind und der Umriss grau erscheint |
geo_overlap_summary.csv | Eine Zeile pro Heatmap: Antwortende, Polygone, abgedeckte Zellen, größter Anteil, Gittergröße und Ausdehnung |
geo_names.csv | Jedes gezeichnete Feature: teilnehmende Person, Item, Label, der Name wie eingetippt, eine normalisierte Form, Geometrietyp, Fläche in km² und ein Beschriftungspunkt |
geo_name_counts.csv | Pro Schema, Label und normalisiertem Namen, wie viele Teilnehmende ihn verwendet haben |
geo_regions.csv | Für Schemata vom Typ classify_region, pro Region und Label, wie viele Teilnehmende es gewählt haben, und der Anteil |
| Option | Standard | Bedeutung |
|---|---|---|
group_by | label | label, text (der normalisierte Name) oder label_text (beides) |
cells | 100 | Zellen entlang der längeren Seite der Ausdehnung |
cell_size | keiner | Zellgröße in Grad, überschreibt cells |
extent | Grenzen des Umrisses | min_lon,min_lat,max_lon,max_lat |
schema | alle | Exportiert ein einzelnes Schema |
Die Zellen sind in Grad gleich groß, nicht in der Fläche. Über einem einzelnen Land ist der Unterschied gering, und die GeoJSON-Zellen tragen ihre Eckkoordinaten, sodass ein GIS sie umprojizieren kann. Die PNG-Vorschau verwendet die Plate-Carrée-Projektion und wirkt daher breiter als die Web-Mercator-Karte auf der Seite.
Die Gruppierung nach Namen legt zwei Gebiete nur dann zusammen, wenn ihre normalisierten Namen übereinstimmen, nach Vereinheitlichung der Groß- und Kleinschreibung und Zusammenfassen von Leerraum. geo_name_counts.csv zeigt die Schreibweisen, die Teilnehmende verwendet haben. Um Varianten wie "Southern", "the south" und "southern drawl" zusammenzuführen, codieren Sie geo_names.csv um und aggregieren die Polygone selbst, oder lassen Sie Teilnehmende stattdessen aus Labels wählen. Punkte und Linien werden nicht aggregiert, und eine Heatmap mit dem Anteil 1,0 überall dort, wo sie schattiert ist, bedeutet, dass nur eine teilnehmende Person dieses Label gezeichnet hat.
Der Export geojson schreibt jede Zeichnung mit ihrer teilnehmenden Person und ihrem Item, zur Analyse in QGIS, R (sf) oder Python (geopandas).
Weiterführende Informationen
- Karten - Alle Optionen, Grundkarten und Bedienelemente von
geo_annotation - Linguistische Feldforschung - Interlineare Glossierung, FLEx und Toolbox
- Online-Verhaltensexperimente - Teilnehmende rekrutieren und screenen
Implementierungsdetails finden Sie in der Quelldokumentation.