kapllan commited on
Commit
cea575d
1 Parent(s): af0a76f

Upload 4 files

Browse files
Files changed (4) hide show
  1. app.py +96 -44
  2. id2label.json +233 -225
  3. label2id.json +235 -0
  4. topics_hierarchy.json +240 -240
app.py CHANGED
@@ -1,38 +1,53 @@
 
 
 
 
 
 
 
1
  import fasttext
2
  import gradio as gr
3
  import joblib
4
- import json as js
5
  import omikuji
6
- import os
7
- import re
8
- from collections import defaultdict
9
  from huggingface_hub import snapshot_download
10
- from typing import List, Tuple, Dict
 
11
 
12
- from install_packages import download_model
13
 
14
- download_model('https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin', 'lid.176.bin')
 
 
 
15
 
16
  # Download the model files from Hugging Face
17
- for repo_id in ['kapllan/omikuji-bonsai-parliament-de-spacy', 'kapllan/omikuji-bonsai-parliament-fr-spacy',
18
- 'kapllan/omikuji-bonsai-parliament-it-spacy']:
 
 
 
 
 
 
19
  if not os.path.exists(repo_id):
20
  os.makedirs(repo_id)
21
- model_dir = snapshot_download(repo_id=repo_id, local_dir=repo_id)
22
 
23
- lang_model = fasttext.load_model('lid.176.bin')
24
 
25
- with open('./id2label.json', 'r') as f:
26
- id2label = js.load(f)
27
 
28
- with open('topics_hierarchy.json', 'r') as f:
 
 
 
 
29
  topics_hierarchy = js.load(f)
30
 
31
 
32
  def map_language(language: str) -> str:
33
- language_mapping = {'de': 'German',
34
- 'it': 'Italian',
35
- 'fr': 'French'}
36
  if language in language_mapping.keys():
37
  return language_mapping[language]
38
  else:
@@ -41,19 +56,25 @@ def map_language(language: str) -> str:
41
 
42
  def find_model(language: str):
43
  vectorizer, model = None, None
44
- if language in ['de', 'fr', 'it']:
45
- path_to_vectorizer = f'./kapllan/omikuji-bonsai-parliament-{language}-spacy/vectorizer'
46
- path_to_model = f'./kapllan/omikuji-bonsai-parliament-{language}-spacy/omikuji-model'
 
 
 
 
47
  vectorizer = joblib.load(path_to_vectorizer)
48
  model = omikuji.Model.load(path_to_model)
49
  return vectorizer, model
50
 
51
 
52
  def predict_lang(text: str) -> str:
53
- text = re.sub(r'\n', '', text) # Remove linebreaks because fasttext cannot process that otherwise
 
 
54
  predictions = lang_model.predict(text, k=1) # returns top 2 matching languages
55
  language = predictions[0][0] # returns top 2 matching languages
56
- language = re.sub(r'__label__', '', language) # returns top 2 matching languages
57
  return language
58
 
59
 
@@ -70,28 +91,31 @@ def predict_topic(text: str) -> [List[str], str]:
70
  continue
71
  feature_values = [(col, row[0, col]) for col in row.nonzero()[1]]
72
  for subj_id, score in model.predict(feature_values, top_k=1000):
 
73
  results.append((id2label[str(subj_id)], score))
74
  return results, language
75
 
76
 
77
  def get_row_color(type: str):
78
- if 'main' in type.lower():
79
- return 'background-color: darkgrey;'
80
- if 'sub' in type.lower():
81
- return 'background-color: lightgrey;'
82
 
83
 
84
  def generate_html_table(topics: List[Tuple[str, str, float]]):
85
  html = '<table style="width:100%; border: 1px solid black; border-collapse: collapse;">'
86
 
87
- html += '<tr><th>Type</th><th>Topic</th><th>Score</th></tr>'
88
  for type, topic, score in topics:
89
  color = get_row_color(type)
90
- topic = f"<strong>{topic}</strong>" if 'main' in type.lower() else topic
91
- type = f"<strong>{type}</strong>" if 'main' in type.lower() else type
92
- score = f"<strong>{score}</strong>" if 'main' in type.lower() else score
93
- html += f'<tr style="{color}"><td>{type}</td><td>{topic}</td><td>{score}</td></tr>'
94
- html += '</table>'
 
 
95
  return html
96
 
97
 
@@ -104,19 +128,22 @@ def restructure_topics(topics: List[Tuple[str, float]]) -> List[Tuple[str, str,
104
 
105
  for predicted_topic, score in topics:
106
  for main_topic, sub_topics in topics_hierarchy.items():
107
- if main_topic in topics_as_dict.keys() and predicted_topic != main_topic and predicted_topic in sub_topics:
 
 
 
 
108
  topics_as_dict[main_topic].append(predicted_topic)
109
 
110
  topics_restructured = []
111
  for predicted_main_topic, predicted_sub_topics in topics_as_dict.items():
112
  if len(predicted_sub_topics) > 0:
113
  score = [t for t in topics if t[0] == predicted_main_topic][0][1]
114
- topics_restructured.append(
115
- ('Main Topic', predicted_main_topic, score))
116
  predicted_sub_topics_with_scores = []
117
  for pst in predicted_sub_topics:
118
  score = [t for t in topics if t[0] == pst][0][1]
119
- entry = ('Sub Topic', pst, score)
120
  if entry not in predicted_sub_topics_with_scores:
121
  predicted_sub_topics_with_scores.append(entry)
122
  for x in predicted_sub_topics_with_scores:
@@ -127,7 +154,7 @@ def restructure_topics(topics: List[Tuple[str, float]]) -> List[Tuple[str, str,
127
  def topic_modeling(text: str, threshold: float) -> [List[str], str]:
128
  # Prepare labels and scores for the plot
129
  sorted_topics, language = predict_topic(text)
130
- if len(sorted_topics) > 0 and language in ['German', 'French', 'Italian']:
131
  sorted_topics = [t for t in sorted_topics if t[1] >= threshold]
132
  else:
133
  sorted_topics = []
@@ -144,15 +171,40 @@ with gr.Blocks() as iface:
144
  with gr.Column():
145
  input_text = gr.Textbox(lines=10, placeholder="Enter a document")
146
  submit_button = gr.Button("Submit")
147
- threshold_slider = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label="Score Threshold",
148
- value=0.0)
149
- language_text = gr.Textbox(lines=1, placeholder="Detected language will be shown here...",
150
- interactive=False, label="Detected Language")
 
 
 
 
 
151
  with gr.Column():
152
  output_data = gr.HTML()
153
 
154
- submit_button.click(topic_modeling, inputs=[input_text, threshold_slider],
155
- outputs=[output_data, language_text])
 
 
 
 
 
 
156
 
 
 
 
 
 
 
 
 
 
157
  # Launch the app
158
- iface.launch(share=True)
 
 
 
 
 
 
1
+ import argparse
2
+ import json as js
3
+ import os
4
+ import re
5
+ from pathlib import Path
6
+ from typing import List, Tuple
7
+
8
  import fasttext
9
  import gradio as gr
10
  import joblib
 
11
  import omikuji
 
 
 
12
  from huggingface_hub import snapshot_download
13
+ from parltopic.utils.helper import get_main_config
14
+ from prepare_everything import download_model
15
 
16
+ config = get_main_config()
17
 
18
+ download_model(
19
+ "https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin",
20
+ Path(config["paths"]["resources"]) / "lid.176.bin",
21
+ )
22
 
23
  # Download the model files from Hugging Face
24
+
25
+ model_names = [
26
+ "omikuji-bonsai-parliament-spacy-de-all_topics-input_long",
27
+ "omikuji-bonsai-parliament-spacy-fr-all_topics-input_long",
28
+ "omikuji-bonsai-parliament-spacy-it-all_topics-input_long",
29
+ ]
30
+
31
+ for repo_id in model_names:
32
  if not os.path.exists(repo_id):
33
  os.makedirs(repo_id)
34
+ model_dir = snapshot_download(repo_id=f"kapllan/{repo_id}", local_dir=f"kapllan/{repo_id}")
35
 
36
+ lang_model = fasttext.load_model("lid.176.bin")
37
 
38
+ with open(Path(config["paths"]["datasets"]) / "label2id.json", "r") as f:
39
+ label2id = js.load(f)
40
 
41
+ id2label = {}
42
+
43
+ for key, value in label2id.items():
44
+ id2label[str(value)] = key
45
+ with open(Path(config["paths"]["resources"]) / "topics_hierarchy.json", "r") as f:
46
  topics_hierarchy = js.load(f)
47
 
48
 
49
  def map_language(language: str) -> str:
50
+ language_mapping = {"de": "German", "it": "Italian", "fr": "French"}
 
 
51
  if language in language_mapping.keys():
52
  return language_mapping[language]
53
  else:
 
56
 
57
  def find_model(language: str):
58
  vectorizer, model = None, None
59
+ if language in ["de", "fr", "it"]:
60
+ path_to_vectorizer = (
61
+ f"./kapllan/omikuji-bonsai-parliament-spacy-{language}-all_topics-input_long/vectorizer"
62
+ )
63
+ path_to_model = (
64
+ f"./kapllan/omikuji-bonsai-parliament-spacy-{language}-all_topics-input_long/omikuji-model"
65
+ )
66
  vectorizer = joblib.load(path_to_vectorizer)
67
  model = omikuji.Model.load(path_to_model)
68
  return vectorizer, model
69
 
70
 
71
  def predict_lang(text: str) -> str:
72
+ text = re.sub(
73
+ r"\n", "", text
74
+ ) # Remove linebreaks because fasttext cannot process that otherwise
75
  predictions = lang_model.predict(text, k=1) # returns top 2 matching languages
76
  language = predictions[0][0] # returns top 2 matching languages
77
+ language = re.sub(r"__label__", "", language) # returns top 2 matching languages
78
  return language
79
 
80
 
 
91
  continue
92
  feature_values = [(col, row[0, col]) for col in row.nonzero()[1]]
93
  for subj_id, score in model.predict(feature_values, top_k=1000):
94
+ score = round(score*100, 2)
95
  results.append((id2label[str(subj_id)], score))
96
  return results, language
97
 
98
 
99
  def get_row_color(type: str):
100
+ if "main" in type.lower():
101
+ return "background-color: darkgrey;"
102
+ if "sub" in type.lower():
103
+ return "background-color: lightgrey;"
104
 
105
 
106
  def generate_html_table(topics: List[Tuple[str, str, float]]):
107
  html = '<table style="width:100%; border: 1px solid black; border-collapse: collapse;">'
108
 
109
+ html += "<tr><th>Type</th><th>Topic</th><th>Score</th></tr>"
110
  for type, topic, score in topics:
111
  color = get_row_color(type)
112
+ topic = f"<strong>{topic}</strong>" if "main" in type.lower() else topic
113
+ type = f"<strong>{type}</strong>" if "main" in type.lower() else type
114
+ score = f"<strong>{score}</strong>" if "main" in type.lower() else score
115
+ html += (
116
+ f'<tr style="{color}"><td>{type}</td><td>{topic}</td><td>{score}</td></tr>'
117
+ )
118
+ html += "</table>"
119
  return html
120
 
121
 
 
128
 
129
  for predicted_topic, score in topics:
130
  for main_topic, sub_topics in topics_hierarchy.items():
131
+ if (
132
+ main_topic in topics_as_dict.keys()
133
+ and predicted_topic != main_topic
134
+ and predicted_topic in sub_topics
135
+ ):
136
  topics_as_dict[main_topic].append(predicted_topic)
137
 
138
  topics_restructured = []
139
  for predicted_main_topic, predicted_sub_topics in topics_as_dict.items():
140
  if len(predicted_sub_topics) > 0:
141
  score = [t for t in topics if t[0] == predicted_main_topic][0][1]
142
+ topics_restructured.append(("Main Topic", predicted_main_topic, score))
 
143
  predicted_sub_topics_with_scores = []
144
  for pst in predicted_sub_topics:
145
  score = [t for t in topics if t[0] == pst][0][1]
146
+ entry = ("Sub Topic", pst, score)
147
  if entry not in predicted_sub_topics_with_scores:
148
  predicted_sub_topics_with_scores.append(entry)
149
  for x in predicted_sub_topics_with_scores:
 
154
  def topic_modeling(text: str, threshold: float) -> [List[str], str]:
155
  # Prepare labels and scores for the plot
156
  sorted_topics, language = predict_topic(text)
157
+ if len(sorted_topics) > 0 and language in ["German", "French", "Italian"]:
158
  sorted_topics = [t for t in sorted_topics if t[1] >= threshold]
159
  else:
160
  sorted_topics = []
 
171
  with gr.Column():
172
  input_text = gr.Textbox(lines=10, placeholder="Enter a document")
173
  submit_button = gr.Button("Submit")
174
+ threshold_slider = gr.Slider(
175
+ minimum=0.0, maximum=1.0, step=0.01, label="Score Threshold", value=0.0
176
+ )
177
+ language_text = gr.Textbox(
178
+ lines=1,
179
+ placeholder="Detected language will be shown here...",
180
+ interactive=False,
181
+ label="Detected Language",
182
+ )
183
  with gr.Column():
184
  output_data = gr.HTML()
185
 
186
+ submit_button.click(
187
+ topic_modeling,
188
+ inputs=[input_text, threshold_slider],
189
+ outputs=[output_data, language_text],
190
+ )
191
+
192
+ if __name__ == "__main__":
193
+ parser = argparse.ArgumentParser()
194
 
195
+ parser.add_argument(
196
+ "-ipa",
197
+ "--ip_address",
198
+ default=None,
199
+ type=str,
200
+ help="Specify the IP address of your computer.",
201
+ )
202
+
203
+ args = parser.parse_args()
204
  # Launch the app
205
+ if args.ip_address is None:
206
+ _, public_url = iface.launch(share=True)
207
+ print(f"The app runs here: {public_url}")
208
+
209
+ else:
210
+ iface.launch(server_name=args.ip_address, server_port=8080, show_error=True)
id2label.json CHANGED
@@ -1,227 +1,235 @@
1
  {
2
- "0": "AHV",
3
- "1": "Abfall",
4
- "2": "Abgabe",
5
- "3": "Agrarpolitik",
6
- "4": "Agrarproduktion",
7
- "5": "Altersfragen",
8
- "6": "Arbeit",
9
- "7": "Arbeitslosenversicherung",
10
- "8": "Arbeitslosigkeit",
11
- "9": "Arbeitsmarkt",
12
- "10": "Arbeitsrecht",
13
- "11": "Armee",
14
- "12": "Armut/Ungleichheit",
15
- "13": "Artenvielfalt",
16
- "14": "Asylpolitik",
17
- "15": "Auslandschweizer",
18
- "16": "Ausländerpolitik",
19
- "17": "Aussenpolitik : Ausland",
20
- "18": "Aussenpolitik : Schweiz",
21
- "19": "Aussenwirtschaftspolitik",
22
- "20": "Bankenkrise",
23
- "21": "Bauwesen/Immobilien",
24
- "22": "Behinderung",
25
- "23": "Berg",
26
- "24": "Berufliche Vorsorge",
27
- "25": "Berufsbildung",
28
- "26": "Beschwerderecht",
29
- "27": "Beschäftigung und Arbeit",
30
- "28": "Bewaffnung",
31
- "29": "Beziehung Schweiz - EU",
32
- "30": "Bildung",
33
- "31": "Boden",
34
- "32": "Bürgerrecht",
35
- "33": "Datenschutz",
36
- "34": "Demokratie",
37
- "35": "Digitalisierung",
38
- "36": "Diplomatie",
39
- "37": "Diskriminierung",
40
- "38": "Elektrizität",
41
- "39": "Energie",
42
- "40": "Energiepolitik",
43
- "41": "Erberecht",
44
- "42": "Ernährung",
45
- "43": "Erwerbsersatzordnung",
46
- "44": "Europapolitik",
47
- "45": "Europarat",
48
- "46": "Europarecht",
49
- "47": "Europäische Union",
50
- "48": "Europäisches Parlament",
51
- "49": "Exekutive",
52
- "50": "Familienfragen",
53
- "51": "Familienrecht",
54
- "52": "Familienzulage",
55
- "53": "Finanzausgleich",
56
- "54": "Finanzmarkt",
57
- "55": "Finanzplatz",
58
- "56": "Finanzrecht",
59
- "57": "Finanzwesen",
60
- "58": "Flüchtling",
61
- "59": "Forschung",
62
- "60": "Fortpflanzung",
63
- "61": "Fossile Energie",
64
- "62": "Föderalismus",
65
- "63": "Geld- und Währungspolitik",
66
- "64": "Geldwäscherei",
67
- "65": "Gentechnologie",
68
- "66": "Gerichtswesen",
69
- "67": "Geschichte Ausland",
70
- "68": "Geschichte Schweiz",
71
- "69": "Geschlechterfragen",
72
- "70": "Gesellschaftsfragen",
73
- "71": "Gesundheit",
74
- "72": "Gesundheitspolitik",
75
- "73": "Gewalt",
76
- "74": "Gewerkschaft",
77
- "75": "Globalisierung",
78
- "76": "Grenze",
79
- "77": "Grundrechte",
80
- "78": "Güterverkehr",
81
- "79": "Handel",
82
- "80": "Heil- und Hilfsmittel",
83
- "81": "Informatik",
84
- "82": "Information",
85
- "83": "Informationswissenschaft",
86
- "84": "Internationale Politik",
87
- "85": "Internationales Recht",
88
- "86": "Internet und soziale Medien",
89
- "87": "Interventionspolitik",
90
- "88": "Invalidenversicherung",
91
- "89": "Jagd und Fischerei",
92
- "90": "Kapital",
93
- "91": "Katastrophe",
94
- "92": "Kernenergie",
95
- "93": "Kinder- und Jugendfragen",
96
- "94": "Kinderrechte",
97
- "95": "Kindes- und Erwachsenenschutzrecht",
98
- "96": "Klimafragen",
99
- "97": "Konkursrecht",
100
- "98": "Konsum",
101
- "99": "Korruption",
102
- "100": "Krankenversicherung",
103
- "101": "Krieg",
104
- "102": "Krise",
105
- "103": "Kultur",
106
- "104": "Landwirtschaft",
107
- "105": "Luft",
108
- "106": "Luftfahrt",
109
- "107": "Lärm",
110
- "108": "Medien",
111
- "109": "Medien / Kommunikation",
112
- "110": "Medienrecht",
113
- "111": "Medizinalberuf",
114
- "112": "Menschenrechte",
115
- "113": "Miet- und Wohnungswesen",
116
- "114": "Migration",
117
- "115": "Migrationsbewegung",
118
- "116": "Mutterschaftsversicherung",
119
- "117": "Nationalbank",
120
- "118": "Obligationenrecht",
121
- "119": "Parlament",
122
- "120": "Parlament Ausland",
123
- "121": "Parlament Schweiz",
124
- "122": "Patient",
125
- "123": "Personenrecht",
126
- "124": "Pflege",
127
- "125": "Post",
128
- "126": "Presse",
129
- "127": "Privatversicherung",
130
- "128": "Produktion",
131
- "129": "Radio und Fernsehen",
132
- "130": "Rassismus",
133
- "131": "Ratsmitglied",
134
- "132": "Raumplanung",
135
- "133": "Raumplanung und Wohnungswesen",
136
- "134": "Recht Allgemein",
137
- "135": "Rechte und Freiheiten",
138
- "136": "Rechtswissenschaft",
139
- "137": "Religionsfragen",
140
- "138": "Sachenrecht",
141
- "139": "Sans-Papiers",
142
- "140": "Schiedsgerichtsbarkeit",
143
- "141": "Schienenverkehr",
144
- "142": "Schifffahrt",
145
- "143": "Schule",
146
- "144": "Service public",
147
- "145": "Sicherheitspolitik",
148
- "146": "Sicherheitspolitik/Friedenspolitik",
149
- "147": "Soziale Fragen",
150
- "148": "Sozialer Schutz",
151
- "149": "Sozialhilfe",
152
- "150": "Sozialpolitik",
153
- "151": "Sozialversicherung",
154
- "152": "Spiel",
155
- "153": "Spital",
156
- "154": "Sport",
157
- "155": "Sprache",
158
- "156": "Staat",
159
- "157": "Staatspolitik",
160
- "158": "Staatssouveränität",
161
- "159": "Sterben und Tod",
162
- "160": "Steuer",
163
- "161": "Steuerhinterziehung",
164
- "162": "Steuerrecht",
165
- "163": "Steuerwettbewerb",
166
- "164": "Stiftung",
167
- "165": "Strafprozessordnung",
168
- "166": "Strafrecht",
169
- "167": "Straftat",
170
- "168": "Strassenverkehr",
171
- "169": "Sucht",
172
- "170": "Telefonie",
173
- "171": "Terrorismus",
174
- "172": "Tierschutz",
175
- "173": "Tierversuch",
176
- "174": "Tourismus",
177
- "175": "Umwelt",
178
- "176": "Umweltpolitik",
179
- "177": "Umweltschutz",
180
- "178": "Unfallversicherung",
181
- "179": "Universität/Hochschule/Fachhochschule",
182
- "180": "Unternehmen",
183
- "181": "Urheberrecht",
184
- "182": "Verfahrensrecht",
185
- "183": "Verfassung",
186
- "184": "Vergaberecht",
187
- "185": "Verkehr",
188
- "186": "Verkehrspolitik",
189
- "187": "Vertrag",
190
- "188": "Verwaltungsrecht",
191
- "189": "Volksabstimmung",
192
- "190": "Vorrechte und Immunität",
193
- "191": "Wahlen",
194
- "192": "Wald",
195
- "193": "Wasser",
196
- "194": "Weiterbildung",
197
- "195": "Wettbewerb",
198
- "196": "Wirtschaft",
199
- "197": "Wirtschaftsleben",
200
- "198": "Wirtschaftspolitik",
201
- "199": "Wissenschaft / Forschung",
202
- "200": "Zivilprozessordnung",
203
- "201": "Zivilrecht",
204
- "202": "Zivilschutz und Bevölkerungsschutz/Zivildienst",
205
- "203": "Zoll",
206
- "204": "erneuerbare Energie",
207
- "205": "innere Sicherheit",
208
- "206": "internationale Beziehungen",
209
- "207": "internationale Organisation",
210
- "208": "internationale Politik",
211
- "209": "internationale Rechtshilfe",
212
- "210": "internationale Strafjustiz",
213
- "211": "internationale Zusammenarbeit",
214
- "212": "internationaler Konflikt",
215
- "213": "internationales Abkommen",
216
- "214": "internationales Privatrecht",
217
- "215": "internationales Recht",
218
- "216": "internationales humanitäres Recht",
219
- "217": "kantonales Parlament",
220
- "218": "politische Partei",
221
- "219": "politische Rechte",
222
- "220": "politisches Leben",
223
- "221": "politisches System",
224
- "222": "öffentliche Finanzen",
225
- "223": "öffentliche Verwaltung",
226
- "224": "öffentlicher Verkehr"
 
 
 
 
 
 
 
 
227
  }
 
1
  {
2
+ "0": "Hauptthema: Beschäftigung und Arbeit",
3
+ "1": "Hauptthema: Bildung",
4
+ "2": "Hauptthema: Energie",
5
+ "3": "Hauptthema: Europapolitik",
6
+ "4": "Hauptthema: Finanzwesen",
7
+ "5": "Hauptthema: Gerichtswesen",
8
+ "6": "Hauptthema: Gesundheit",
9
+ "7": "Hauptthema: Internationale Politik",
10
+ "8": "Hauptthema: Internationales Recht",
11
+ "9": "Hauptthema: Kultur",
12
+ "10": "Hauptthema: Landwirtschaft",
13
+ "11": "Hauptthema: Medien / Kommunikation",
14
+ "12": "Hauptthema: Migration",
15
+ "13": "Hauptthema: Parlament",
16
+ "14": "Hauptthema: Raumplanung und Wohnungswesen",
17
+ "15": "Hauptthema: Recht Allgemein",
18
+ "16": "Hauptthema: Rechte und Freiheiten",
19
+ "17": "Hauptthema: Sicherheitspolitik",
20
+ "18": "Hauptthema: Soziale Fragen",
21
+ "19": "Hauptthema: Sozialer Schutz",
22
+ "20": "Hauptthema: Staatspolitik",
23
+ "21": "Hauptthema: Steuer",
24
+ "22": "Hauptthema: Strafrecht",
25
+ "23": "Hauptthema: Umwelt",
26
+ "24": "Hauptthema: Verkehr",
27
+ "25": "Hauptthema: Wirtschaft",
28
+ "26": "Hauptthema: Wissenschaft / Forschung",
29
+ "27": "Hauptthema: Zivilrecht",
30
+ "28": "Unterthema: AHV",
31
+ "29": "Unterthema: Abfall",
32
+ "30": "Unterthema: Abgabe",
33
+ "31": "Unterthema: Agrarpolitik",
34
+ "32": "Unterthema: Agrarproduktion",
35
+ "33": "Unterthema: Altersfragen",
36
+ "34": "Unterthema: Arbeit",
37
+ "35": "Unterthema: Arbeitslosenversicherung",
38
+ "36": "Unterthema: Arbeitslosigkeit",
39
+ "37": "Unterthema: Arbeitsmarkt",
40
+ "38": "Unterthema: Arbeitsrecht",
41
+ "39": "Unterthema: Armee",
42
+ "40": "Unterthema: Armut/Ungleichheit",
43
+ "41": "Unterthema: Artenvielfalt",
44
+ "42": "Unterthema: Asylpolitik",
45
+ "43": "Unterthema: Auslandschweizer",
46
+ "44": "Unterthema: Ausländerpolitik",
47
+ "45": "Unterthema: Aussenpolitik : Ausland",
48
+ "46": "Unterthema: Aussenpolitik : Schweiz",
49
+ "47": "Unterthema: Aussenwirtschaftspolitik",
50
+ "48": "Unterthema: Bankenkrise",
51
+ "49": "Unterthema: Bauwesen/Immobilien",
52
+ "50": "Unterthema: Behinderung",
53
+ "51": "Unterthema: Berg",
54
+ "52": "Unterthema: Berufliche Vorsorge",
55
+ "53": "Unterthema: Berufsbildung",
56
+ "54": "Unterthema: Beschwerderecht",
57
+ "55": "Unterthema: Bewaffnung",
58
+ "56": "Unterthema: Beziehung Schweiz - EU",
59
+ "57": "Unterthema: Bildung",
60
+ "58": "Unterthema: Boden",
61
+ "59": "Unterthema: Bürgerrecht",
62
+ "60": "Unterthema: Datenschutz",
63
+ "61": "Unterthema: Demokratie",
64
+ "62": "Unterthema: Digitalisierung",
65
+ "63": "Unterthema: Diplomatie",
66
+ "64": "Unterthema: Diskriminierung",
67
+ "65": "Unterthema: Elektrizität",
68
+ "66": "Unterthema: Energiepolitik",
69
+ "67": "Unterthema: Erberecht",
70
+ "68": "Unterthema: Ernährung",
71
+ "69": "Unterthema: Erwerbsersatzordnung",
72
+ "70": "Unterthema: Europapolitik",
73
+ "71": "Unterthema: Europarat",
74
+ "72": "Unterthema: Europarecht",
75
+ "73": "Unterthema: Europäische Union",
76
+ "74": "Unterthema: Europäisches Parlament",
77
+ "75": "Unterthema: Exekutive",
78
+ "76": "Unterthema: Familienfragen",
79
+ "77": "Unterthema: Familienrecht",
80
+ "78": "Unterthema: Familienzulage",
81
+ "79": "Unterthema: Finanzausgleich",
82
+ "80": "Unterthema: Finanzmarkt",
83
+ "81": "Unterthema: Finanzplatz",
84
+ "82": "Unterthema: Finanzrecht",
85
+ "83": "Unterthema: Flüchtling",
86
+ "84": "Unterthema: Forschung",
87
+ "85": "Unterthema: Fortpflanzung",
88
+ "86": "Unterthema: Fossile Energie",
89
+ "87": "Unterthema: Föderalismus",
90
+ "88": "Unterthema: Geld- und Währungspolitik",
91
+ "89": "Unterthema: Geldwäscherei",
92
+ "90": "Unterthema: Gentechnologie",
93
+ "91": "Unterthema: Gerichtswesen",
94
+ "92": "Unterthema: Geschichte Ausland",
95
+ "93": "Unterthema: Geschichte Schweiz",
96
+ "94": "Unterthema: Geschlechterfragen",
97
+ "95": "Unterthema: Gesellschaftsfragen",
98
+ "96": "Unterthema: Gesundheit",
99
+ "97": "Unterthema: Gesundheitspolitik",
100
+ "98": "Unterthema: Gewalt",
101
+ "99": "Unterthema: Gewerkschaft",
102
+ "100": "Unterthema: Globalisierung",
103
+ "101": "Unterthema: Grenze",
104
+ "102": "Unterthema: Grundrechte",
105
+ "103": "Unterthema: Güterverkehr",
106
+ "104": "Unterthema: Handel",
107
+ "105": "Unterthema: Heil- und Hilfsmittel",
108
+ "106": "Unterthema: Informatik",
109
+ "107": "Unterthema: Information",
110
+ "108": "Unterthema: Informationswissenschaft",
111
+ "109": "Unterthema: Internet und soziale Medien",
112
+ "110": "Unterthema: Interventionspolitik",
113
+ "111": "Unterthema: Invalidenversicherung",
114
+ "112": "Unterthema: Jagd und Fischerei",
115
+ "113": "Unterthema: Kapital",
116
+ "114": "Unterthema: Katastrophe",
117
+ "115": "Unterthema: Kernenergie",
118
+ "116": "Unterthema: Kinder- und Jugendfragen",
119
+ "117": "Unterthema: Kinderrechte",
120
+ "118": "Unterthema: Kindes- und Erwachsenenschutzrecht",
121
+ "119": "Unterthema: Klimafragen",
122
+ "120": "Unterthema: Konkursrecht",
123
+ "121": "Unterthema: Konsum",
124
+ "122": "Unterthema: Korruption",
125
+ "123": "Unterthema: Krankenversicherung",
126
+ "124": "Unterthema: Krieg",
127
+ "125": "Unterthema: Krise",
128
+ "126": "Unterthema: Kultur",
129
+ "127": "Unterthema: Luft",
130
+ "128": "Unterthema: Luftfahrt",
131
+ "129": "Unterthema: Lärm",
132
+ "130": "Unterthema: Medien",
133
+ "131": "Unterthema: Medienrecht",
134
+ "132": "Unterthema: Medizinalberuf",
135
+ "133": "Unterthema: Menschenrechte",
136
+ "134": "Unterthema: Miet- und Wohnungswesen",
137
+ "135": "Unterthema: Migrationsbewegung",
138
+ "136": "Unterthema: Mutterschaftsversicherung",
139
+ "137": "Unterthema: Nationalbank",
140
+ "138": "Unterthema: Obligationenrecht",
141
+ "139": "Unterthema: Parlament Ausland",
142
+ "140": "Unterthema: Parlament Schweiz",
143
+ "141": "Unterthema: Patient",
144
+ "142": "Unterthema: Personenrecht",
145
+ "143": "Unterthema: Pflege",
146
+ "144": "Unterthema: Post",
147
+ "145": "Unterthema: Presse",
148
+ "146": "Unterthema: Privatversicherung",
149
+ "147": "Unterthema: Produktion",
150
+ "148": "Unterthema: Radio und Fernsehen",
151
+ "149": "Unterthema: Rassismus",
152
+ "150": "Unterthema: Ratsmitglied",
153
+ "151": "Unterthema: Raumplanung",
154
+ "152": "Unterthema: Rechtswissenschaft",
155
+ "153": "Unterthema: Religionsfragen",
156
+ "154": "Unterthema: Sachenrecht",
157
+ "155": "Unterthema: Sans-Papiers",
158
+ "156": "Unterthema: Schiedsgerichtsbarkeit",
159
+ "157": "Unterthema: Schienenverkehr",
160
+ "158": "Unterthema: Schifffahrt",
161
+ "159": "Unterthema: Schule",
162
+ "160": "Unterthema: Service public",
163
+ "161": "Unterthema: Sicherheitspolitik/Friedenspolitik",
164
+ "162": "Unterthema: Sozialhilfe",
165
+ "163": "Unterthema: Sozialpolitik",
166
+ "164": "Unterthema: Sozialversicherung",
167
+ "165": "Unterthema: Spiel",
168
+ "166": "Unterthema: Spital",
169
+ "167": "Unterthema: Sport",
170
+ "168": "Unterthema: Sprache",
171
+ "169": "Unterthema: Staat",
172
+ "170": "Unterthema: Staatssouveränität",
173
+ "171": "Unterthema: Sterben und Tod",
174
+ "172": "Unterthema: Steuer",
175
+ "173": "Unterthema: Steuerhinterziehung",
176
+ "174": "Unterthema: Steuerrecht",
177
+ "175": "Unterthema: Steuerwettbewerb",
178
+ "176": "Unterthema: Stiftung",
179
+ "177": "Unterthema: Strafprozessordnung",
180
+ "178": "Unterthema: Strafrecht",
181
+ "179": "Unterthema: Straftat",
182
+ "180": "Unterthema: Strassenverkehr",
183
+ "181": "Unterthema: Sucht",
184
+ "182": "Unterthema: Telefonie",
185
+ "183": "Unterthema: Terrorismus",
186
+ "184": "Unterthema: Tierschutz",
187
+ "185": "Unterthema: Tierversuch",
188
+ "186": "Unterthema: Tourismus",
189
+ "187": "Unterthema: Umweltpolitik",
190
+ "188": "Unterthema: Umweltschutz",
191
+ "189": "Unterthema: Unfallversicherung",
192
+ "190": "Unterthema: Universität/Hochschule/Fachhochschule",
193
+ "191": "Unterthema: Unternehmen",
194
+ "192": "Unterthema: Urheberrecht",
195
+ "193": "Unterthema: Verfahrensrecht",
196
+ "194": "Unterthema: Verfassung",
197
+ "195": "Unterthema: Vergaberecht",
198
+ "196": "Unterthema: Verkehrspolitik",
199
+ "197": "Unterthema: Vertrag",
200
+ "198": "Unterthema: Verwaltungsrecht",
201
+ "199": "Unterthema: Volksabstimmung",
202
+ "200": "Unterthema: Vorrechte und Immunität",
203
+ "201": "Unterthema: Wahlen",
204
+ "202": "Unterthema: Wald",
205
+ "203": "Unterthema: Wasser",
206
+ "204": "Unterthema: Weiterbildung",
207
+ "205": "Unterthema: Wettbewerb",
208
+ "206": "Unterthema: Wirtschaftsleben",
209
+ "207": "Unterthema: Wirtschaftspolitik",
210
+ "208": "Unterthema: Zivilprozessordnung",
211
+ "209": "Unterthema: Zivilrecht",
212
+ "210": "Unterthema: Zivilschutz und Bevölkerungsschutz/Zivildienst",
213
+ "211": "Unterthema: Zoll",
214
+ "212": "Unterthema: erneuerbare Energie",
215
+ "213": "Unterthema: innere Sicherheit",
216
+ "214": "Unterthema: internationale Beziehungen",
217
+ "215": "Unterthema: internationale Organisation",
218
+ "216": "Unterthema: internationale Politik",
219
+ "217": "Unterthema: internationale Rechtshilfe",
220
+ "218": "Unterthema: internationale Strafjustiz",
221
+ "219": "Unterthema: internationale Zusammenarbeit",
222
+ "220": "Unterthema: internationaler Konflikt",
223
+ "221": "Unterthema: internationales Abkommen",
224
+ "222": "Unterthema: internationales Privatrecht",
225
+ "223": "Unterthema: internationales Recht",
226
+ "224": "Unterthema: internationales humanitäres Recht",
227
+ "225": "Unterthema: kantonales Parlament",
228
+ "226": "Unterthema: politische Partei",
229
+ "227": "Unterthema: politische Rechte",
230
+ "228": "Unterthema: politisches Leben",
231
+ "229": "Unterthema: politisches System",
232
+ "230": "Unterthema: öffentliche Finanzen",
233
+ "231": "Unterthema: öffentliche Verwaltung",
234
+ "232": "Unterthema: öffentlicher Verkehr"
235
  }
label2id.json ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Hauptthema: Beschäftigung und Arbeit": 0,
3
+ "Hauptthema: Bildung": 1,
4
+ "Hauptthema: Energie": 2,
5
+ "Hauptthema: Europapolitik": 3,
6
+ "Hauptthema: Finanzwesen": 4,
7
+ "Hauptthema: Gerichtswesen": 5,
8
+ "Hauptthema: Gesundheit": 6,
9
+ "Hauptthema: Internationale Politik": 7,
10
+ "Hauptthema: Internationales Recht": 8,
11
+ "Hauptthema: Kultur": 9,
12
+ "Hauptthema: Landwirtschaft": 10,
13
+ "Hauptthema: Medien / Kommunikation": 11,
14
+ "Hauptthema: Migration": 12,
15
+ "Hauptthema: Parlament": 13,
16
+ "Hauptthema: Raumplanung und Wohnungswesen": 14,
17
+ "Hauptthema: Recht Allgemein": 15,
18
+ "Hauptthema: Rechte und Freiheiten": 16,
19
+ "Hauptthema: Sicherheitspolitik": 17,
20
+ "Hauptthema: Soziale Fragen": 18,
21
+ "Hauptthema: Sozialer Schutz": 19,
22
+ "Hauptthema: Staatspolitik": 20,
23
+ "Hauptthema: Steuer": 21,
24
+ "Hauptthema: Strafrecht": 22,
25
+ "Hauptthema: Umwelt": 23,
26
+ "Hauptthema: Verkehr": 24,
27
+ "Hauptthema: Wirtschaft": 25,
28
+ "Hauptthema: Wissenschaft / Forschung": 26,
29
+ "Hauptthema: Zivilrecht": 27,
30
+ "Unterthema: AHV": 28,
31
+ "Unterthema: Abfall": 29,
32
+ "Unterthema: Abgabe": 30,
33
+ "Unterthema: Agrarpolitik": 31,
34
+ "Unterthema: Agrarproduktion": 32,
35
+ "Unterthema: Altersfragen": 33,
36
+ "Unterthema: Arbeit": 34,
37
+ "Unterthema: Arbeitslosenversicherung": 35,
38
+ "Unterthema: Arbeitslosigkeit": 36,
39
+ "Unterthema: Arbeitsmarkt": 37,
40
+ "Unterthema: Arbeitsrecht": 38,
41
+ "Unterthema: Armee": 39,
42
+ "Unterthema: Armut/Ungleichheit": 40,
43
+ "Unterthema: Artenvielfalt": 41,
44
+ "Unterthema: Asylpolitik": 42,
45
+ "Unterthema: Auslandschweizer": 43,
46
+ "Unterthema: Ausländerpolitik": 44,
47
+ "Unterthema: Aussenpolitik : Ausland": 45,
48
+ "Unterthema: Aussenpolitik : Schweiz": 46,
49
+ "Unterthema: Aussenwirtschaftspolitik": 47,
50
+ "Unterthema: Bankenkrise": 48,
51
+ "Unterthema: Bauwesen/Immobilien": 49,
52
+ "Unterthema: Behinderung": 50,
53
+ "Unterthema: Berg": 51,
54
+ "Unterthema: Berufliche Vorsorge": 52,
55
+ "Unterthema: Berufsbildung": 53,
56
+ "Unterthema: Beschwerderecht": 54,
57
+ "Unterthema: Bewaffnung": 55,
58
+ "Unterthema: Beziehung Schweiz - EU": 56,
59
+ "Unterthema: Bildung": 57,
60
+ "Unterthema: Boden": 58,
61
+ "Unterthema: Bürgerrecht": 59,
62
+ "Unterthema: Datenschutz": 60,
63
+ "Unterthema: Demokratie": 61,
64
+ "Unterthema: Digitalisierung": 62,
65
+ "Unterthema: Diplomatie": 63,
66
+ "Unterthema: Diskriminierung": 64,
67
+ "Unterthema: Elektrizität": 65,
68
+ "Unterthema: Energiepolitik": 66,
69
+ "Unterthema: Erberecht": 67,
70
+ "Unterthema: Ernährung": 68,
71
+ "Unterthema: Erwerbsersatzordnung": 69,
72
+ "Unterthema: Europapolitik": 70,
73
+ "Unterthema: Europarat": 71,
74
+ "Unterthema: Europarecht": 72,
75
+ "Unterthema: Europäische Union": 73,
76
+ "Unterthema: Europäisches Parlament": 74,
77
+ "Unterthema: Exekutive": 75,
78
+ "Unterthema: Familienfragen": 76,
79
+ "Unterthema: Familienrecht": 77,
80
+ "Unterthema: Familienzulage": 78,
81
+ "Unterthema: Finanzausgleich": 79,
82
+ "Unterthema: Finanzmarkt": 80,
83
+ "Unterthema: Finanzplatz": 81,
84
+ "Unterthema: Finanzrecht": 82,
85
+ "Unterthema: Flüchtling": 83,
86
+ "Unterthema: Forschung": 84,
87
+ "Unterthema: Fortpflanzung": 85,
88
+ "Unterthema: Fossile Energie": 86,
89
+ "Unterthema: Föderalismus": 87,
90
+ "Unterthema: Geld- und Währungspolitik": 88,
91
+ "Unterthema: Geldwäscherei": 89,
92
+ "Unterthema: Gentechnologie": 90,
93
+ "Unterthema: Gerichtswesen": 91,
94
+ "Unterthema: Geschichte Ausland": 92,
95
+ "Unterthema: Geschichte Schweiz": 93,
96
+ "Unterthema: Geschlechterfragen": 94,
97
+ "Unterthema: Gesellschaftsfragen": 95,
98
+ "Unterthema: Gesundheit": 96,
99
+ "Unterthema: Gesundheitspolitik": 97,
100
+ "Unterthema: Gewalt": 98,
101
+ "Unterthema: Gewerkschaft": 99,
102
+ "Unterthema: Globalisierung": 100,
103
+ "Unterthema: Grenze": 101,
104
+ "Unterthema: Grundrechte": 102,
105
+ "Unterthema: Güterverkehr": 103,
106
+ "Unterthema: Handel": 104,
107
+ "Unterthema: Heil- und Hilfsmittel": 105,
108
+ "Unterthema: Informatik": 106,
109
+ "Unterthema: Information": 107,
110
+ "Unterthema: Informationswissenschaft": 108,
111
+ "Unterthema: Internet und soziale Medien": 109,
112
+ "Unterthema: Interventionspolitik": 110,
113
+ "Unterthema: Invalidenversicherung": 111,
114
+ "Unterthema: Jagd und Fischerei": 112,
115
+ "Unterthema: Kapital": 113,
116
+ "Unterthema: Katastrophe": 114,
117
+ "Unterthema: Kernenergie": 115,
118
+ "Unterthema: Kinder- und Jugendfragen": 116,
119
+ "Unterthema: Kinderrechte": 117,
120
+ "Unterthema: Kindes- und Erwachsenenschutzrecht": 118,
121
+ "Unterthema: Klimafragen": 119,
122
+ "Unterthema: Konkursrecht": 120,
123
+ "Unterthema: Konsum": 121,
124
+ "Unterthema: Korruption": 122,
125
+ "Unterthema: Krankenversicherung": 123,
126
+ "Unterthema: Krieg": 124,
127
+ "Unterthema: Krise": 125,
128
+ "Unterthema: Kultur": 126,
129
+ "Unterthema: Luft": 127,
130
+ "Unterthema: Luftfahrt": 128,
131
+ "Unterthema: Lärm": 129,
132
+ "Unterthema: Medien": 130,
133
+ "Unterthema: Medienrecht": 131,
134
+ "Unterthema: Medizinalberuf": 132,
135
+ "Unterthema: Menschenrechte": 133,
136
+ "Unterthema: Miet- und Wohnungswesen": 134,
137
+ "Unterthema: Migrationsbewegung": 135,
138
+ "Unterthema: Mutterschaftsversicherung": 136,
139
+ "Unterthema: Nationalbank": 137,
140
+ "Unterthema: Obligationenrecht": 138,
141
+ "Unterthema: Parlament Ausland": 139,
142
+ "Unterthema: Parlament Schweiz": 140,
143
+ "Unterthema: Patient": 141,
144
+ "Unterthema: Personenrecht": 142,
145
+ "Unterthema: Pflege": 143,
146
+ "Unterthema: Post": 144,
147
+ "Unterthema: Presse": 145,
148
+ "Unterthema: Privatversicherung": 146,
149
+ "Unterthema: Produktion": 147,
150
+ "Unterthema: Radio und Fernsehen": 148,
151
+ "Unterthema: Rassismus": 149,
152
+ "Unterthema: Ratsmitglied": 150,
153
+ "Unterthema: Raumplanung": 151,
154
+ "Unterthema: Rechtswissenschaft": 152,
155
+ "Unterthema: Religionsfragen": 153,
156
+ "Unterthema: Sachenrecht": 154,
157
+ "Unterthema: Sans-Papiers": 155,
158
+ "Unterthema: Schiedsgerichtsbarkeit": 156,
159
+ "Unterthema: Schienenverkehr": 157,
160
+ "Unterthema: Schifffahrt": 158,
161
+ "Unterthema: Schule": 159,
162
+ "Unterthema: Service public": 160,
163
+ "Unterthema: Sicherheitspolitik/Friedenspolitik": 161,
164
+ "Unterthema: Sozialhilfe": 162,
165
+ "Unterthema: Sozialpolitik": 163,
166
+ "Unterthema: Sozialversicherung": 164,
167
+ "Unterthema: Spiel": 165,
168
+ "Unterthema: Spital": 166,
169
+ "Unterthema: Sport": 167,
170
+ "Unterthema: Sprache": 168,
171
+ "Unterthema: Staat": 169,
172
+ "Unterthema: Staatssouveränität": 170,
173
+ "Unterthema: Sterben und Tod": 171,
174
+ "Unterthema: Steuer": 172,
175
+ "Unterthema: Steuerhinterziehung": 173,
176
+ "Unterthema: Steuerrecht": 174,
177
+ "Unterthema: Steuerwettbewerb": 175,
178
+ "Unterthema: Stiftung": 176,
179
+ "Unterthema: Strafprozessordnung": 177,
180
+ "Unterthema: Strafrecht": 178,
181
+ "Unterthema: Straftat": 179,
182
+ "Unterthema: Strassenverkehr": 180,
183
+ "Unterthema: Sucht": 181,
184
+ "Unterthema: Telefonie": 182,
185
+ "Unterthema: Terrorismus": 183,
186
+ "Unterthema: Tierschutz": 184,
187
+ "Unterthema: Tierversuch": 185,
188
+ "Unterthema: Tourismus": 186,
189
+ "Unterthema: Umweltpolitik": 187,
190
+ "Unterthema: Umweltschutz": 188,
191
+ "Unterthema: Unfallversicherung": 189,
192
+ "Unterthema: Universität/Hochschule/Fachhochschule": 190,
193
+ "Unterthema: Unternehmen": 191,
194
+ "Unterthema: Urheberrecht": 192,
195
+ "Unterthema: Verfahrensrecht": 193,
196
+ "Unterthema: Verfassung": 194,
197
+ "Unterthema: Vergaberecht": 195,
198
+ "Unterthema: Verkehrspolitik": 196,
199
+ "Unterthema: Vertrag": 197,
200
+ "Unterthema: Verwaltungsrecht": 198,
201
+ "Unterthema: Volksabstimmung": 199,
202
+ "Unterthema: Vorrechte und Immunität": 200,
203
+ "Unterthema: Wahlen": 201,
204
+ "Unterthema: Wald": 202,
205
+ "Unterthema: Wasser": 203,
206
+ "Unterthema: Weiterbildung": 204,
207
+ "Unterthema: Wettbewerb": 205,
208
+ "Unterthema: Wirtschaftsleben": 206,
209
+ "Unterthema: Wirtschaftspolitik": 207,
210
+ "Unterthema: Zivilprozessordnung": 208,
211
+ "Unterthema: Zivilrecht": 209,
212
+ "Unterthema: Zivilschutz und Bevölkerungsschutz/Zivildienst": 210,
213
+ "Unterthema: Zoll": 211,
214
+ "Unterthema: erneuerbare Energie": 212,
215
+ "Unterthema: innere Sicherheit": 213,
216
+ "Unterthema: internationale Beziehungen": 214,
217
+ "Unterthema: internationale Organisation": 215,
218
+ "Unterthema: internationale Politik": 216,
219
+ "Unterthema: internationale Rechtshilfe": 217,
220
+ "Unterthema: internationale Strafjustiz": 218,
221
+ "Unterthema: internationale Zusammenarbeit": 219,
222
+ "Unterthema: internationaler Konflikt": 220,
223
+ "Unterthema: internationales Abkommen": 221,
224
+ "Unterthema: internationales Privatrecht": 222,
225
+ "Unterthema: internationales Recht": 223,
226
+ "Unterthema: internationales humanitäres Recht": 224,
227
+ "Unterthema: kantonales Parlament": 225,
228
+ "Unterthema: politische Partei": 226,
229
+ "Unterthema: politische Rechte": 227,
230
+ "Unterthema: politisches Leben": 228,
231
+ "Unterthema: politisches System": 229,
232
+ "Unterthema: öffentliche Finanzen": 230,
233
+ "Unterthema: öffentliche Verwaltung": 231,
234
+ "Unterthema: öffentlicher Verkehr": 232
235
+ }
topics_hierarchy.json CHANGED
@@ -1,273 +1,273 @@
1
  {
2
- "staatspolitik": [
3
- "exekutive",
4
- "politisches leben",
5
- "öffentliche verwaltung",
6
- "politische rechte",
7
- "politisches system",
8
- "demokratie",
9
- "föderalismus",
10
- "politische partei",
11
- "bürgerrecht",
12
- "verfassung",
13
- "vorrechte und immunität",
14
- "volksabstimmung",
15
- "wahlen",
16
- "staat",
17
- "vergaberecht",
18
- "auslandschweizer",
19
- "service public"
20
  ],
21
- "geschichte": [
22
- "geschichte schweiz",
23
- "geschichte ausland"
24
  ],
25
- "parlament": [
26
- "parlament schweiz",
27
- "parlament ausland",
28
- "ratsmitglied",
29
- "parlamentsgeschichte",
30
- "kantonales parlament"
31
  ],
32
- "internationale politik": [
33
- "aussenpolitik : schweiz",
34
- "aussenpolitik : ausland",
35
- "diplomatie",
36
- "internationale beziehungen",
37
- "internationales abkommen",
38
- "internationale politik",
39
- "interventionspolitik",
40
- "globalisierung",
41
- "grenze",
42
- "internationale organisation",
43
- "internationale zusammenarbeit"
44
  ],
45
- "sicherheitspolitik": [
46
- "armee",
47
- "bewaffnung",
48
- "innere sicherheit",
49
- "zivilschutz und bevölkerungsschutz/zivildienst",
50
- "terrorismus",
51
- "sicherheitspolitik/friedenspolitik",
52
- "krieg",
53
- "internationaler konflikt"
54
  ],
55
- "europapolitik": [
56
- "europapolitik",
57
- "beziehung schweiz - eu",
58
- "europarecht",
59
- "europäische union",
60
- "europarat",
61
- "europäisches parlament"
62
  ],
63
- "recht allgemein": [
64
- "verfahrensrecht",
65
- "urheberrecht",
66
- "rechtswissenschaft",
67
- "verwaltungsrecht",
68
- "beschwerderecht"
69
  ],
70
- "zivilrecht": [
71
- "zivilrecht",
72
- "zivilprozessordnung",
73
- "familienrecht",
74
- "kinderrechte",
75
- "kindes- und erwachsenenschutzrecht",
76
- "personenrecht",
77
- "erbrecht",
78
- "erberecht",
79
- "sachenrecht",
80
- "obligationenrecht",
81
- "konkursrecht",
82
- "vertrag"
83
  ],
84
- "strafrecht": [
85
- "strafrecht",
86
- "strafprozessordnung",
87
- "straftat",
88
- "korruption"
89
  ],
90
- "gerichtswesen": [
91
- "gerichtswesen",
92
- "schiedsgerichtsbarkeit"
93
  ],
94
- "rechte und freiheiten": [
95
- "grundrechte",
96
- "datenschutz",
97
- "rassismus",
98
- "diskriminierung"
99
  ],
100
- "internationales recht": [
101
- "internationales humanitäres recht",
102
- "internationale strafjustiz",
103
- "internationales privatrecht",
104
- "staatssouveränität",
105
- "internationale rechtshilfe",
106
- "internationales recht",
107
- "menschenrechte"
108
  ],
109
- "wirtschaft": [
110
- "wirtschaftspolitik",
111
- "konsum",
112
- "tourismus",
113
- "wirtschaftsleben",
114
- "unternehmen",
115
- "wettbewerb",
116
- "aussenwirtschaftspolitik",
117
- "handel",
118
- "privatversicherung",
119
- "produktion",
120
- "stiftung"
121
  ],
122
- "finanzwesen": [
123
- "öffentliche finanzen und haushaltspolitik",
124
- "öffentliche finanzen",
125
- "finanzausgleich",
126
- "zoll",
127
- "finanzmarkt",
128
- "finanzplatz"
129
  ],
130
- "finanzplatz": [
131
- "finanzplatz",
132
- "geldwäscherei",
133
- "nationalbank",
134
- "geld- und währungspolitik",
135
- "finanzmarkt",
136
- "kapital",
137
- "finanzrecht"
138
  ],
139
- "steuer": [
140
- "steuer",
141
- "abgabe",
142
- "steuerwettbewerb",
143
- "steuerhinterziehung"
144
  ],
145
- "soziale fragen": [
146
- "geschlechterfragen",
147
- "sport",
148
- "familienfragen",
149
- "kinder- und jugendfragen",
150
- "armut / ungleichheit",
151
- "armut/ungleichheit",
152
- "altersfragen",
153
- "gesellschaftsfragen",
154
- "gewalt",
155
- "behinderung",
156
- "spiel"
157
  ],
158
- "migration": [
159
- "asylpolitik",
160
- "flüchtling",
161
- "ausländerpolitik",
162
- "sans-papiers",
163
- "migrationsbewegung"
164
  ],
165
- "kultur": [
166
- "kultur",
167
- "sprache",
168
- "religionsfragen"
169
  ],
170
- "sozialer schutz": [
171
- "sozialversicherung",
172
- "invalidenversicherung",
173
- "berufliche vorsorge",
174
- "unfallversicherung",
175
- "arbeitslosenversicherung",
176
- "mutterschaftsversicherung",
177
- "erwerbsersatzordnung",
178
- "militärversicherung",
179
- "ahv",
180
- "familienzulage",
181
- "sozialhilfe",
182
- "sozialpolitik"
183
  ],
184
- "gesundheit": [
185
- "gesundheit",
186
- "krankenversicherung",
187
- "patient/in",
188
- "patient",
189
- "pflege",
190
- "spital",
191
- "medizinalberuf",
192
- "sucht",
193
- "sterben und tod",
194
- "gesundheitspolitik",
195
- "heil- und hilfsmittel",
196
- "ernährung",
197
- "fortpflanzung"
198
  ],
199
- "raumplanung und wohnungswesen": [
200
- "miet- und wohnungswesen",
201
- "raumplanung",
202
- "bauwesen/immobilien"
203
  ],
204
- "bildung": [
205
- "schule",
206
- "universität, hochschule, fachhochschule",
207
- "universität/hochschule/fachhochschule",
208
- "weiterbildung",
209
- "berufsbildung",
210
- "bildung"
211
  ],
212
- "medien und kommunikation": [
213
- "presse",
214
- "radio und fernsehen",
215
- "internet und soziale medien",
216
- "telefonie",
217
- "medien",
218
- "post",
219
- "informatik",
220
- "information",
221
- "digitalisierung"
222
  ],
223
- "wissenschaft und forschung": [
224
- "forschung",
225
- "gentechnologie"
226
  ],
227
- "beschäftigung und arbeit": [
228
- "arbeitsmarkt",
229
- "gewerkschaft",
230
- "arbeitslosigkeit",
231
- "arbeit"
232
  ],
233
- "verkehr": [
234
- "strassenverkehr",
235
- "schienenverkehr",
236
- "luftfahrt",
237
- "schifffahrt",
238
- "güterverkehr",
239
- "öffentlicher verkehr",
240
- "verkehrspolitik"
241
  ],
242
- "umwelt": [
243
- "umweltpolitik",
244
- "umweltschutz",
245
- "artenvielfalt",
246
- "katastrophe",
247
- "klimafragen",
248
- "abfall",
249
- "wasser",
250
- "luft",
251
- "lärm",
252
- "wald",
253
- "berg",
254
- "boden",
255
- "tierschutz"
256
  ],
257
- "tierwelt": [
258
- "tierschutz",
259
- "tierversuch",
260
- "jagd und fischerei"
261
  ],
262
- "landwirtschaft": [
263
- "agrarpolitik",
264
- "agrarproduktion"
265
  ],
266
- "energie": [
267
- "erneuerbare energie",
268
- "kernenergie",
269
- "fossile energie",
270
- "elektrizität",
271
- "energiepolitik"
272
  ]
273
  }
 
1
  {
2
+ "hauptthema: staatspolitik": [
3
+ "unterthema: exekutive",
4
+ "unterthema: politisches leben",
5
+ "unterthema: öffentliche verwaltung",
6
+ "unterthema: politische rechte",
7
+ "unterthema: politisches system",
8
+ "unterthema: demokratie",
9
+ "unterthema: föderalismus",
10
+ "unterthema: politische partei",
11
+ "unterthema: bürgerrecht",
12
+ "unterthema: verfassung",
13
+ "unterthema: vorrechte und immunität",
14
+ "unterthema: volksabstimmung",
15
+ "unterthema: wahlen",
16
+ "unterthema: staat",
17
+ "unterthema: vergaberecht",
18
+ "unterthema: auslandschweizer",
19
+ "unterthema: service public"
20
  ],
21
+ "hauptthema: geschichte": [
22
+ "unterthema: geschichte schweiz",
23
+ "unterthema: geschichte ausland"
24
  ],
25
+ "hauptthema: parlament": [
26
+ "unterthema: parlament schweiz",
27
+ "unterthema: parlament ausland",
28
+ "unterthema: ratsmitglied",
29
+ "unterthema: parlamentsgeschichte",
30
+ "unterthema: kantonales parlament"
31
  ],
32
+ "hauptthema: internationale politik": [
33
+ "unterthema: aussenpolitik : schweiz",
34
+ "unterthema: aussenpolitik : ausland",
35
+ "unterthema: diplomatie",
36
+ "unterthema: internationale beziehungen",
37
+ "unterthema: internationales abkommen",
38
+ "unterthema: internationale politik",
39
+ "unterthema: interventionspolitik",
40
+ "unterthema: globalisierung",
41
+ "unterthema: grenze",
42
+ "unterthema: internationale organisation",
43
+ "unterthema: internationale zusammenarbeit"
44
  ],
45
+ "hauptthema: sicherheitspolitik": [
46
+ "unterthema: armee",
47
+ "unterthema: bewaffnung",
48
+ "unterthema: innere sicherheit",
49
+ "unterthema: zivilschutz und bevölkerungsschutz/zivildienst",
50
+ "unterthema: terrorismus",
51
+ "unterthema: sicherheitspolitik/friedenspolitik",
52
+ "unterthema: krieg",
53
+ "unterthema: internationaler konflikt"
54
  ],
55
+ "hauptthema: europapolitik": [
56
+ "unterthema: europapolitik",
57
+ "unterthema: beziehung schweiz - eu",
58
+ "unterthema: europarecht",
59
+ "unterthema: europäische union",
60
+ "unterthema: europarat",
61
+ "unterthema: europäisches parlament"
62
  ],
63
+ "hauptthema: recht allgemein": [
64
+ "unterthema: verfahrensrecht",
65
+ "unterthema: urheberrecht",
66
+ "unterthema: rechtswissenschaft",
67
+ "unterthema: verwaltungsrecht",
68
+ "unterthema: beschwerderecht"
69
  ],
70
+ "hauptthema: zivilrecht": [
71
+ "unterthema: zivilrecht",
72
+ "unterthema: zivilprozessordnung",
73
+ "unterthema: familienrecht",
74
+ "unterthema: kinderrechte",
75
+ "unterthema: kindes- und erwachsenenschutzrecht",
76
+ "unterthema: personenrecht",
77
+ "unterthema: erbrecht",
78
+ "unterthema: erberecht",
79
+ "unterthema: sachenrecht",
80
+ "unterthema: obligationenrecht",
81
+ "unterthema: konkursrecht",
82
+ "unterthema: vertrag"
83
  ],
84
+ "hauptthema: strafrecht": [
85
+ "unterthema: strafrecht",
86
+ "unterthema: strafprozessordnung",
87
+ "unterthema: straftat",
88
+ "unterthema: korruption"
89
  ],
90
+ "hauptthema: gerichtswesen": [
91
+ "unterthema: gerichtswesen",
92
+ "unterthema: schiedsgerichtsbarkeit"
93
  ],
94
+ "hauptthema: rechte und freiheiten": [
95
+ "unterthema: grundrechte",
96
+ "unterthema: datenschutz",
97
+ "unterthema: rassismus",
98
+ "unterthema: diskriminierung"
99
  ],
100
+ "hauptthema: internationales recht": [
101
+ "unterthema: internationales humanitäres recht",
102
+ "unterthema: internationale strafjustiz",
103
+ "unterthema: internationales privatrecht",
104
+ "unterthema: staatssouveränität",
105
+ "unterthema: internationale rechtshilfe",
106
+ "unterthema: internationales recht",
107
+ "unterthema: menschenrechte"
108
  ],
109
+ "hauptthema: wirtschaft": [
110
+ "unterthema: wirtschaftspolitik",
111
+ "unterthema: konsum",
112
+ "unterthema: tourismus",
113
+ "unterthema: wirtschaftsleben",
114
+ "unterthema: unternehmen",
115
+ "unterthema: wettbewerb",
116
+ "unterthema: aussenwirtschaftspolitik",
117
+ "unterthema: handel",
118
+ "unterthema: privatversicherung",
119
+ "unterthema: produktion",
120
+ "unterthema: stiftung"
121
  ],
122
+ "hauptthema: finanzwesen": [
123
+ "unterthema: öffentliche finanzen und haushaltspolitik",
124
+ "unterthema: öffentliche finanzen",
125
+ "unterthema: finanzausgleich",
126
+ "unterthema: zoll",
127
+ "unterthema: finanzmarkt",
128
+ "unterthema: finanzplatz"
129
  ],
130
+ "hauptthema: finanzplatz": [
131
+ "unterthema: finanzplatz",
132
+ "unterthema: geldwäscherei",
133
+ "unterthema: nationalbank",
134
+ "unterthema: geld- und währungspolitik",
135
+ "unterthema: finanzmarkt",
136
+ "unterthema: kapital",
137
+ "unterthema: finanzrecht"
138
  ],
139
+ "hauptthema: steuer": [
140
+ "unterthema: steuer",
141
+ "unterthema: abgabe",
142
+ "unterthema: steuerwettbewerb",
143
+ "unterthema: steuerhinterziehung"
144
  ],
145
+ "hauptthema: soziale fragen": [
146
+ "unterthema: geschlechterfragen",
147
+ "unterthema: sport",
148
+ "unterthema: familienfragen",
149
+ "unterthema: kinder- und jugendfragen",
150
+ "unterthema: armut / ungleichheit",
151
+ "unterthema: armut/ungleichheit",
152
+ "unterthema: altersfragen",
153
+ "unterthema: gesellschaftsfragen",
154
+ "unterthema: gewalt",
155
+ "unterthema: behinderung",
156
+ "unterthema: spiel"
157
  ],
158
+ "hauptthema: migration": [
159
+ "unterthema: asylpolitik",
160
+ "unterthema: flüchtling",
161
+ "unterthema: ausländerpolitik",
162
+ "unterthema: sans-papiers",
163
+ "unterthema: migrationsbewegung"
164
  ],
165
+ "hauptthema: kultur": [
166
+ "unterthema: kultur",
167
+ "unterthema: sprache",
168
+ "unterthema: religionsfragen"
169
  ],
170
+ "hauptthema: sozialer schutz": [
171
+ "unterthema: sozialversicherung",
172
+ "unterthema: invalidenversicherung",
173
+ "unterthema: berufliche vorsorge",
174
+ "unterthema: unfallversicherung",
175
+ "unterthema: arbeitslosenversicherung",
176
+ "unterthema: mutterschaftsversicherung",
177
+ "unterthema: erwerbsersatzordnung",
178
+ "unterthema: militärversicherung",
179
+ "unterthema: ahv",
180
+ "unterthema: familienzulage",
181
+ "unterthema: sozialhilfe",
182
+ "unterthema: sozialpolitik"
183
  ],
184
+ "hauptthema: gesundheit": [
185
+ "unterthema: gesundheit",
186
+ "unterthema: krankenversicherung",
187
+ "unterthema: patient/in",
188
+ "unterthema: patient",
189
+ "unterthema: pflege",
190
+ "unterthema: spital",
191
+ "unterthema: medizinalberuf",
192
+ "unterthema: sucht",
193
+ "unterthema: sterben und tod",
194
+ "unterthema: gesundheitspolitik",
195
+ "unterthema: heil- und hilfsmittel",
196
+ "unterthema: ernährung",
197
+ "unterthema: fortpflanzung"
198
  ],
199
+ "hauptthema: raumplanung und wohnungswesen": [
200
+ "unterthema: miet- und wohnungswesen",
201
+ "unterthema: raumplanung",
202
+ "unterthema: bauwesen/immobilien"
203
  ],
204
+ "hauptthema: bildung": [
205
+ "unterthema: schule",
206
+ "unterthema: universität, hochschule, fachhochschule",
207
+ "unterthema: universität/hochschule/fachhochschule",
208
+ "unterthema: weiterbildung",
209
+ "unterthema: berufsbildung",
210
+ "unterthema: bildung"
211
  ],
212
+ "hauptthema: medien und kommunikation": [
213
+ "unterthema: presse",
214
+ "unterthema: radio und fernsehen",
215
+ "unterthema: internet und soziale medien",
216
+ "unterthema: telefonie",
217
+ "unterthema: medien",
218
+ "unterthema: post",
219
+ "unterthema: informatik",
220
+ "unterthema: information",
221
+ "unterthema: digitalisierung"
222
  ],
223
+ "hauptthema: wissenschaft und forschung": [
224
+ "unterthema: forschung",
225
+ "unterthema: gentechnologie"
226
  ],
227
+ "hauptthema: beschäftigung und arbeit": [
228
+ "unterthema: arbeitsmarkt",
229
+ "unterthema: gewerkschaft",
230
+ "unterthema: arbeitslosigkeit",
231
+ "unterthema: arbeit"
232
  ],
233
+ "hauptthema: verkehr": [
234
+ "unterthema: strassenverkehr",
235
+ "unterthema: schienenverkehr",
236
+ "unterthema: luftfahrt",
237
+ "unterthema: schifffahrt",
238
+ "unterthema: güterverkehr",
239
+ "unterthema: öffentlicher verkehr",
240
+ "unterthema: verkehrspolitik"
241
  ],
242
+ "hauptthema: umwelt": [
243
+ "unterthema: umweltpolitik",
244
+ "unterthema: umweltschutz",
245
+ "unterthema: artenvielfalt",
246
+ "unterthema: katastrophe",
247
+ "unterthema: klimafragen",
248
+ "unterthema: abfall",
249
+ "unterthema: wasser",
250
+ "unterthema: luft",
251
+ "unterthema: lärm",
252
+ "unterthema: wald",
253
+ "unterthema: berg",
254
+ "unterthema: boden",
255
+ "unterthema: tierschutz"
256
  ],
257
+ "hauptthema: tierwelt": [
258
+ "unterthema: tierschutz",
259
+ "unterthema: tierversuch",
260
+ "unterthema: jagd und fischerei"
261
  ],
262
+ "hauptthema: landwirtschaft": [
263
+ "unterthema: agrarpolitik",
264
+ "unterthema: agrarproduktion"
265
  ],
266
+ "hauptthema: energie": [
267
+ "unterthema: erneuerbare energie",
268
+ "unterthema: kernenergie",
269
+ "unterthema: fossile energie",
270
+ "unterthema: elektrizität",
271
+ "unterthema: energiepolitik"
272
  ]
273
  }