neue-Kennzahl-spacy #94
No reviewers
Labels
No Label
0 - 2 Std
1 - 2 Tag
2 - 5 Std
5 - 8 Std
Bug
Doing
Done
In Review
Kennzahlen Extraktion
Kennzahlen Konfigurieren
Kennzahlen überprüfen
Kennzahlen validieren
Kennzahlenwerte exportieren
Kunden Feedback
Nice to have
Pitchbook hochladen
To Do
Wontfix
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: PSE2_FF/pse2_ff#94
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "neue-Kennzahl-spacy"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
Closes #26
Neues spaCy-Training eingebaut:
neues Format für die Trainingsdaten (.json),
neues Trainingsskript
API-Endpunkt im Flask-Controller zum Triggern des Trainings per Button.
Frontend:
„Neu trainieren“-Button eingebaut,
neue kennzahl Form angepasst
Message-Ausgabe bei Erfolg/Misserfolg.
Leider bekomme ich Fehler vom Koordinator beim Erstellen des Containers. Und bei SpaCy gibt es auch Probleme mit einem Import. Beides im Screenshot zu sehen. Ich habe auch alle Container gelöscht, hat aber nix geholfen...
@ -0,0 +101,4 @@if not entry or "text" not in entry or "entities" not in entry:return (jsonify({"error": "Ungültiges Format – 'text' und 'entities' erforderlich."}Die Watermarks von ChatGPT löschen/andern zu normalen Zeichen. Sind ein paar im code zu finden.
@ -0,0 +28,4 @@nlp.to_disk("output/model-last")# nlp.to_disk("model/") # Speichert das ModellKommentierter Code auch gerne weg. Auch an anderen paar stellen ;)
@ -6,2 +6,3 @@COPY package.json bun.lockb ./RUN bun install --frozen-lockfile#RUN bun install --frozen-lockfileRUN bun installWieso hast du das geändert? Also scheint keinen Unterschied zu machen, aber interessiert mich, ob das besser ist?
@ -121,0 +182,4 @@helperText={!formData.markedValue?.trim()? "Markierter Begriff ist erforderlich": "Nur der Begriff, der im Satz markiert werden soll (z. B. Core/Core+)"Watermark
@ -248,0 +331,4 @@};}// function appendAndDownload(newEntry: any, existing: any[] = []) {kann weg
Es gibt beim traininer von dem daten die schon drinn waren probleme. Teilweise sind es deine Test daten (die weg mussen) aber auch von Rendite "/usr/local/lib/python3.12/site-packages/spacy/training/iob_utils.py:149: UserWarning:
ährliche Ausschüttung*
84,..." with entities "[(96,
'RENDITE'), (49, 53, 'AUSSCHÜTTUNGSREND...". Use
ck the alignment. Misaligned entities ('-') will be ignored during"
Sehe screenshot.
@ -0,0 +1,8 @@FROM python:3.11-slimWofür benötigst du die Datei? Der nutzt eigentlich zusammen mit dem validate-service das Dockerfile ein Verzeichnis weiter oben.
Stimmt, das war nur zum Testen – ich räum das wieder auf. Wir brauchen dieses Dockerfile nicht
@ -11,6 +11,8 @@ COPY requirements.txt /appRUN pip install --upgrade pipRUN pip install --no-cache-dir -r requirements.txtRUN pip install flask-corsrequirements bitte nicht einzeln im Dockerfile installieren, du hast sie schon in der requirement.txt.
Danke für den Hinweis – die Zeile nehme ich wieder raus, ist ja schon in der requirements.txt drin.
@ -0,0 +1,33 @@from flask import Flask, request, jsonifyWas macht die datei? Ich sehe keine stelle, an die die referenziert wird und die Flask-App wird glaube ich auch nicht gestartet
Wird aktuell gar nicht genutzt – ich hatte die Datei nur kurz verwendet, um Trainingsdaten von einer Python-Liste in JSON umzuwandeln. Kann gelöscht werden
@ -0,0 +1,18 @@import jsonDie Datei wird glaube ich auch nirgends verwendet
Wird aktuell gar nicht genutzt – kann raus, war nur ein Testfile. Lösch ich direkt.
@ -38,2 +38,4 @@ports:- 5050:5000volumes:- ./backend/spacy-service/spacy_training:/app/spacy_trainingHiermit tauschen der Coordinator und spaCy Daten über eine gemeinsame Datei aus. Das bedeutet, dass beide auf denselben Ordner zugreifen, der in zwei Container eingebunden ist. Das funktioniert zwar, widerspricht aber unserer gewünschten Architektur. Unser Ziel ist es, dass unsere Services ausschließlich über REST-Schnittstellen kommunizieren, um eine klarere und besser skalierbare Struktur zu haben.
Aktuell werden zwei Dateien für diese Kommunikation genutzt:
Trainingsdaten:
Für die Trainingsdaten hast du im spacy-service schon die Methode, damit spacy die Daten verwalten kann (app.py Zeile 53):
Für die Anpassung sollte es reichen, wenn du im Coordinator die Daten an die API weiterleitest (spacy_controller.py Zeile 111)
Status des Trainings:
Hierfür brauchst du im coordinator/controller/spacy_controller.py einen neuen API-Endpunkt, um den Status zu empfangen.
In spacy-service/spacy_training/ner_training Zeile 69 rufst du den API-Endpunkt des Controllers auf:
Vielen Dank für die ausführliche Erklärung!
Ich habe den Code wie von dir beschrieben angepasst und die Änderung umgesetzt.
Bitte teste noch einmal, ob jetzt alles wie erwartet funktioniert.
@ -23,6 +23,7 @@"@tanstack/react-router": "^1.114.3","@tanstack/react-router-devtools": "^1.114.3","@tanstack/router-plugin": "^1.114.3","file-saver": "^2.0.5",Ich habe keine stelle gefunden, wo du die bibliothek verwendest. Ist die noch von deinen versuchen, die Datei direkt aus dem Frontend zu bearbeiten?
Guter Punkt – die
file-saver-Bibliothek war ein Testversuch,Ich habe bemerkt, dass die Datei annotation_data.json zweimal im Repository liegt: einmal im Root-Verzeichnis und einmal in spacy-service/spacy_training. Aus Konsistenzgründen wäre es sinnvoll, nur eine Version dieser Datei zu behalten. Überlege bitte, ob beide Versionen wirklich notwendig sind, oder ob eine davon gelöscht werden kann, um Redundanzen zu vermeiden.
Bei der Überprüfung, ob der Wert in dem Beispielsatz vorkommt, ist mir aufgefallen, dass wenn man nach dem Wert ein Leerzeichen hat, er meckert, dass er den Wert nicht im Beispielsatz findet. Am besten prüfst du nur bis zum letzten Zeichen vor dem Leerzeichen, ich habe nämlich schon paar Minuten damit verschwendet den Fehler zu suchen.
ich hab die ungültigen Einträge aus der annotation_data.json bereinigt. Die meisten davon waren Dummy-Daten – auch der „Rendite“-Satz war ein Test von Frau Kohler.
Ich hab jetzt alles rausgeschmissen, was nicht valide oder token-aligned war.
Danke, erledigt.
im Root-Verzeichnis war versehntlich daort kopiert, ich habe es gelöscht , danke