Rahkakavee Baskaran commited on
Commit
fb00699
1 Parent(s): a245a12

add pipeline wrapper

Browse files
Files changed (2) hide show
  1. pipeline.py +69 -0
  2. taxonomy.json +974 -0
pipeline.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Any, Dict, List
2
+ from sentence_transformers import SentenceTransformer
3
+ from sentence_transformers import util
4
+ import torch
5
+ import json
6
+
7
+
8
+ class PipelineWrapper:
9
+
10
+ """This class is a wrapper for classifying gov datatset titles into the musterdatenkatalog taxonomy.
11
+ It uses the sentence-transformers library to encode the text into embeddings and then uses semantic search.
12
+ """
13
+
14
+ def __init__(self, path=""):
15
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
16
+ self.model = SentenceTransformer(path, device=device, use_auth_token=True)
17
+ self.taxonomy = "taxonomy.json"
18
+ self.taxonomy_labels = None
19
+ self.taxonomy_embeddings = None
20
+ self.load_taxonomy_labels()
21
+ self.get_taxonomy_embeddings()
22
+
23
+ def __call__(self, queries: list) -> list:
24
+ return self.predict(queries)
25
+
26
+ def load_taxonomy_labels(self) -> None:
27
+ with open(self.taxonomy, "r") as f:
28
+ taxonomy = json.load(f)
29
+ self.taxonomy_labels = [el["group"] + " - " + el["label"] for el in taxonomy]
30
+ self.taxonomy_labels.remove("Sonstiges - Sonstiges")
31
+
32
+ def get_taxonomy_embeddings(self) -> None:
33
+ self.taxonomy_embeddings = self.model.encode(
34
+ self.taxonomy_labels, convert_to_tensor=True
35
+ )
36
+
37
+ def predict(self, queries: list) -> list:
38
+ """Predicts the taxonomy labels for the given queries.
39
+
40
+ Parameters
41
+ ----------
42
+ queries : list
43
+ List of queries to predict. Format is a list of dictionaries with the following keys: "id", "title"
44
+
45
+ Returns
46
+ -------
47
+ list
48
+ List of dictionaries with the following keys: "id", "title", "prediction"
49
+ """
50
+ texts = [el["title"] for el in queries]
51
+ query_embeddings = self.model.encode(texts, convert_to_tensor=True)
52
+ predictions = util.semantic_search(
53
+ query_embeddings=query_embeddings,
54
+ corpus_embeddings=self.taxonomy_embeddings,
55
+ top_k=1,
56
+ )
57
+
58
+ results = []
59
+
60
+ for query, prediction in zip(queries, predictions):
61
+ results.append(
62
+ {
63
+ "id": query["id"],
64
+ "title": query["title"],
65
+ "prediction": self.taxonomy_labels[prediction[0]["corpus_id"]],
66
+ }
67
+ )
68
+
69
+ return results
taxonomy.json ADDED
@@ -0,0 +1,974 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "label": "ÖPNV - Liniennetz Sollfahrdaten Echtzeitdaten",
4
+ "group": "Verkehr"
5
+ },
6
+ {
7
+ "label": "Baumbestand - Baumfällung",
8
+ "group": "Flora und Fauna"
9
+ },
10
+ {
11
+ "label": "Grillplatz",
12
+ "group": "Freizeit"
13
+ },
14
+ {
15
+ "label": "Straßenreinigung",
16
+ "group": "Abfallentsorgung"
17
+ },
18
+ {
19
+ "label": "Arbeitslosigkeit",
20
+ "group": "Wirtschaft"
21
+ },
22
+ {
23
+ "label": "Sozialraum ",
24
+ "group": "Raumplanung"
25
+ },
26
+ {
27
+ "label": "Rettungshilfe - Notinsel",
28
+ "group": "Sicherheit"
29
+ },
30
+ {
31
+ "label": "Schule - Schülerzahl",
32
+ "group": "Bildung"
33
+ },
34
+ {
35
+ "label": "Fußverkehr - Laufstrecke und Wanderstrecke",
36
+ "group": "Verkehr"
37
+ },
38
+ {
39
+ "label": "Ampelanlage",
40
+ "group": "Verkehr"
41
+ },
42
+ {
43
+ "label": "Umweltzone",
44
+ "group": "Klimaschutz und Umweltschutz"
45
+ },
46
+ {
47
+ "label": "Gästezahl",
48
+ "group": "Tourismus"
49
+ },
50
+ {
51
+ "label": "Wahl - Kommunalwahl",
52
+ "group": "Politische Partizipation"
53
+ },
54
+ {
55
+ "label": "Haushalt - Außerplanmäßige Aufwendung",
56
+ "group": "Finanzen"
57
+ },
58
+ {
59
+ "label": "Museum - Besucherzahl",
60
+ "group": "Kultur"
61
+ },
62
+ {
63
+ "label": "Rettungsdienst - Defibrillator",
64
+ "group": "Gesundheit"
65
+ },
66
+ {
67
+ "label": "Quelle - Personalverzeichnis",
68
+ "group": "Geschichte"
69
+ },
70
+ {
71
+ "label": "Bad und Freibad",
72
+ "group": "Freizeit"
73
+ },
74
+ {
75
+ "label": "Grundstücksbewertung",
76
+ "group": "Bau"
77
+ },
78
+ {
79
+ "label": "Gesetzestext",
80
+ "group": "Justiz"
81
+ },
82
+ {
83
+ "label": "Volkshochschule - Veranstaltung",
84
+ "group": "Bildung"
85
+ },
86
+ {
87
+ "label": "Schiffsverkehr und Fährverkehr - Anlegestelle",
88
+ "group": "Verkehr"
89
+ },
90
+ {
91
+ "label": "Liegenschaft - Liegenschaftskataster ",
92
+ "group": "Raumplanung"
93
+ },
94
+ {
95
+ "label": "Telefonverzeichnis",
96
+ "group": "Bürgerservice"
97
+ },
98
+ {
99
+ "label": "Stadtplan ",
100
+ "group": "Raumplanung"
101
+ },
102
+ {
103
+ "label": "Beteiligung",
104
+ "group": "Wirtschaft"
105
+ },
106
+ {
107
+ "label": "Baustelle",
108
+ "group": "Bau"
109
+ },
110
+ {
111
+ "label": "Kindertageseinrichtung - Standort",
112
+ "group": "Bildung"
113
+ },
114
+ {
115
+ "label": "Finanzielle Unterstützung - Grundsicherung",
116
+ "group": "Soziale Hilfe"
117
+ },
118
+ {
119
+ "label": "Flucht - Flüchtlingsunterbringung",
120
+ "group": "Soziale Hilfe"
121
+ },
122
+ {
123
+ "label": "Pressemitteilung und Veröffentlichung",
124
+ "group": "Öffentlichkeitsarbeit"
125
+ },
126
+ {
127
+ "label": "Termin",
128
+ "group": "Bürgerservice"
129
+ },
130
+ {
131
+ "label": "Sondernutzung",
132
+ "group": "Verkehr"
133
+ },
134
+ {
135
+ "label": "ÖPNV - Fahrgastzahl",
136
+ "group": "Verkehr"
137
+ },
138
+ {
139
+ "label": "Rettungshilfe - Waldrettungspunkt",
140
+ "group": "Sicherheit"
141
+ },
142
+ {
143
+ "label": "Staatsangehörigkeit",
144
+ "group": "Bevölkerungsstruktur"
145
+ },
146
+ {
147
+ "label": "Bibliothek - Budget",
148
+ "group": "Bildung"
149
+ },
150
+ {
151
+ "label": "Arzt",
152
+ "group": "Gesundheit"
153
+ },
154
+ {
155
+ "label": "Schule - Wunschschule",
156
+ "group": "Bildung"
157
+ },
158
+ {
159
+ "label": "Bibliothek - Ausleihe",
160
+ "group": "Bildung"
161
+ },
162
+ {
163
+ "label": "Dienstleistung - Postfiliale",
164
+ "group": "Wirtschaft"
165
+ },
166
+ {
167
+ "label": "Musikschule - Unterrichtsangebot",
168
+ "group": "Bildung"
169
+ },
170
+ {
171
+ "label": "Radioaktivitätsmessung",
172
+ "group": "Klimaschutz und Umweltschutz"
173
+ },
174
+ {
175
+ "label": "Bauleitplan ",
176
+ "group": "Raumplanung"
177
+ },
178
+ {
179
+ "label": "KFZ - Autobahn",
180
+ "group": "Verkehr"
181
+ },
182
+ {
183
+ "label": "Feuerwehr - Personal",
184
+ "group": "Sicherheit"
185
+ },
186
+ {
187
+ "label": "Unterkunft - Campingplatz",
188
+ "group": "Tourismus"
189
+ },
190
+ {
191
+ "label": "Liegenschaft - Satzung ",
192
+ "group": "Raumplanung"
193
+ },
194
+ {
195
+ "label": "Haushalt - Plan",
196
+ "group": "Finanzen"
197
+ },
198
+ {
199
+ "label": "Dienstleistung",
200
+ "group": "Bürgerservice"
201
+ },
202
+ {
203
+ "label": "Haushalt - Controlling",
204
+ "group": "Finanzen"
205
+ },
206
+ {
207
+ "label": "Wohnungsbestand",
208
+ "group": "Bau"
209
+ },
210
+ {
211
+ "label": "Hebamme",
212
+ "group": "Gesundheit"
213
+ },
214
+ {
215
+ "label": "KFZ - Parkplatz",
216
+ "group": "Verkehr"
217
+ },
218
+ {
219
+ "label": "Fußverkehr - Gehweg",
220
+ "group": "Verkehr"
221
+ },
222
+ {
223
+ "label": "Religiöse Einrichtung",
224
+ "group": "Kultur"
225
+ },
226
+ {
227
+ "label": "KFZ - Messung",
228
+ "group": "Verkehr"
229
+ },
230
+ {
231
+ "label": "ÖPNV - Aufzug und Rolltreppe",
232
+ "group": "Verkehr"
233
+ },
234
+ {
235
+ "label": "Bibliothek - Besucherzahl",
236
+ "group": "Bildung"
237
+ },
238
+ {
239
+ "label": "Open Data - Planung",
240
+ "group": "Digitalisierung"
241
+ },
242
+ {
243
+ "label": "Schule - Schulentwicklungsplan",
244
+ "group": "Bildung"
245
+ },
246
+ {
247
+ "label": "Wahl - Straßenverzeichnis",
248
+ "group": "Politische Partizipation"
249
+ },
250
+ {
251
+ "label": "Infektion",
252
+ "group": "Gesundheit"
253
+ },
254
+ {
255
+ "label": "Unterkunft - Privatunterkunft",
256
+ "group": "Tourismus"
257
+ },
258
+ {
259
+ "label": "KFZ - Taxistand",
260
+ "group": "Verkehr"
261
+ },
262
+ {
263
+ "label": "Wahl - Europawahl",
264
+ "group": "Politische Partizipation"
265
+ },
266
+ {
267
+ "label": "Lehrpfad und Wanderpfad",
268
+ "group": "Kultur"
269
+ },
270
+ {
271
+ "label": "Fläche - Naturschutzgebiet",
272
+ "group": "Flora und Fauna"
273
+ },
274
+ {
275
+ "label": "Container",
276
+ "group": "Abfallentsorgung"
277
+ },
278
+ {
279
+ "label": "KFZ - Fahrzeugzulassung",
280
+ "group": "Verkehr"
281
+ },
282
+ {
283
+ "label": "Messung",
284
+ "group": "Wetter"
285
+ },
286
+ {
287
+ "label": "Rettungshilfe - Notfallnummer",
288
+ "group": "Sicherheit"
289
+ },
290
+ {
291
+ "label": "Quelle - Historische Karte",
292
+ "group": "Geschichte"
293
+ },
294
+ {
295
+ "label": "Unterkunft - Hotel",
296
+ "group": "Tourismus"
297
+ },
298
+ {
299
+ "label": "Bürofläche Industriefläche Gewerbefläche",
300
+ "group": "Wirtschaft"
301
+ },
302
+ {
303
+ "label": "Wirtschaftsförderung",
304
+ "group": "Wirtschaft"
305
+ },
306
+ {
307
+ "label": "Unterkunft - Herberge",
308
+ "group": "Tourismus"
309
+ },
310
+ {
311
+ "label": "Raumgliederung - Ortsteil ",
312
+ "group": "Raumplanung"
313
+ },
314
+ {
315
+ "label": "Vorname",
316
+ "group": "Bevölkerungsstruktur"
317
+ },
318
+ {
319
+ "label": "Haushalt - Zuwendung und Förderung",
320
+ "group": "Finanzen"
321
+ },
322
+ {
323
+ "label": "Haushalt - Satzung",
324
+ "group": "Finanzen"
325
+ },
326
+ {
327
+ "label": "Spielplatz und Spielstätte ",
328
+ "group": "Freizeit"
329
+ },
330
+ {
331
+ "label": "Feuerwehr - Standort",
332
+ "group": "Sicherheit"
333
+ },
334
+ {
335
+ "label": "Quelle - Entschädigung",
336
+ "group": "Geschichte"
337
+ },
338
+ {
339
+ "label": "Friedhof - Grabstätte",
340
+ "group": "Kultur"
341
+ },
342
+ {
343
+ "label": "Migrationshintergrund",
344
+ "group": "Bevölkerungsstruktur"
345
+ },
346
+ {
347
+ "label": "Stellenausschreibung",
348
+ "group": "Städtisches Personal"
349
+ },
350
+ {
351
+ "label": "Abfallmenge",
352
+ "group": "Abfallentsorgung"
353
+ },
354
+ {
355
+ "label": "Angebot und Beratungsstelle",
356
+ "group": "Soziale Hilfe"
357
+ },
358
+ {
359
+ "label": "Bericht und Analyse - Wasser",
360
+ "group": "Klimaschutz und Umweltschutz"
361
+ },
362
+ {
363
+ "label": "Flugverkehr - Flughafen",
364
+ "group": "Verkehr"
365
+ },
366
+ {
367
+ "label": "Unfall",
368
+ "group": "Verkehr"
369
+ },
370
+ {
371
+ "label": "Bericht und Analyse - Verkehrsmessung",
372
+ "group": "Klimaschutz und Umweltschutz"
373
+ },
374
+ {
375
+ "label": "Bauvorhaben",
376
+ "group": "Bau"
377
+ },
378
+ {
379
+ "label": "Abgabestelle",
380
+ "group": "Abfallentsorgung"
381
+ },
382
+ {
383
+ "label": "Haushalt - Sponsoring",
384
+ "group": "Finanzen"
385
+ },
386
+ {
387
+ "label": "Raumgliederung - Straße ",
388
+ "group": "Raumplanung"
389
+ },
390
+ {
391
+ "label": "Rettungsdienst - Rettungsdiensteinsatz",
392
+ "group": "Gesundheit"
393
+ },
394
+ {
395
+ "label": "Fläche - Hundewiese",
396
+ "group": "Flora und Fauna"
397
+ },
398
+ {
399
+ "label": "Volkshochschule - Teilnehmerzahl",
400
+ "group": "Bildung"
401
+ },
402
+ {
403
+ "label": "Ausbildung",
404
+ "group": "Bildung"
405
+ },
406
+ {
407
+ "label": "Wahl - Landtagswahl",
408
+ "group": "Politische Partizipation"
409
+ },
410
+ {
411
+ "label": "Krankenhaus",
412
+ "group": "Gesundheit"
413
+ },
414
+ {
415
+ "label": "Schule - Internetanbindung",
416
+ "group": "Bildung"
417
+ },
418
+ {
419
+ "label": "Energiebericht",
420
+ "group": "Energie"
421
+ },
422
+ {
423
+ "label": "Hitze",
424
+ "group": "Wetter"
425
+ },
426
+ {
427
+ "label": "Open Data - Zugriffszahl",
428
+ "group": "Digitalisierung"
429
+ },
430
+ {
431
+ "label": "Insolvenz",
432
+ "group": "Wirtschaft"
433
+ },
434
+ {
435
+ "label": "Bebauungsplan ",
436
+ "group": "Raumplanung"
437
+ },
438
+ {
439
+ "label": "Raumgliederung - Adresse ",
440
+ "group": "Raumplanung"
441
+ },
442
+ {
443
+ "label": "Feuerwehr - Feuerwehreinsatz",
444
+ "group": "Sicherheit"
445
+ },
446
+ {
447
+ "label": "Raumgliederung - Postleitzahlengebiet ",
448
+ "group": "Raumplanung"
449
+ },
450
+ {
451
+ "label": "Haushalt - Jahresabschluss",
452
+ "group": "Finanzen"
453
+ },
454
+ {
455
+ "label": "Schule - Schulangebot",
456
+ "group": "Bildung"
457
+ },
458
+ {
459
+ "label": "Bürgerbeteiligung - Bürgerhaushalt",
460
+ "group": "Politische Partizipation"
461
+ },
462
+ {
463
+ "label": "Gewässer - Wasserfläche",
464
+ "group": "Flora und Fauna"
465
+ },
466
+ {
467
+ "label": "Gewässer - Pegelstand",
468
+ "group": "Flora und Fauna"
469
+ },
470
+ {
471
+ "label": "Veranstaltung - Angebot",
472
+ "group": "Kultur"
473
+ },
474
+ {
475
+ "label": "Abfallkalender",
476
+ "group": "Abfallentsorgung"
477
+ },
478
+ {
479
+ "label": "Politische Vertretung - Mandatsträger",
480
+ "group": "Politische Partizipation"
481
+ },
482
+ {
483
+ "label": "KFZ - Carsharing",
484
+ "group": "Verkehr"
485
+ },
486
+ {
487
+ "label": "Standort mit Geschichte",
488
+ "group": "Geschichte"
489
+ },
490
+ {
491
+ "label": "Flucht - Flüchtlingszahl",
492
+ "group": "Soziale Hilfe"
493
+ },
494
+ {
495
+ "label": "Fläche - Biotopfläche",
496
+ "group": "Flora und Fauna"
497
+ },
498
+ {
499
+ "label": "Zivilschutz und Katastrophenschutz - Kampfmittelfund",
500
+ "group": "Sicherheit"
501
+ },
502
+ {
503
+ "label": "Theater - Programm",
504
+ "group": "Kultur"
505
+ },
506
+ {
507
+ "label": "Bürgerbeteiligung - Umfrage",
508
+ "group": "Politische Partizipation"
509
+ },
510
+ {
511
+ "label": "Wahl - Wahllokal",
512
+ "group": "Politische Partizipation"
513
+ },
514
+ {
515
+ "label": "Wahl - Verbundwahl",
516
+ "group": "Politische Partizipation"
517
+ },
518
+ {
519
+ "label": "Entwässerung",
520
+ "group": "Abfallentsorgung"
521
+ },
522
+ {
523
+ "label": "Rettungshilfe - Anlaufstelle",
524
+ "group": "Sicherheit"
525
+ },
526
+ {
527
+ "label": "Beteiligung an Öffentlicher Wirtschaft - Ausschreibung und Vergabe",
528
+ "group": "Wirtschaft"
529
+ },
530
+ {
531
+ "label": "Kunstwerk",
532
+ "group": "Kultur"
533
+ },
534
+ {
535
+ "label": "Behinderung - Menschen mit Behinderung",
536
+ "group": "Soziale Hilfe"
537
+ },
538
+ {
539
+ "label": "Demografiebericht",
540
+ "group": "Bevölkerungsstruktur"
541
+ },
542
+ {
543
+ "label": "Stromversorgung",
544
+ "group": "Energie"
545
+ },
546
+ {
547
+ "label": "Bericht und Analyse - Luft und Emission",
548
+ "group": "Klimaschutz und Umweltschutz"
549
+ },
550
+ {
551
+ "label": "Musikschule - Teilnehmerzahl",
552
+ "group": "Bildung"
553
+ },
554
+ {
555
+ "label": "Fußverkehr - Fußgängerzone",
556
+ "group": "Verkehr"
557
+ },
558
+ {
559
+ "label": "Bibliothek - Bestand",
560
+ "group": "Bildung"
561
+ },
562
+ {
563
+ "label": "Windenergie",
564
+ "group": "Energie"
565
+ },
566
+ {
567
+ "label": "Wärmeversorgung",
568
+ "group": "Energie"
569
+ },
570
+ {
571
+ "label": "Fläche - Waldfläche",
572
+ "group": "Flora und Fauna"
573
+ },
574
+ {
575
+ "label": "Gesundheitsberichterstattung",
576
+ "group": "Gesundheit"
577
+ },
578
+ {
579
+ "label": "Wahl - Beiratswahl",
580
+ "group": "Politische Partizipation"
581
+ },
582
+ {
583
+ "label": "Ferienangebot",
584
+ "group": "Freizeit"
585
+ },
586
+ {
587
+ "label": "Dienstleistung - Handwerk",
588
+ "group": "Wirtschaft"
589
+ },
590
+ {
591
+ "label": "Friedhof - Standort",
592
+ "group": "Kultur"
593
+ },
594
+ {
595
+ "label": "Politische Vertretung - Gremium",
596
+ "group": "Politische Partizipation"
597
+ },
598
+ {
599
+ "label": "Baufertigstellung",
600
+ "group": "Bau"
601
+ },
602
+ {
603
+ "label": "Hochschule - Studierendenzahl",
604
+ "group": "Bildung"
605
+ },
606
+ {
607
+ "label": "Quelle - Historische Luftaufnahme",
608
+ "group": "Geschichte"
609
+ },
610
+ {
611
+ "label": "Radverkehr - Abstellplatz",
612
+ "group": "Verkehr"
613
+ },
614
+ {
615
+ "label": "Stadtmarketing",
616
+ "group": "Öffentlichkeitsarbeit"
617
+ },
618
+ {
619
+ "label": "Flächennutzung ",
620
+ "group": "Raumplanung"
621
+ },
622
+ {
623
+ "label": "Zivilschutz und Katastrophenschutz - Sirene",
624
+ "group": "Sicherheit"
625
+ },
626
+ {
627
+ "label": "Wasserversorgung",
628
+ "group": "Energie"
629
+ },
630
+ {
631
+ "label": "Solar",
632
+ "group": "Energie"
633
+ },
634
+ {
635
+ "label": "Steuern und Abgaben",
636
+ "group": "Finanzen"
637
+ },
638
+ {
639
+ "label": "Bericht",
640
+ "group": "Soziale Hilfe"
641
+ },
642
+ {
643
+ "label": "WLAN und Mobilfunk",
644
+ "group": "Digitalisierung"
645
+ },
646
+ {
647
+ "label": "Bericht und Analyse - Klimabilanz",
648
+ "group": "Klimaschutz und Umweltschutz"
649
+ },
650
+ {
651
+ "label": "Beteiligung an Öffentlicher Wirtschaft - Beteiligung",
652
+ "group": "Wirtschaft"
653
+ },
654
+ {
655
+ "label": "Flugverkehr - Flugbewegung",
656
+ "group": "Verkehr"
657
+ },
658
+ {
659
+ "label": "Verein",
660
+ "group": "Freizeit"
661
+ },
662
+ {
663
+ "label": "Pflege",
664
+ "group": "Soziale Hilfe"
665
+ },
666
+ {
667
+ "label": "Dienstleistung - Weihnachtsmarkt",
668
+ "group": "Wirtschaft"
669
+ },
670
+ {
671
+ "label": "Ordnungsamt",
672
+ "group": "Sicherheit"
673
+ },
674
+ {
675
+ "label": "Bibliothek - Standort",
676
+ "group": "Bildung"
677
+ },
678
+ {
679
+ "label": "Veranstaltung - Besucherzahl",
680
+ "group": "Kultur"
681
+ },
682
+ {
683
+ "label": "Radverkehr - Messung",
684
+ "group": "Verkehr"
685
+ },
686
+ {
687
+ "label": "Flucht - Integration",
688
+ "group": "Soziale Hilfe"
689
+ },
690
+ {
691
+ "label": "Sitzgelegenheit",
692
+ "group": "Freizeit"
693
+ },
694
+ {
695
+ "label": "Bürgerbeteiligung - Bürgerentscheid",
696
+ "group": "Politische Partizipation"
697
+ },
698
+ {
699
+ "label": "Einwohnerzahl",
700
+ "group": "Bevölkerungsstruktur"
701
+ },
702
+ {
703
+ "label": "Website",
704
+ "group": "Digitalisierung"
705
+ },
706
+ {
707
+ "label": "Behinderung - Behindertenwohnheim",
708
+ "group": "Soziale Hilfe"
709
+ },
710
+ {
711
+ "label": "Brunnen",
712
+ "group": "Bau"
713
+ },
714
+ {
715
+ "label": "Finanzielle Unterstützung - Wohngeld",
716
+ "group": "Soziale Hilfe"
717
+ },
718
+ {
719
+ "label": "Öffentliche Toilette",
720
+ "group": "Gesundheit"
721
+ },
722
+ {
723
+ "label": "Schiffsverkehr und Fährverkehr - Fracht",
724
+ "group": "Verkehr"
725
+ },
726
+ {
727
+ "label": "Müllgebühr",
728
+ "group": "Abfallentsorgung"
729
+ },
730
+ {
731
+ "label": "Wahl - Bundestagswahl",
732
+ "group": "Politische Partizipation"
733
+ },
734
+ {
735
+ "label": "Wirtschaftsstandort",
736
+ "group": "Wirtschaft"
737
+ },
738
+ {
739
+ "label": "Baumbestand - Baumkataster",
740
+ "group": "Flora und Fauna"
741
+ },
742
+ {
743
+ "label": "Sehenswürdigkeit",
744
+ "group": "Tourismus"
745
+ },
746
+ {
747
+ "label": "Denkmal",
748
+ "group": "Kultur"
749
+ },
750
+ {
751
+ "label": "Bürgerbeteiligung - Entwicklung und Information",
752
+ "group": "Politische Partizipation"
753
+ },
754
+ {
755
+ "label": "Dienstleistung - Einzelhandel",
756
+ "group": "Wirtschaft"
757
+ },
758
+ {
759
+ "label": "Radverkehr - Radweg und Radroute",
760
+ "group": "Verkehr"
761
+ },
762
+ {
763
+ "label": "Justizeinrichtung",
764
+ "group": "Justiz"
765
+ },
766
+ {
767
+ "label": "Geförderter Wohnungsbau",
768
+ "group": "Soziale Hilfe"
769
+ },
770
+ {
771
+ "label": "Theater - Besucherzahl",
772
+ "group": "Kultur"
773
+ },
774
+ {
775
+ "label": "Tiefbau",
776
+ "group": "Bau"
777
+ },
778
+ {
779
+ "label": "Fläche - Jagdbezirk",
780
+ "group": "Flora und Fauna"
781
+ },
782
+ {
783
+ "label": "Jugendeinrichtung",
784
+ "group": "Freizeit"
785
+ },
786
+ {
787
+ "label": "ÖPNV - Vertriebsstelle",
788
+ "group": "Verkehr"
789
+ },
790
+ {
791
+ "label": "Raumgliederung - Block ",
792
+ "group": "Raumplanung"
793
+ },
794
+ {
795
+ "label": "Verband",
796
+ "group": "Politische Partizipation"
797
+ },
798
+ {
799
+ "label": "Berufspendler",
800
+ "group": "Wirtschaft"
801
+ },
802
+ {
803
+ "label": "Raumgliederung - Hausnummer ",
804
+ "group": "Raumplanung"
805
+ },
806
+ {
807
+ "label": "Urban Gardening",
808
+ "group": "Flora und Fauna"
809
+ },
810
+ {
811
+ "label": "Museum - Standort",
812
+ "group": "Kultur"
813
+ },
814
+ {
815
+ "label": "Sonstiges",
816
+ "group": "Sonstiges"
817
+ },
818
+ {
819
+ "label": "Schiffsverkehr und Fährverkehr - Passagier",
820
+ "group": "Verkehr"
821
+ },
822
+ {
823
+ "label": "Radverkehr - Ladestation",
824
+ "group": "Verkehr"
825
+ },
826
+ {
827
+ "label": "Dienstleistung - Wochenmarkt",
828
+ "group": "Wirtschaft"
829
+ },
830
+ {
831
+ "label": "Hundekottüte",
832
+ "group": "Bürgerservice"
833
+ },
834
+ {
835
+ "label": "Wahl - Kandidatenliste",
836
+ "group": "Politische Partizipation"
837
+ },
838
+ {
839
+ "label": "Haushaltszusammensetzung",
840
+ "group": "Bevölkerungsstruktur"
841
+ },
842
+ {
843
+ "label": "Fläche - Grünfläche und Grünflächenkataster",
844
+ "group": "Flora und Fauna"
845
+ },
846
+ {
847
+ "label": "Kriminalitätsstatistik",
848
+ "group": "Sicherheit"
849
+ },
850
+ {
851
+ "label": "Beschäftigung",
852
+ "group": "Wirtschaft"
853
+ },
854
+ {
855
+ "label": "Finanzielle Unterstützung - Förderung",
856
+ "group": "Soziale Hilfe"
857
+ },
858
+ {
859
+ "label": "Stadtführung",
860
+ "group": "Tourismus"
861
+ },
862
+ {
863
+ "label": "Polizei",
864
+ "group": "Sicherheit"
865
+ },
866
+ {
867
+ "label": "Schule - Schuleingangsuntersuchung",
868
+ "group": "Bildung"
869
+ },
870
+ {
871
+ "label": "KFZ - Bußgeld",
872
+ "group": "Verkehr"
873
+ },
874
+ {
875
+ "label": "Radverkehr - Verleih",
876
+ "group": "Verkehr"
877
+ },
878
+ {
879
+ "label": "Baugenehmigung",
880
+ "group": "Bau"
881
+ },
882
+ {
883
+ "label": "Apotheke",
884
+ "group": "Gesundheit"
885
+ },
886
+ {
887
+ "label": "Kindertageseinrichtung - Betreuungsplatz",
888
+ "group": "Bildung"
889
+ },
890
+ {
891
+ "label": "Flucht - Asylbewerber",
892
+ "group": "Soziale Hilfe"
893
+ },
894
+ {
895
+ "label": "Hochschule - Standort",
896
+ "group": "Bildung"
897
+ },
898
+ {
899
+ "label": "Coworking",
900
+ "group": "Wirtschaft"
901
+ },
902
+ {
903
+ "label": "Politische Vertretung - Bürgermeister",
904
+ "group": "Politische Partizipation"
905
+ },
906
+ {
907
+ "label": "Anliegenmanagement",
908
+ "group": "Bürgerservice"
909
+ },
910
+ {
911
+ "label": "Gewerbeanmeldung",
912
+ "group": "Wirtschaft"
913
+ },
914
+ {
915
+ "label": "Orthofoto ",
916
+ "group": "Raumplanung"
917
+ },
918
+ {
919
+ "label": "Raumgliederung - Stadtgebiet ",
920
+ "group": "Raumplanung"
921
+ },
922
+ {
923
+ "label": "Beleuchtung",
924
+ "group": "Sicherheit"
925
+ },
926
+ {
927
+ "label": "Stellenplan",
928
+ "group": "Städtisches Personal"
929
+ },
930
+ {
931
+ "label": "Schule - Standort",
932
+ "group": "Bildung"
933
+ },
934
+ {
935
+ "label": "Fläche - Ausgleichsfläche",
936
+ "group": "Flora und Fauna"
937
+ },
938
+ {
939
+ "label": "Liegenschaft - Grundstück und Gebäude",
940
+ "group": "Raumplanung"
941
+ },
942
+ {
943
+ "label": "Wartezeit",
944
+ "group": "Bürgerservice"
945
+ },
946
+ {
947
+ "label": "Haushalt - Produktplan",
948
+ "group": "Finanzen"
949
+ },
950
+ {
951
+ "label": "KFZ - Elektrotankstelle",
952
+ "group": "Verkehr"
953
+ },
954
+ {
955
+ "label": "Quelle - Archivbestand",
956
+ "group": "Geschichte"
957
+ },
958
+ {
959
+ "label": "KFZ - Tankstelle",
960
+ "group": "Verkehr"
961
+ },
962
+ {
963
+ "label": "Hochschule - Studentenwohnheim",
964
+ "group": "Bildung"
965
+ },
966
+ {
967
+ "label": "Wahl - Wahlkreis und Wahlbezirk",
968
+ "group": "Politische Partizipation"
969
+ },
970
+ {
971
+ "label": "Religionszugehörigkeit",
972
+ "group": "Bevölkerungsstruktur"
973
+ }
974
+ ]