elmanavi commited on
Commit
fc86982
·
1 Parent(s): 6fc4565

refactor testing

Browse files
requirements.txt CHANGED
@@ -18,7 +18,8 @@ dotenv
18
  transformers
19
  wtpsplit
20
  classy-classification
21
-
 
22
 
23
 
24
 
 
18
  transformers
19
  wtpsplit
20
  classy-classification
21
+ matplotlib
22
+ googlemaps
23
 
24
 
25
 
src/nlp/experimental/textclassification/classify_title.py CHANGED
@@ -3,6 +3,7 @@ import classy_classification
3
 
4
  train_data ={
5
  "Veranstaltungstitel": [
 
6
  "PIANOKLÄNGE & Herzgeschichten",
7
  "Finissage der Ausstellung Bartmann, Bier und Tafelzier.",
8
  "Ein Abend voller Jazz und Emotionen.",
 
3
 
4
  train_data ={
5
  "Veranstaltungstitel": [
6
+ "Vereinshüttenbelegung",
7
  "PIANOKLÄNGE & Herzgeschichten",
8
  "Finissage der Ausstellung Bartmann, Bier und Tafelzier.",
9
  "Ein Abend voller Jazz und Emotionen.",
src/nlp/playground/pipelines/event_data_extractor.py CHANGED
@@ -11,7 +11,6 @@ from src.utils.Event import Event
11
 
12
  class EventDataExtractor:
13
  def __init__(self):
14
- self.event = Event()
15
  self.title_extractor = TitleExtractor()
16
  self.zero_shot_classifier = ZeroShotClassifier()
17
  self.gliner_handler = GlinerHandler()
@@ -21,16 +20,17 @@ class EventDataExtractor:
21
 
22
  def extract(self, data):
23
  print("Starting extraction process...")
24
- self.event.title = self.extract_title(data)
25
- self.event.categories = self.extract_categories(data)
26
- self.event.locations = self.extract_locations(data)
27
- self.event.organizers = self.extract_organizers(data)
28
- self.event.address = self.extract_address(data)
29
- self.event.schedule = self.extract_schedule(data)
30
- self.event.description = self.extract_description(data, self.event.title)
 
31
 
32
  print("Extraction process completed.")
33
- return self.event
34
 
35
  def extract_title(self, md):
36
  print("Extracting title...")
 
11
 
12
  class EventDataExtractor:
13
  def __init__(self):
 
14
  self.title_extractor = TitleExtractor()
15
  self.zero_shot_classifier = ZeroShotClassifier()
16
  self.gliner_handler = GlinerHandler()
 
20
 
21
  def extract(self, data):
22
  print("Starting extraction process...")
23
+ event = Event()
24
+ event.title = self.extract_title(data)
25
+ event.categories = self.extract_categories(data)
26
+ event.locations = self.extract_locations(data)
27
+ event.organizers = self.extract_organizers(data)
28
+ event.address = self.extract_address(data)
29
+ event.schedule = self.extract_schedule(data)
30
+ event.description = self.extract_description(data, event.title)
31
 
32
  print("Extraction process completed.")
33
+ return event
34
 
35
  def extract_title(self, md):
36
  print("Extracting title...")
src/nlp/playground/pipelines/testing/event_data_extractor_testing.py CHANGED
@@ -1,5 +1,10 @@
 
 
 
1
  from collections import defaultdict
2
 
 
 
3
  from src.nlp.experimental.textclassification.classify_title import train_data
4
  from src.nlp.playground.pipelines.event_data_extractor import EventDataExtractor
5
  from src.persistence.db import init_db
@@ -46,81 +51,130 @@ db = init_db()
46
  google_maps_api = GoogleMapsAPI()
47
 
48
 
49
- event_data_extractor = EventDataExtractor()
50
  elements = init_db_entries()
 
51
 
52
  prediction_results = []
53
  base_urls = []
54
  count = 0
 
 
 
 
 
 
55
  for el in elements:
56
- if count >= 20:
57
- break
58
  if not all(f not in el.get("markdown", "") for f in filter_data):
59
  continue
60
- base_url = el.get("base_url",None)
61
- if base_url and base_url not in base_urls:
62
- base_urls.append(base_url)
63
- print(f"************************ Processing {count + 1} **********************************")
64
- actual_event = Event()
65
- actual_event.url = el.get("url")
66
- print(actual_event.url)
67
- actual_event.title = el.get("information", {}).get("actual", {}).get("title", "")
68
- actual_event.organizers = el.get("information", {}).get("actual", {}).get("organizers", [])
69
- actual_event.categories = el.get("information", {}).get("actual", {}).get("categories", [])
70
- actual_event.locations = el.get("information", {}).get("actual", {}).get("locations", [])
71
- actual_event.prices = el.get("information", {}).get("actual", {}).get("prices", [])
72
- address = el.get("information", {}).get("actual", {}).get("address")
73
- if address:
74
- address = address.get("formatted")
75
- actual_event.address = address
76
-
77
-
78
-
79
- dates = el.get("information", {}).get("actual", {}).get("dates", [])
80
- actual_event.schedule = [
81
- DateTime(date.get("start_date", None), date.get("end_date", None), date.get("start_time", None),
82
- date.get("end_time", None), date.get("admittance_time", None))
83
- for date in dates]
84
-
85
-
86
- preprocessed_md = normalize_data(el["markdown"])
87
-
88
-
89
- try:
90
- predicted_event = event_data_extractor.extract(el["markdown"])
91
- similarity,match_results = event_similarity(actual_event, predicted_event)
92
- prediction_results.append({"similarity": similarity, "match_results": match_results})
93
- print("************** ORIGINAL NORMALIZED *******************")
94
- print(preprocessed_md)
95
- print("************** ACTUAL EVENT **************************")
96
- print(actual_event)
97
- print("************** PREDICTED EVENT **************************")
98
- print(predicted_event)
99
- print("************** SIMILARITY*******************************")
100
- print(f"Smiliarity: {similarity}")
101
- print(match_results)
102
- print("*******************************************************\n\n\n")
103
- except Exception as e:
104
- print(f"Fehler bei der Verarbeitung: {e}")
105
- count += 1
106
-
107
-
108
- field_sums = defaultdict(int)
109
-
110
- for result in prediction_results:
111
- for field, match in result["match_results"].items():
112
- field_sums[field] += match
113
-
114
- # Erstelle den Graphen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  plt.figure(figsize=(10, 5))
116
  plt.bar(field_sums.keys(), field_sums.values(), color=["blue", "orange", "green", "red", "purple"])
117
 
118
- # Achsenbeschriftungen & Titel
119
  plt.xlabel("Event Attribute")
120
  plt.ylabel("Anzahl der Übereinstimmungen")
121
- plt.title("Summierte Übereinstimmungen pro Event-Attribut")
122
- plt.ylim(0, count) # Maximale Höhe entspricht der Anzahl der Events
123
  plt.grid(axis="y", linestyle="--", alpha=0.7)
124
 
125
- # Zeige den Graphen
126
  plt.show()
 
1
+ import csv
2
+ import gc
3
+ import time
4
  from collections import defaultdict
5
 
6
+ import pandas as pd
7
+
8
  from src.nlp.experimental.textclassification.classify_title import train_data
9
  from src.nlp.playground.pipelines.event_data_extractor import EventDataExtractor
10
  from src.persistence.db import init_db
 
51
  google_maps_api = GoogleMapsAPI()
52
 
53
 
 
54
  elements = init_db_entries()
55
+ event_data_extractor = EventDataExtractor()
56
 
57
  prediction_results = []
58
  base_urls = []
59
  count = 0
60
+
61
+ with open('results.csv', 'a', newline='') as csvfile:
62
+ writer = csv.writer(csvfile, delimiter=' ')
63
+ header = ["url", "title", "schedule", "prices", "address", "organizers", "extraction_time"]
64
+ writer.writerow(header)
65
+
66
  for el in elements:
67
+ gc.collect()
 
68
  if not all(f not in el.get("markdown", "") for f in filter_data):
69
  continue
70
+ # base_url = el.get("base_url",None)
71
+ # if base_url and base_url not in base_urls:
72
+ # base_urls.append(base_url)
73
+ print(f"************************ Processing {count + 1} **********************************")
74
+ actual_event = Event()
75
+ actual_event.url = el.get("url")
76
+ print(actual_event.url)
77
+ actual_event.title = el.get("information", {}).get("actual", {}).get("title", "")
78
+ actual_event.organizers = [org for org in el.get("information", {}).get("actual", {}).get("organizers", []) if
79
+ org.strip()]
80
+ actual_event.categories = el.get("information", {}).get("actual", {}).get("categories", [])
81
+ actual_event.locations = [
82
+ loc for loc in el.get("information", {}).get("actual", {}).get("locations", []) if loc
83
+ ]
84
+ actual_event.prices = el.get("information", {}).get("actual", {}).get("prices", [])
85
+ address = el.get("information", {}).get("actual", {}).get("address")
86
+ if address:
87
+ address = address.get("formatted")
88
+ actual_event.address = address
89
+
90
+
91
+
92
+ dates = el.get("information", {}).get("actual", {}).get("dates", [])
93
+ actual_event.schedule = [
94
+ DateTime(date.get("start_date", None), date.get("end_date", None), date.get("start_time", None),
95
+ date.get("end_time", None), date.get("admittance_time", None))
96
+ for date in dates]
97
+
98
+
99
+ if not actual_event.schedule:
100
+ continue
101
+
102
+ preprocessed_md = normalize_data(el["markdown"])
103
+
104
+ try:
105
+
106
+ start_time = time.time() # Startzeit
107
+ predicted_event = event_data_extractor.extract(el["markdown"])
108
+ end_time = time.time() # Endzeit
109
+
110
+ duration = end_time - start_time
111
+ similarity,match_results = event_similarity(actual_event, predicted_event)
112
+
113
+ with open('results.csv', 'a', newline='') as csvfile:
114
+ writer = csv.writer(csvfile, delimiter=' ',
115
+ quotechar='|', quoting=csv.QUOTE_MINIMAL)
116
+ writer.writerow(
117
+ [actual_event.url, match_results["title"], match_results["schedule"], match_results["prices"],
118
+ match_results["address"], match_results["organizers"], duration])
119
+
120
+ # prediction_results.append({"similarity": similarity, "match_results": match_results})
121
+ print("************** ORIGINAL NORMALIZED *******************")
122
+ print(preprocessed_md)
123
+ print("************** ACTUAL EVENT **************************")
124
+ print(actual_event)
125
+ print("************** PREDICTED EVENT **************************")
126
+ print(predicted_event)
127
+ print("************** SIMILARITY*******************************")
128
+ print(f"Smiliarity: {similarity}")
129
+ print(match_results)
130
+ print("*******************************************************\n\n\n")
131
+ print("************** EXTRACTION TIME *******************************")
132
+ print(f"Extraction Time: {duration}")
133
+ print("*******************************************************\n\n\n")
134
+ with open("results.txt", "a", encoding="utf-8") as file:
135
+ file.write(f"************************ Processing {count + 1} **********************************")
136
+ file.write("************** ORIGINAL NORMALIZED *******************\n")
137
+ file.write(preprocessed_md + "\n")
138
+ file.write("************** ACTUAL EVENT **************************\n")
139
+ file.write(str(actual_event) + "\n")
140
+ file.write("************** PREDICTED EVENT **************************\n")
141
+ file.write(str(predicted_event) + "\n")
142
+ file.write("************** SIMILARITY *******************************\n")
143
+ file.write(f"Smiliarity: {similarity}\n")
144
+ file.write(str(match_results) + "\n")
145
+ file.write("*******************************************************\n\n\n")
146
+ file.write("************** EXTRACTION TIME *******************************\n")
147
+ file.write(f"Extraction Time: {duration} seconds\n")
148
+ file.write("*******************************************************\n\n\n")
149
+ except Exception as e:
150
+ print(f"Fehler bei der Verarbeitung: {e}")
151
+ count += 1
152
+
153
+
154
+ # 📂 CSV-Datei einlesen
155
+ df = pd.read_csv("results.csv", delimiter=" ") # Falls Probleme: delimiter anpassen
156
+
157
+ # 🏆 Summiere die Anzahl der Übereinstimmungen für jede Kategorie
158
+ field_sums = {
159
+ "title": df["title"].sum(),
160
+ "schedule": df["schedule"].sum(),
161
+ "prices": df["prices"].sum(),
162
+ "address": df["address"].sum(),
163
+ "organizers": df["organizers"].sum(),
164
+ }
165
+ print(df['extraction_time'])
166
+ print(len(df))
167
+
168
+ # 📊 Graphen erstellen
169
  plt.figure(figsize=(10, 5))
170
  plt.bar(field_sums.keys(), field_sums.values(), color=["blue", "orange", "green", "red", "purple"])
171
 
172
+ # 🏷️ Achsenbeschriftungen & Titel
173
  plt.xlabel("Event Attribute")
174
  plt.ylabel("Anzahl der Übereinstimmungen")
175
+ plt.title(f"Summierte Übereinstimmungen pro Event-Attribut. Durchschittliche Verarbeitungszeit: {float(df['extraction_time'].sum()) / len(df)}")
176
+ plt.ylim(0, len(df)) # Maximale Höhe entspricht der Anzahl der Events
177
  plt.grid(axis="y", linestyle="--", alpha=0.7)
178
 
179
+ # 📈 Zeige den Graphen
180
  plt.show()
src/nlp/playground/pipelines/testing/event_similarity_results.csv ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ url,similarity,title,schedule,prices,address,organizers
2
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin,60.0,1,0,1,1,0
3
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/7-workshop-retrodigitalisierung,40.0,1,0,1,0,0
4
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/aktuelles/detail/acm-wsdm-2025-renommierte-konferenz-zu-websuche-und-data-mining-in-hannover,80.0,1,1,1,1,0
5
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489,80.0,1,1,1,1,0
6
+ http://www.cz-darmstadt.de/heiligabend,60.0,1,1,1,0,0
7
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296,40.0,1,0,1,0,0
8
+ https://www.hamburg.de/kultur/ausstellung/immersiv/leonardo-da-vinci-uomo-universale-960112,60.0,1,0,1,1,0
9
+ https://www.hamburg.de/kultur/musical-show/mj-das-michael-jackson-musical-401234,60.0,1,1,0,1,0
10
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten,60.0,1,0,1,1,0
11
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin,60.0,1,0,1,1,0
12
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/7-workshop-retrodigitalisierung,40.0,1,0,1,0,0
13
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin,60.0,1,0,1,1,0
14
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/7-workshop-retrodigitalisierung,40.0,1,0,1,0,0
src/nlp/playground/pipelines/testing/results.csv ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ url title schedule prices address organizers extraction_time
2
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 35.42548489570618
3
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/7-workshop-retrodigitalisierung 1 0 1 0 0 43.281203508377075
4
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/aktuelles/detail/acm-wsdm-2025-renommierte-konferenz-zu-websuche-und-data-mining-in-hannover 1 1 1 1 1 35.2250120639801
5
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489 1 1 1 1 0 36.139039754867554
6
+ http://www.cz-darmstadt.de/heiligabend 1 1 1 0 1 21.55298924446106
7
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296 1 0 1 0 0 21.55430579185486
8
+ https://www.hamburg.de/kultur/ausstellung/immersiv/leonardo-da-vinci-uomo-universale-960112 1 0 1 1 1 60.79920482635498
9
+ https://www.hamburg.de/kultur/musical-show/mj-das-michael-jackson-musical-401234 1 1 0 1 1 57.005038022994995
10
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten 1 0 1 1 1 23.063420295715332
11
+ https://www.bottrop.de/veranstaltungskalender/veranstaltungen/nikolausmarkt.php 1 0 1 0 1 61.3490846157074
12
+ https://schauspiel-erlangen.de/spielzeiten/2024-25/verleihung-erlanger-theaterpreis 1 0 1 1 0 15.519769191741943
13
+ http://foodklub.de/events/silvester-2024 1 0 0 1 0 18.008203744888306
14
+ https://www.rpi-heilbronn.de/veranstaltungen/zwischendrin.html 0 0 1 1 1 23.52090287208557
15
+ https://sda.drs.de/grund-haupt-werkreal-real-gemeinschaftsschulen-u-sbbz/heilbronn/aktuelles.html 0 0 1 1 1 43.98276495933533
16
+ https://www.grimmwelt.de/de/kalender/fuehrung-fuer-personen-mit-demenz 1 0 0 0 1 32.07971978187561
17
+ https://www.grimmwelt.de/de/kalender/dornroeschen-und-frau-holle 0 0 0 1 1 52.999778747558594
18
+ https://www.grimmwelt.de/de/kalender/die-grimmwelt-von-a-z-3 1 0 0 0 1 32.30589199066162
19
+ https://www.grimmwelt.de/de/kalender/von-der-maerchensammlung-zum-woerterbuch 0 0 0 0 1 40.03740310668945
20
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-16/mo-torres-uebertrieben-unplugged-tour-2024 1 0 1 0 0 35.705604791641235
21
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-29/die-schoene-und-das-biest-das-musical 1 0 1 1 0 31.99103879928589
22
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-11/groundstar-user-conference-2024 1 0 1 1 0 23.615651607513428
23
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-15/weihnachtskonzert-staedtische-musikdirektion 1 0 1 1 0 39.38885021209717
24
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-09/last-christmas-miracle 1 0 1 1 0 26.399235725402832
25
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-20/hoehner-weihnacht 1 0 1 1 0 37.120139360427856
26
+ https://www.alivechurch.de/weihnachten/ 1 0 0 0 1 40.488184452056885
27
+ https://www.alivechurch.de/alphakurs 1 0 1 0 1 46.878479957580566
28
+ https://www.emk-karlsruhe.de/nachbarschaftsfest-am-6-7-juli-in-durlach-aue/ 0 0 1 0 0 68.08993816375732
29
+ https://www.emk-karlsruhe.de/einfuehrung-des-neuen-leiters-der-jugendkirche-am-1-12/ 1 0 1 0 1 63.933032512664795
30
+ https://www.emk-karlsruhe.de/offene-kirche-engel/ 0 0 1 0 1 18.158240795135498
31
+ https://www.emk-karlsruhe.de/adventsmarkt-in-der-kapelle-am-30-11/ 0 0 1 0 1 20.265835523605347
32
+ https://theater-koblenz.de/programm/ganzohr-literaturfestival/ 1 0 1 0 1 20.117928743362427
33
+ https://www.visit-lahnstein.de/theater/programm/ 0 0 1 0 1 54.21534490585327
34
+ https://www.museum-am-schoelerberg.de/buchungsangebote/captain-schnuppes-weltraumreise-2/20278 1 0 0 0 1 55.46729636192322
35
+ https://www.museum-am-schoelerberg.de/buchungsangebote/das-astronomiejahr-2025/20416 1 1 0 0 1 37.043548822402954
36
+ https://www.museum-am-schoelerberg.de/buchungsangebote/die-olchis-das-grosse-weltraumabenteuer/20743 1 0 0 0 1 70.51803207397461
37
+ https://www.museum-am-schoelerberg.de/buchungsangebote/wer-rettet-den-weihnachtsmann/ 1 0 0 0 1 97.42928767204285
38
+ https://www.museum-am-schoelerberg.de/buchungsangebote/queen-heaven/ 1 0 0 0 1 58.0540816783905
39
+ https://ev-stjohann.de/events/eschberg-lebendiger-adventskalender-am-3-und-4-advent/ 1 0 1 0 0 22.740347385406494
40
+ https://ev-stjohann.de/events/oek-weihnachsvesper/ 1 0 1 0 0 18.35256814956665
41
+ https://ev-stjohann.de/events/kindergottesdienst-70/ 1 0 1 0 0 16.384174585342407
42
+ https://ev-stjohann.de/events/kindergottesdienst-69/ 1 0 1 0 0 16.933809995651245
43
+ https://ev-stjohann.de/events/johanneskirche-das-licht-scheint-in-der-finsternis-gottesdienst-mit-dance-performance/ 1 0 1 0 1 44.44033980369568
44
+ https://ahmadiyya.de/events/islamausstellung-in-hemer-2/ 1 0 1 0 0 108.16240310668945
45
+ https://halo.club/event/why-so-serious-13-12/ 1 0 0 0 1 235.09041738510132
src/nlp/playground/pipelines/testing/results.txt ADDED
The diff for this file is too large to render. See raw diff
 
src/nlp/playground/pipelines/testing/results_01.csv ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ url title schedule prices address organizers extraction_time
2
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 73.29318761825562
3
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 38.829806089401245
4
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489 1 1 1 1 0 41.25229024887085
5
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296 1 0 1 0 0 23.78996515274048
6
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten 1 0 1 1 0 21.511841535568237
7
+ https://www.bottrop.de/veranstaltungskalender/veranstaltungen/nikolausmarkt.php 1 0 1 0 0 78.11862850189209
8
+ https://schauspiel-erlangen.de/spielzeiten/2024-25/verleihung-erlanger-theaterpreis 1 0 1 1 0 23.79407238960266
9
+ http://foodklub.de/events/silvester-2024 1 0 0 1 0 25.646122932434082
10
+ https://www.rpi-heilbronn.de/veranstaltungen/zwischendrin.html 0 0 1 1 0 29.56550669670105
11
+ https://www.grimmwelt.de/de/kalender/fuehrung-fuer-personen-mit-demenz 1 0 0 0 0 36.09824728965759
12
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-16/mo-torres-uebertrieben-unplugged-tour-2024 1 0 1 0 0 46.5047025680542
13
+ https://www.alivechurch.de/weihnachten/ 1 0 0 0 0 52.94900393486023
14
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 37.91059589385986
15
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489 1 1 1 1 0 41.54554533958435
16
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296 1 0 1 0 0 21.666431665420532
17
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten 1 0 1 1 0 19.511974811553955
18
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 38.102726221084595
19
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489 1 1 1 1 0 40.46155762672424
20
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296 1 0 1 0 0 21.35366177558899
21
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten 1 0 1 1 0 19.499123334884644
22
+ https://www.bottrop.de/veranstaltungskalender/veranstaltungen/nikolausmarkt.php 1 0 1 0 0 74.20299625396729
23
+ https://schauspiel-erlangen.de/spielzeiten/2024-25/verleihung-erlanger-theaterpreis 1 0 1 1 0 29.867577075958252
24
+ http://foodklub.de/events/silvester-2024 1 0 0 1 0 22.238073348999023
25
+ https://www.rpi-heilbronn.de/veranstaltungen/zwischendrin.html 0 0 1 1 0 34.19493079185486
26
+ https://www.grimmwelt.de/de/kalender/fuehrung-fuer-personen-mit-demenz 1 0 0 0 0 37.02659797668457
27
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-16/mo-torres-uebertrieben-unplugged-tour-2024 1 0 1 0 0 57.63602423667908
28
+ https://www.alivechurch.de/weihnachten/ 1 0 0 0 0 66.20771598815918
29
+ https://www.emk-karlsruhe.de/nachbarschaftsfest-am-6-7-juli-in-durlach-aue/ 0 0 1 0 0 116.13978242874146
30
+ https://theater-koblenz.de/programm/ganzohr-literaturfestival/ 1 0 1 0 0 26.774587631225586
31
+ https://www.visit-lahnstein.de/theater/programm/ 0 0 1 0 0 105.42704033851624
32
+ https://www.museum-am-schoelerberg.de/buchungsangebote/captain-schnuppes-weltraumreise-2/20278 1 0 0 0 0 98.22857689857483
33
+ https://ev-stjohann.de/events/eschberg-lebendiger-adventskalender-am-3-und-4-advent/ 1 0 1 0 0 49.23981785774231
34
+ https://ahmadiyya.de/events/islamausstellung-in-hemer-2/ 1 0 1 0 0 204.46676659584045
35
+ https://halo.club/event/why-so-serious-13-12/ 1 0 0 0 0 134.6807234287262
36
+ http://www.ga-ga.de/events/18.01.2025-eatdancelove1801-10281 0 0 1 0 1 207.41072726249695
37
+ http://www.blankenesekiezinternat.de/event/%e0%a5%90-bki-bescherungs-stampf-%e0%a5%90/ 1 0 1 0 1 51.15682601928711
38
+ https://www.my-private.club/h1club-hamburg/events/wild-wednesday-_2024-12-18_10242 1 0 1 0 1 45.189995527267456
39
+ https://www.nomadenland.de/veranstaltung/ziegenwanderung/ 0 0 1 0 1 112.16991591453552
40
+ http://www.wuhlheide.de/programm/berliner-rundfunk-open-air-2025/2025-07-05 1 1 1 0 1 18.811391353607178
41
+ https://www.koeln.de/event/hafen-weihnachtsmarkt/2024-12-13/ 1 0 1 0 1 35.72581124305725
42
+ https://www.augsburg.de/detail-kalender-2/fur-selbsthilfeaktive/event-5436-5436-20250115 1 0 1 0 1 56.1939959526062
43
+ https://www.mainz.de/freizeit-und-sport/feste-und-veranstaltungen/oktoberfest.php 1 0 1 0 1 43.28075313568115
44
+ https://www.erfurt.de/ef/de/erleben/veranstaltungen/vst/2025/145265.html 1 0 1 0 1 58.217172145843506
45
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 46.14375972747803
46
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 32.718958139419556
47
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489 1 1 1 1 0 37.84482669830322
48
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296 1 0 1 0 0 21.355422735214233
49
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten 1 0 1 1 0 19.218625783920288
50
+ https://www.bottrop.de/veranstaltungskalender/veranstaltungen/nikolausmarkt.php 1 0 1 0 0 63.213874101638794
51
+ https://schauspiel-erlangen.de/spielzeiten/2024-25/verleihung-erlanger-theaterpreis 1 0 1 1 0 17.15326428413391
52
+ http://foodklub.de/events/silvester-2024 1 0 0 1 0 20.1696195602417
53
+ https://www.rpi-heilbronn.de/veranstaltungen/zwischendrin.html 0 0 1 1 0 26.356603622436523
54
+ https://www.grimmwelt.de/de/kalender/fuehrung-fuer-personen-mit-demenz 1 0 0 0 0 34.400370836257935
55
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-16/mo-torres-uebertrieben-unplugged-tour-2024 1 0 1 0 0 37.27326536178589
56
+ https://www.alivechurch.de/weihnachten/ 1 0 0 0 0 44.08588671684265
57
+ https://www.emk-karlsruhe.de/nachbarschaftsfest-am-6-7-juli-in-durlach-aue/ 0 0 1 0 0 66.2246241569519
58
+ https://theater-koblenz.de/programm/ganzohr-literaturfestival/ 1 0 1 0 0 31.206678867340088
59
+ https://www.visit-lahnstein.de/theater/programm/ 0 0 1 0 0 57.55877900123596
60
+ https://www.museum-am-schoelerberg.de/buchungsangebote/captain-schnuppes-weltraumreise-2/20278 1 0 0 0 0 66.70418548583984
61
+ https://ev-stjohann.de/events/eschberg-lebendiger-adventskalender-am-3-und-4-advent/ 1 0 1 0 0 26.533732175827026
62
+ https://ahmadiyya.de/events/islamausstellung-in-hemer-2/ 1 0 1 0 0 123.20255327224731
63
+ https://halo.club/event/why-so-serious-13-12/ 1 0 0 0 0 85.6495521068573
64
+ http://www.ga-ga.de/events/18.01.2025-eatdancelove1801-10281 0 0 1 0 1 98.85588479042053
65
+ http://www.blankenesekiezinternat.de/event/%e0%a5%90-bki-bescherungs-stampf-%e0%a5%90/ 1 0 1 0 1 131.1195285320282
66
+ https://www.my-private.club/h1club-hamburg/events/wild-wednesday-_2024-12-18_10242 1 0 1 0 1 28.042001962661743
67
+ https://www.nomadenland.de/veranstaltung/ziegenwanderung/ 0 0 1 0 1 53.08985090255737
68
+ http://www.wuhlheide.de/programm/berliner-rundfunk-open-air-2025/2025-07-05 1 1 1 0 1 14.482530117034912
69
+ https://www.koeln.de/event/hafen-weihnachtsmarkt/2024-12-13/ 1 0 1 0 1 25.705261707305908
70
+ https://www.augsburg.de/detail-kalender-2/fur-selbsthilfeaktive/event-5436-5436-20250115 1 0 1 0 1 27.060194492340088
71
+ https://www.mainz.de/freizeit-und-sport/feste-und-veranstaltungen/oktoberfest.php 1 0 1 0 1 30.626948595046997
72
+ https://www.erfurt.de/ef/de/erleben/veranstaltungen/vst/2025/145265.html 1 0 1 0 1 31.856264352798462
73
+ https://lust-auf-leverkusen.de/veranstaltung/hoehner-2/ 1 0 1 0 1 73.90051913261414
74
+ https://www.tib.eu/de/die-tib/neuigkeiten-und-termine/termine/detail/technik-salon-an-der-tib-fly-rocket-fly-am-5-dezember-2024-termin 1 0 1 1 0 39.27572989463806
75
+ https://www.eventbrite.de/e/infoveranstaltung-fur-geistliche-mutter-und-vater-tickets-1054784050489 1 1 1 1 0 37.65607142448425
76
+ https://www.hamburg.de/politik-und-verwaltung/bezirke/altona/aktuelles/veranstaltungen/oeffentliche-besichtigung-notstandort-taskoepruestrasse-991296 1 0 1 0 0 19.690044164657593
77
+ https://www.hannover.de/Museum-August-Kestner/Veranstaltungen/Veranstaltungskalender/Stadtansichten 1 0 1 1 0 18.52397584915161
78
+ https://www.bottrop.de/veranstaltungskalender/veranstaltungen/nikolausmarkt.php 1 0 1 0 0 63.67746067047119
79
+ https://schauspiel-erlangen.de/spielzeiten/2024-25/verleihung-erlanger-theaterpreis 1 0 1 1 0 16.575021743774414
80
+ http://foodklub.de/events/silvester-2024 1 0 0 1 0 19.398152589797974
81
+ https://www.rpi-heilbronn.de/veranstaltungen/zwischendrin.html 0 0 1 1 0 25.056897163391113
82
+ https://www.grimmwelt.de/de/kalender/fuehrung-fuer-personen-mit-demenz 1 0 0 0 0 34.323097229003906
83
+ http://www.eurogress-aachen.de/veranstaltungskalender/2024-12-16/mo-torres-uebertrieben-unplugged-tour-2024 1 0 1 0 0 37.23625826835632
84
+ https://www.alivechurch.de/weihnachten/ 1 0 0 0 0 43.69740676879883
85
+ https://www.emk-karlsruhe.de/nachbarschaftsfest-am-6-7-juli-in-durlach-aue/ 0 0 1 0 0 65.08622741699219
86
+ https://theater-koblenz.de/programm/ganzohr-literaturfestival/ 1 0 1 0 0 29.15585708618164
87
+ https://www.visit-lahnstein.de/theater/programm/ 0 0 1 0 0 54.51716232299805
88
+ https://www.museum-am-schoelerberg.de/buchungsangebote/captain-schnuppes-weltraumreise-2/20278 1 0 0 0 0 57.20184373855591
89
+ https://ev-stjohann.de/events/eschberg-lebendiger-adventskalender-am-3-und-4-advent/ 1 0 1 0 0 21.86655879020691
90
+ https://ahmadiyya.de/events/islamausstellung-in-hemer-2/ 1 0 1 0 0 378.7552185058594
91
+ https://halo.club/event/why-so-serious-13-12/ 1 0 0 0 0 112.72829842567444
92
+ http://www.ga-ga.de/events/18.01.2025-eatdancelove1801-10281 0 0 1 0 1 90.80450797080994
93
+ http://www.blankenesekiezinternat.de/event/%e0%a5%90-bki-bescherungs-stampf-%e0%a5%90/ 1 0 1 0 1 36.245856285095215
94
+ https://www.my-private.club/h1club-hamburg/events/wild-wednesday-_2024-12-18_10242 1 0 1 0 1 23.19669246673584
95
+ https://www.nomadenland.de/veranstaltung/ziegenwanderung/ 0 0 1 0 1 54.08582305908203
96
+ http://www.wuhlheide.de/programm/berliner-rundfunk-open-air-2025/2025-07-05 1 1 1 0 1 13.88265347480774
97
+ https://www.koeln.de/event/hafen-weihnachtsmarkt/2024-12-13/ 1 0 1 0 1 25.3150691986084
98
+ https://www.augsburg.de/detail-kalender-2/fur-selbsthilfeaktive/event-5436-5436-20250115 1 0 1 0 1 26.911513090133667
99
+ https://www.mainz.de/freizeit-und-sport/feste-und-veranstaltungen/oktoberfest.php 1 0 1 0 1 31.66797685623169
100
+ https://www.erfurt.de/ef/de/erleben/veranstaltungen/vst/2025/145265.html 1 0 1 0 1 30.000013828277588
101
+ https://lust-auf-leverkusen.de/veranstaltung/hoehner-2/ 1 0 1 0 1 69.976886510849
102
+ https://www.offenbach.de/microsite/haus_der_stadtgeschichte/veranstaltungen/lithographie-vorfuehrung.php 0 1 1 0 1 13.385514497756958
103
+ https://www.wuerzburg.de/events-termine/kilianivolksfest 0 0 1 0 1 15.052715539932251
104
+ http://www.liederhalle-stuttgart.de/events/dudes-live-tour-2025/ 0 0 1 0 1 28.99571132659912