Lumosdev commited on
Commit
dc9e54e
·
verified ·
1 Parent(s): 47dfe15

Upload 4 files

Browse files
Files changed (3) hide show
  1. README.md +12 -12
  2. karteikarten.py +27 -27
  3. utils.py +16 -16
README.md CHANGED
@@ -1,13 +1,13 @@
1
- ---
2
- title: 34achatbot
3
- emoji: 💬
4
- colorFrom: yellow
5
- colorTo: purple
6
- sdk: gradio
7
- sdk_version: 5.0.1
8
- app_file: app.py
9
- pinned: false
10
- short_description: Virtueller Dozent zur Vorbereitung auf 34a Sachkundeprüfung
11
- ---
12
-
13
  An example chatbot using [Gradio](https://gradio.app), [`huggingface_hub`](https://huggingface.co/docs/huggingface_hub/v0.22.2/en/index), and the [Hugging Face Inference API](https://huggingface.co/docs/api-inference/index).
 
1
+ ---
2
+ title: 34achatbot
3
+ emoji: 💬
4
+ colorFrom: yellow
5
+ colorTo: purple
6
+ sdk: gradio
7
+ sdk_version: 5.0.1
8
+ app_file: app.py
9
+ pinned: false
10
+ short_description: Virtueller Dozent zur Vorbereitung auf 34a Sachkundeprüfung
11
+ ---
12
+
13
  An example chatbot using [Gradio](https://gradio.app), [`huggingface_hub`](https://huggingface.co/docs/huggingface_hub/v0.22.2/en/index), and the [Hugging Face Inference API](https://huggingface.co/docs/api-inference/index).
karteikarten.py CHANGED
@@ -1,28 +1,28 @@
1
- import json
2
- import random
3
-
4
- DATEI = "karteikarten.json"
5
-
6
- def lade_karteikarten():
7
- with open(DATEI, "r", encoding="utf-8") as f:
8
- return json.load(f)
9
-
10
- def speichere_karteikarten(karten):
11
- with open(DATEI, "w", encoding="utf-8") as f:
12
- json.dump(karten, f, indent=2, ensure_ascii=False)
13
-
14
- def naechste_karte(karten):
15
- gewichtet = []
16
- for karte in karten:
17
- gewicht = 6 - karte["stufe"]
18
- gewichtet += [karte] * gewicht
19
- return random.choice(gewichted) if gewichtet else None
20
-
21
- def verarbeite_antwort(karte, antwort_index, alle_karten):
22
- korrekt = (antwort_index == karte["richtig"])
23
- if korrekt:
24
- karte["stufe"] = min(karte["stufe"] + 1, 5)
25
- else:
26
- karte["stufe"] = 1
27
- speichere_karteikarten(alle_karten)
28
  return korrekt, karte["stufe"]
 
1
+ import json
2
+ import random
3
+
4
+ DATEI = "karteikarten.json"
5
+
6
+ def lade_karteikarten():
7
+ with open(DATEI, "r", encoding="utf-8") as f:
8
+ return json.load(f)
9
+
10
+ def speichere_karteikarten(karten):
11
+ with open(DATEI, "w", encoding="utf-8") as f:
12
+ json.dump(karten, f, indent=2, ensure_ascii=False)
13
+
14
+ def naechste_karte(karten):
15
+ gewichtet = []
16
+ for karte in karten:
17
+ gewicht = 6 - karte["stufe"]
18
+ gewichtet += [karte] * gewicht
19
+ return random.choice(gewichted) if gewichtet else None
20
+
21
+ def verarbeite_antwort(karte, antwort_index, alle_karten):
22
+ korrekt = (antwort_index == karte["richtig"])
23
+ if korrekt:
24
+ karte["stufe"] = min(karte["stufe"] + 1, 5)
25
+ else:
26
+ karte["stufe"] = 1
27
+ speichere_karteikarten(alle_karten)
28
  return korrekt, karte["stufe"]
utils.py CHANGED
@@ -1,16 +1,16 @@
1
- import re
2
-
3
- def lade_skript(datei="data/sachkunde.md"):
4
- with open(datei, "r", encoding="utf-8") as f:
5
- return f.read()
6
-
7
- def teile_in_abschnitte(text, max_länge=500):
8
- roh = re.split(r"\n{2,}", text) # Trenne nach Leerzeilen
9
- return [abschnitt.strip() for abschnitt in roh if len(abschnitt.strip()) > 30]
10
-
11
- def finde_passenden_abschnitt(frage, abschnitte):
12
- frage = frage.lower()
13
- treffer = [a for a in abschnitte if any(w in a.lower() for w in frage.split())]
14
- if treffer:
15
- return max(treffer, key=lambda x: sum(w in x.lower() for w in frage.split()))
16
- return "Ich konnte keine passende Stelle im Skript finden."
 
1
+ import re
2
+
3
+ def lade_skript(datei="data/sachkunde.md"):
4
+ with open(datei, "r", encoding="utf-8") as f:
5
+ return f.read()
6
+
7
+ def teile_in_abschnitte(text, max_länge=500):
8
+ roh = re.split(r"\n{2,}", text) # Trenne nach Leerzeilen
9
+ return [abschnitt.strip() for abschnitt in roh if len(abschnitt.strip()) > 30]
10
+
11
+ def finde_passenden_abschnitt(frage, abschnitte):
12
+ frage = frage.lower()
13
+ treffer = [a for a in abschnitte if any(w in a.lower() for w in frage.split())]
14
+ if treffer:
15
+ return max(treffer, key=lambda x: sum(w in x.lower() for w in frage.split()))
16
+ return "Ich konnte keine passende Stelle im Skript finden."