Spellchecking with PyCharm (#133)

Co-authored-by: KM-R <129882581+KM-R@users.noreply.github.com>
This commit is contained in:
Philipp Horstenkamp 2023-10-02 20:47:42 +02:00 committed by GitHub
parent d2d4a436f8
commit 01b4ce00c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 1062 additions and 646 deletions

View File

@ -14,7 +14,7 @@
## Repository structure ## Repository structure
- **src/`aki_prj23_transparenzregister`**: - **src/`aki_prj23_transparenzregister`**:
- This subfolder/`package` contains several subdirectories: - This sub-folder/`package` contains several subdirectories:
- `ai`: - `ai`:
- Houses AI models and pipelines, including NER and sentiment analysis. - Houses AI models and pipelines, including NER and sentiment analysis.
- `config`: - `config`:

View File

@ -1,6 +1,7 @@
# Weekly *1*: 30.03.2023 # Weekly *1*: 30.03.2023
## Teilnehmer ## Teilnehmer
- Prof. Arinir - Prof. Arinir
- Tristan Nolde - Tristan Nolde
- Tim Ronneburg - Tim Ronneburg
@ -10,18 +11,21 @@
- Sebastian Zeleny (Protokollant) - Sebastian Zeleny (Protokollant)
## Themen ## Themen
- **Inhalt des Project Proposals:** - **Inhalt des Project Proposals:**
- Mit welchen Metriken können Unternehmen bewertet werden? - Mit welchen Metriken können Unternehmen bewertet werden?
- Was sind Kennzahlen von Kapitalgesellschaften? - Was sind Kennzahlen von Kapitalgesellschaften?
- Welche Daten werden benötigt? - Welche Daten werden benötigt?
- Woher erhält man benötigte Daten? (Amtsgerichte --> Insolvenzen, Börsenkurse, Aktienkurse, RSS-Feeds von/zu Unternehmen) - Woher erhält man benötigte Daten? (Amtsgerichte --> Insolvenzen, Börsenkurse, Aktienkurse, RSS-Feeds von/zu
Unternehmen)
- Wie werden die Daten verarbeitet? - Wie werden die Daten verarbeitet?
- Wie können die Daten bzw. Ergebnisse präsentiert werden? - Wie können die Daten bzw. Ergebnisse präsentiert werden?
- Verflechtungen zwischen Unternehmen: Geschäftsführer, Wirtschaftsprüfer - Verflechtungen zwischen Unternehmen: Geschäftsführer, Wirtschaftsprüfer
- **Anforderungen an Projektdurchführung:** - **Anforderungen an Projektdurchführung:**
- Backlog für Ideen und Aufgaben - Backlog für Ideen und Aufgaben
- Meeting-Notes mit besprochenen Themen, Entscheidungen, Terminen und Action-List (Wer arbeitet an welcher Aufgabe?) - Meeting-Notes mit besprochenen Themen, Entscheidungen, Terminen und Action-List (Wer arbeitet an welcher
Aufgabe?)
- Projektdurchführung so formal wie möglich, d.h. - Projektdurchführung so formal wie möglich, d.h.
- Beschreibung des Systemkontexts: Interaktion mit der Umgebung - Beschreibung des Systemkontexts: Interaktion mit der Umgebung
- Datenmodell: schematische Darstellung der Datenflüsse - Datenmodell: schematische Darstellung der Datenflüsse
@ -30,12 +34,13 @@
- **Bewertung des Projekts:** - **Bewertung des Projekts:**
- Es muss erkennbar sein, wer welche Aufgabe bearbeitet hat - Es muss erkennbar sein, wer welche Aufgabe bearbeitet hat
- Jeder Teilnehmer soll die Aufgaben der anderen Teilnehmer kennen und ein Verständnis für diese haben (kein tiefes Domänenwissen!) - Jeder Teilnehmer soll die Aufgaben der anderen Teilnehmer kennen und ein Verständnis für diese haben (kein tiefes
Domänenwissen!)
- Gesamtplanung und Dokumentation sind Teil das Ergebnis, nicht nur die technische Umsetzung - Gesamtplanung und Dokumentation sind Teil das Ergebnis, nicht nur die technische Umsetzung
- Bewertungsschlüssel: - Bewertungsschlüssel:
| Gewichtung | Aufgabe | | Gewichtung | Aufgabe |
|--------------|---------------------------------------------| |------------|---------------------------------------------|
| 20% | Vortrag Seminararbeit | | 20% | Vortrag Seminararbeit |
| 20% | Präsentation | | 20% | Präsentation |
| 30% | Implementierung | | 30% | Implementierung |
@ -43,7 +48,8 @@
| 10% | Abschlusspräsentation | | 10% | Abschlusspräsentation |
- **Organisatorisches:** - **Organisatorisches:**
- Regeltermin alle 14 Tage mit allen Projektteilnehmern, beginnend am 30.03.2023: Dieser Termin soll für Sprint Planning und Review mit Prof. Arinir genutzt werden. - Regeltermin alle 14 Tage mit allen Projektteilnehmern, beginnend am 30.03.2023: Dieser Termin soll für Sprint
Planning und Review mit Prof. Arinir genutzt werden.
- Was ist die Erwartungshaltung des Product Owners? - Was ist die Erwartungshaltung des Product Owners?
- Welche Themen/Aufgaben werden bearbeitet? - Welche Themen/Aufgaben werden bearbeitet?
- Was ist das Ziel für das nächste Review? - Was ist das Ziel für das nächste Review?
@ -53,7 +59,7 @@
## Abgeleitete Action Items ## Abgeleitete Action Items
| Action Item | Verantwortlicher | Deadline | | Action Item | Verantwortlicher | Deadline |
|-----------------------------------------------------------------------------------------|--------------------|----------------------------------| |-----------------------------------------------------------------------------------------|------------------|----------------------------------|
| Welche Anforderungen / Erwartungen stellen wir inhaltlich und technisch an das Projekt? | alle | nächstes Weekly/work in progress | | Welche Anforderungen / Erwartungen stellen wir inhaltlich und technisch an das Projekt? | alle | nächstes Weekly/work in progress |
| Erarbeiten von Arbeitspaketen/Aufgaben aus Anforderungen | alle | nächstes Weekly/work in progress | | Erarbeiten von Arbeitspaketen/Aufgaben aus Anforderungen | alle | nächstes Weekly/work in progress |
| Welche Metriken sind notwendig? | alle | nächstes Weekly/work in progress | | Welche Metriken sind notwendig? | alle | nächstes Weekly/work in progress |

View File

@ -1,6 +1,7 @@
# Weekly *2*: 13.04.2023 # Weekly *2*: 13.04.2023
## Teilnehmer ## Teilnehmer
- Prof. Arinir - Prof. Arinir
- Tristan Nolde - Tristan Nolde
- Tim Ronneburg (Protokollant) - Tim Ronneburg (Protokollant)
@ -20,17 +21,18 @@
- Jeder sendet das Formular selbst an Herrn Arinir - Jeder sendet das Formular selbst an Herrn Arinir
- Projektauftakt: 30.03.2023 - Projektauftakt: 30.03.2023
- Enddatum: 15.02.2024 - Enddatum: 15.02.2024
- Titel: Transparanzregister Kapitalgeselschaften - Titel: Transparenzregister Kapitalgesellschaften
- **Vorstellung der Ergebnisse des letzten Sprints:** - **Vorstellung der Ergebnisse des letzten Sprints:**
- Erstellung des GitHubs Projekts - Erstellung des GitHubs Projekts
- Anlegen eines Protokolltemplates - Anlegen eines Protokolltemplates
- Interne Meetings jeden Donnerstag - Interne Meetings jeden Donnerstag
- Timeline erstellt mit Mermaid.js in Markdown (Sebastian) - Timeline erstellt mit Mermaid.js in Markdown (Sebastian)
- Recherche zum Datenschutz / Urheberrecht: Welche Daten aus den Datenbanken dürfen offline oder online benutzt werden. (Sascha) - Recherche zum Datenschutz / Urheberrecht: Welche Daten aus den Datenbanken dürfen offline oder online benutzt
werden. (Sascha)
- Für die eigene Forschung: 75 % der Daten dürfen genutzt werden - Für die eigene Forschung: 75 % der Daten dürfen genutzt werden
- 15 % Wenn es an Dritte weitergeleitet werden - 15 % wenn es an Dritte weitergeleitet werden
- Wenn wir die Ergebnisse veröffentlichen müssen die Vorgaben der Datenbanken beachten - Wenn wir die Ergebnisse veröffentlichen müssen die Vorgaben der Datenbanken beachten
- Hinweis von Herrn Arinir: Das ist als Vorschungsprojekt zu sehen - Hinweis von Herrn Arinir: Das ist als Forschungsprojekt zu sehen
- Die Ergebnisse werden nicht veröffentlicht - Die Ergebnisse werden nicht veröffentlicht
- nur die Vorgehensweise wird als Paper veröffentlicht - nur die Vorgehensweise wird als Paper veröffentlicht
- Recherche zu Unternehmenskennzahlen (Kim) - Recherche zu Unternehmenskennzahlen (Kim)
@ -43,15 +45,15 @@
- Im Meeting erledigt - Im Meeting erledigt
- **Recherche:** - **Recherche:**
- Nicht nur auf Kennzahlen eingehen, sondern auch auf die Berichterstattung eingehen - Nicht nur auf Kennzahlen eingehen, sondern auch auf die Berichterstattung eingehen
- Dazu sollen die Technologieauswahl recherchiert werden (Trendanalyse von Nachrichten, Finanztreff, Twitter etc.) - Dazu soll die Technologieauswahl recherchiert werden (Trendanalyse von Nachrichten, Finanztreff, Twitter etc.)
## Abgeleitete Action Items ## Abgeleitete Action Items
| Action Item | Verantwortlicher | Deadline | | Action Item | Verantwortlicher | Deadline |
|-------------|------------------|-----------------| |------------------------------------------------------------------------------------------------------------------------|-----------------------|------------|
| Rechechieren welche Nachrichtenquellen (Aktuelle und "Alte" Nachrichten) genutzt werden können | Sascha und Tim | 27.04.2023 | | Recherchieren welche Nachrichtenquellen (Aktuelle und "Alte" Nachrichten) genutzt werden können | Sascha und Tim | 27.04.2023 |
| Recherchieren welche Technologien zur Auswertung der Nachrichtenqullen genutzt werden können (z.b. Sentiment Analyse) | Philipp und Kim | 27.04.2023 | | Recherchieren welche Technologien zur Auswertung der Nachrichtenquellen genutzt werden können (z.b. Sentiment Analyse) | Philipp und Kim | 27.04.2023 |
| Beschäftigen mit Historien (Timescale Datenbank) | Tristan und Sebastian | 27.04.2023 | | Beschäftigen mit Historien (Timescale Datenbank) | Tristan und Sebastian | 27.04.2023 |
| Festlegen von Kriterien wann ein Artikel positiv oder negativ zu bewerten ist | Sascha | Ende offen | | Festlegen von Kriterien wann ein Artikel positiv oder negativ zu bewerten ist | Sascha | Ende offen |
| Abgabe des Anmeldeformulars zum Projekt | alle | 20.04.2023 | | Abgabe des Anmeldeformulars zum Projekt | alle | 20.04.2023 |
| Liste mit geeignetetn Metriken | Herr Arinir | 27.04.2023 | | Liste mit geeigneten Metriken | Herr Arinir | 27.04.2023 |

View File

@ -1,6 +1,7 @@
# Weekly *3*: 04.05.2023 # Weekly *3*: 04.05.2023
## Teilnehmer ## Teilnehmer
- Prof. Arinir - Prof. Arinir
- Tristan Nolde - Tristan Nolde
- Tim Ronneburg - Tim Ronneburg
@ -14,41 +15,45 @@
### Organisatorische Absprachen: ### Organisatorische Absprachen:
Gelten die Seminarthemen als Zwischenprüfung? In welcher Form? Gelten die Seminarthemen als Zwischenprüfung? In welcher Form?
- Herr Giefers hat Seminarthemen im Vorfeld definiert, in unserer Gruppe gab es eine offene Einarbeitung in die Forschungs- und Entwicklungsarbeit
- Geplanter Umfang: Seminararbeit 15-20 Seiten (Rücksprache mit Herrn Giefers und Herrn Gawron durch Herrn Arinir, Feedback beim nächsten Termin) und Vortrag mit Folien oder anderen Quellen (z.B. Quellcode) ca. 15-20 Minuten im Rahmen eines JF Termins (keine Vorstellung im Plenum) - Herr Giefers hat Seminarthemen im Vorfeld definiert, in unserer Gruppe gab es eine offene Einarbeitung in die
Forschungs- und Entwicklungsarbeit
- Geplanter Umfang: Seminararbeit 15-20 Seiten (Rücksprache mit Herrn Giefers und Herrn Gawron durch Herrn Arinir,
Feedback beim nächsten Termin) und Vortrag mit Folien oder anderen Quellen (z.B. Quellcode) ca. 15-20 Minuten im
Rahmen eines JF Termins (keine Vorstellung im Plenum)
- Die Seminararbeiten werden benotet (20% der Endnote), die Ausarbeitung und der Vortrag zählen dabei zu jeweils 50% - Die Seminararbeiten werden benotet (20% der Endnote), die Ausarbeitung und der Vortrag zählen dabei zu jeweils 50%
Wie lautet der zeitliche Rahmen? Wie lautet der zeitliche Rahmen?
- Keine feste Deadline vorgegeben, Absprache innerhalb der Projektgruppe ausreichend
- Vortrag: Einigung auf zwei Termine Ende Juni/Anfang Juli -> Thema 1-3 am 22.06.2023 und Thema 4-6 am 06.07.2023
- Seminararbeit: Abgabe voraussichtlich Ende des Sommersemesters, potentiell auch zu einem späteren Zeitpunkt möglich
- Keine feste Deadline vorgegeben, Absprache innerhalb der Projektgruppe ausreichend
- Vortrag: Einigung auf zwei Termine Ende Juni/Anfang Juli → Thema 1-3 am 22.06.2023 und Thema 4-6 am 06.07.2023
- Seminararbeit: Abgabe voraussichtlich Ende des Sommersemesters, potenziell auch zu einem späteren Zeitpunkt möglich
Welche Themenbereiche sollen behandelt werden? Welche Themenbereiche sollen behandelt werden?
- Die erste kurze Beschreibung der 6 Themenbereiche/Domänen wurde durch Herrn Arinir als positiv befunden
- Zur Eingrenzung der Themen und für ein konkreteres Feedback soll für jeden Themenbereich beim nächsten JF am 11.05.2023 ein Abstract vorgestellt werden
- Grundsätzlich sollen die Themen nicht zu oberflächlich behandelt werden, sondern explizit auf Techniken zur Umsetzung eingegangen werden
- Die erste kurze Beschreibung der 6 Themenbereiche/Domänen wurde durch Herrn Arinir als positiv befunden
- Zur Eingrenzung der Themen und für ein konkreteres Feedback soll für jeden Themenbereich beim nächsten JF am
11.05.2023 ein Abstract vorgestellt werden
- Grundsätzlich sollen die Themen nicht zu oberflächlich behandelt werden, sondern explizit auf Techniken zur Umsetzung
eingegangen werden
Einigung auf Änderungen im Bereich Projektorganisation: Einigung auf Änderungen im Bereich Projektorganisation:
- Aufnahme des zeitlichen Ablaufs der Tickets in die Meeting Notes -> Screenshot des Projects in Protokoll mit aufnehmen
- Aufnahme des zeitlichen Ablaufs der Tickets in die Meeting Notes → Screenshot des Projects in Protokoll mit aufnehmen
- Start-, Enddaten und Labels der Tickets besser pflegen - Start-, Enddaten und Labels der Tickets besser pflegen
Sonstiges: Sonstiges:
- Urlaubszeiten Herr Prof. Arinir: 17.07.-01.08.2023 - Urlaubszeiten Herr Prof. Arinir: 17.07.-01.08.2023
## Abgeleitete Action Items ## Abgeleitete Action Items
| Action Item | Verantwortlicher | Deadline | | Action Item | Verantwortlicher | Deadline |
|-------------|------------------|-----------------| |------------------------------------------|------------------|-----------------|
| Abstract pro Thema | Alle | nächstes Weekly | | Abstract pro Thema | Alle | nächstes Weekly |
| Folienvorlage für den Seminarvortrag | Alle | nächstes Weekly | | Folienvorlage für den Seminarvortrag | Alle | nächstes Weekly |
| Rückmeldung zum Umfang der Seminararbeit | Prof. Arinir | nächstes Weekly | | Rückmeldung zum Umfang der Seminararbeit | Prof. Arinir | nächstes Weekly |
## Aktueller Projektstand ## Aktueller Projektstand
![alt text](https://github.com/fhswf/aki_prj23_transparenzregister/blob/meeting_notes_2023-05-04/documentations/meeting-notes/images/Project_2023-05-04.PNG) ![alt text](https://github.com/fhswf/aki_prj23_transparenzregister/blob/meeting_notes_2023-05-04/documentations/meeting-notes/images/Project_2023-05-04.PNG)

View File

@ -1,6 +1,7 @@
# Weekly *4*: 11.05.2023 # Weekly *4*: 11.05.2023
## Teilnehmer ## Teilnehmer
- Prof. Arinir - Prof. Arinir
- Tristan Nolde - Tristan Nolde
- Tim Ronneburg - Tim Ronneburg
@ -14,11 +15,12 @@
### Organisatorische Absprachen zum Umfang und Inhalt der Seminararbeit: ### Organisatorische Absprachen zum Umfang und Inhalt der Seminararbeit:
- Herr Arinir wird sich nochmal wegen des Umfangs der Seminararbeit bei unserer Gruppe melden - Herr Arinir wird sich nochmal wegen des Umfangs der Seminararbeit bei unserer Gruppe melden
- In der Seminarbeit sollen Anforderungen und Lösungsskizzen für das Projekt "Transparenzregister" dargestellt werden. - In der Seminararbeit sollen Anforderungen und Lösungsskizzen für das Projekt "Transparenzregister" dargestellt werden.
- Die Seminarabeit soll aus einem theoretischen Teil und einem praktischen Teil, in dem der praktische Nutzen für das Projekt "Transparenzregister" erörtert wird, bestehen; ob das Verhältnis zwischen dem theoretischen und praktischen Teil bei 50:50 oder 40:60 liegt, darüber können die Verfaser der Seminararbeit selbst entscheiden - Die Seminararbeit soll aus einem theoretischen Teil und einem praktischen Teil, in dem der praktische Nutzen für das
- Der Fokus der Seminarbeit soll stets danach ausgerichtet werden, wie die entsprechenden Aspekte bzw. die entsprechenden Technologien für das Projekt "Transparenzregister" genutzt werden können. Projekt "Transparenzregister" erörtert wird, bestehen; ob das Verhältnis zwischen dem theoretischen und praktischen
Teil bei 50:50 oder 40:60 liegt, darüber können die Verfasser der Seminararbeit selbst entscheiden
- Der Fokus der Seminararbeit soll stets danach ausgerichtet werden, wie die entsprechenden Aspekte bzw. die
entsprechenden Technologien für das Projekt "Transparenzregister" genutzt werden können.
### Vorstellung des Abstracts der Seminararbeit zu "Dev Ops" (Philipp Horstenkamp): ### Vorstellung des Abstracts der Seminararbeit zu "Dev Ops" (Philipp Horstenkamp):
@ -26,11 +28,13 @@ Abstract siehe Datei in github.
Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert: Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert:
- Eine sehr straffe Pipeline, die für Seriensoftware in Ordnung wäre, könnte uns für unser Projekt zu sehr „fesseln“ bzw. einschränken. - Eine sehr straffe Pipeline, die für Seriensoftware in Ordnung wäre, könnte uns für unser Projekt zu sehr „fesseln“
- Es wäre zu überlegen, ob die Software-Entwicklung, wie diese früher ablief, mit der Software-Entwicklung von heute (u.a. mit den Automatisierungsmöglichkeiten von heute) gegenübergestellt werden soll, um daraus zunächst eine Strategie für unser Projekt zu entwickeln, bevor man sich vertieft mit DevOps beschäftigt bzw. einschränken.
- Die Verwendung von CI/CD (Continuous Integration/Continuous Delivery)-Pipelines für KI-Projekte wäre ein interessantes Thema. - Es wäre zu überlegen, ob die Software-Entwicklung, wie diese früher ablief, mit der Software-Entwicklung von heute (
u.a. mit den Automatisierungsmöglichkeiten von heute) gegenübergestellt werden soll, um daraus zunächst eine Strategie
für unser Projekt zu entwickeln, bevor man sich vertieft mit DevOps beschäftigt
- Die Verwendung von CI/CD (Continuous Integration/Continuous Delivery)-Pipelines für KI-Projekte wäre ein interessantes
Thema.
### Vorstellung des Abstracts der Seminararbeit zu "Automatisierte Datenextraktion aus Internetquellen als Grundlage für die Analyse von Kapitalgesellschaften" (Tristan Nolde): ### Vorstellung des Abstracts der Seminararbeit zu "Automatisierte Datenextraktion aus Internetquellen als Grundlage für die Analyse von Kapitalgesellschaften" (Tristan Nolde):
@ -39,48 +43,47 @@ Abstract siehe Datei in github.
Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert: Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert:
- Pros und Cons von WebScraping gegenüber RSS-Feeds und gegenüber der API-Lösung sollen dargestellt werden - Pros und Cons von WebScraping gegenüber RSS-Feeds und gegenüber der API-Lösung sollen dargestellt werden
- Die Quelle E-Mail-Newsletter (z.B. vom Handelsblatt) könnte ebenfalls interessant sein, jedoch muss hierfür möglicherweise ein separater E-Mail-Account erstellt werden, was eher aufwändig ist - Die Quelle E-Mail-Newsletter (z.B. vom Handelsblatt) könnte ebenfalls interessant sein, jedoch muss hierfür
möglicherweise ein separater E-Mail-Account erstellt werden, was eher aufwändig ist
- Es wäre eventuell zu prüfen, ob auch Daten aus LinkedIn API, XING oder Facebook extrahiert werden könnten. - Es wäre eventuell zu prüfen, ob auch Daten aus LinkedIn API, XING oder Facebook extrahiert werden könnten.
### Vorstellung des Abstracts der Seminararbeit zu "Datenspeicherung" (Sebastian Zeleny): ### Vorstellung des Abstracts der Seminararbeit zu "Datenspeicherung" (Sebastian Zeleny):
Abstract siehe Datei in github. Abstract siehe Datei in github.
Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert: Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert:
- Bei der Wahl der Datenbank müssen verschiedene Anforderungen berücksichtigt werden, mit hohem Abstimmungsbedarf zwischen den Topics "Datenextraktion" und "Datenvisualisierung" - Bei der Wahl der Datenbank müssen verschiedene Anforderungen berücksichtigt werden, mit hohem Abstimmungsbedarf
zwischen den Topics "Datenextraktion" und "Datenvisualisierung"
- Herr Prof. Arinir fragte noch, ob wir das Thema "relationale Datenbanken" als Modul behandelt haben. Dies wurde bejaht, insbesondere SQL Datenbanken und SQL queries waren Gegenstand des Moduls "Datenbankprogrammierung" - Herr Prof. Arinir fragte noch, ob wir das Thema "relationale Datenbanken" als Modul behandelt haben. Dies wurde
bejaht, insbesondere SQL Datenbanken und SQL queries waren Gegenstand des Moduls "Datenbankprogrammierung"
### Vorstellung des Abstracts der Seminararbeit zu "Verflechtungsanalyse" (Tim Ronneburg):
### Vorstellung des Abstracts der Seminararbeit zu "Verpflechtungsanalyse" (Tim Ronneburg):
Abstract siehe Datei in github. Abstract siehe Datei in github.
Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert: Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert:
- Beim Social Graph wäre zu überlegen, nicht nur Beziehungen zwischen Unternehmen via Personen (z.B. Wirtschaftsprüfer), sondern auch Beziehungen zwischen Unternehmen via Kooperationspartner (Stiftungen, Unis, Forschungsinstitute) bzw. Eigentums-, Kunden- und Lieferbeziehungen darzustellen - Beim Social Graph wäre zu überlegen, nicht nur Beziehungen zwischen Unternehmen via Personen (z.B. Wirtschaftsprüfer),
sondern auch Beziehungen zwischen Unternehmen via Kooperationspartner (Stiftungen, Unis, Forschungsinstitute) bzw.
Eigentums-, Kunden- und Lieferbeziehungen darzustellen
- Beim Social Graph wäre zu überlegen, ob man nach Art der Beziehung filtern könnte - Beim Social Graph wäre zu überlegen, ob man nach Art der Beziehung filtern könnte
### Vorstellung des Abstracts der Seminararbeit zu "Text Mining" (Sascha Zhu): ### Vorstellung des Abstracts der Seminararbeit zu "Text Mining" (Sascha Zhu):
Abstract siehe Datei in github. Abstract siehe Datei in github.
Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert: Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert:
- Bei den Sentiment-Analyse-Tools wie FinBERT oder VADER wäre stets eine maschinelle Übersetzung der deutschen Nachrichtentexte ins Englische erforderlich, da FinBERT oder VADER keine deutschen Texte erkennen können - Bei den Sentiment-Analyse-Tools wie FinBERT oder VADER wäre stets eine maschinelle Übersetzung der deutschen
Nachrichtentexte ins Englische erforderlich, da FinBERT oder VADER keine deutschen Texte erkennen können
- Die Generierung von Ontologien ist zu komplex und soll nicht Gegenstand der Projektarbeit sein - Die Generierung von Ontologien ist zu komplex und soll nicht Gegenstand der Projektarbeit sein
- Bei der semantischen Textanalyse wäre empfehlenswert, dass dies über "Einzel-Personen" ausgeführt wird (das wäre dann ein Punkt im Graphen) - Bei der semantischen Textanalyse wäre empfehlenswert, dass dies über "Einzel-Personen" ausgeführt wird (das wäre dann
ein Punkt im Graphen)
- Das Thema "Named Entity Recognition" wird für die Projektarbeit eine hohe Bedeutung haben - Das Thema "Named Entity Recognition" wird für die Projektarbeit eine hohe Bedeutung haben
### Vorstellung des Abstracts der Seminararbeit zu "Datenvisualisierung" (Kim Mesewinkel-Risse): ### Vorstellung des Abstracts der Seminararbeit zu "Datenvisualisierung" (Kim Mesewinkel-Risse):
Abstract siehe Datei in github. Abstract siehe Datei in github.
@ -88,29 +91,30 @@ Abstract siehe Datei in github.
Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert: Folgende Punkte wurden bei bzw. nach der Vorstellung des Abstracts diskutiert:
- Bei der Datenvisualisierung wäre zu überlegen, dass man sich nur auf Python-Bibliotheken beschränkt - Bei der Datenvisualisierung wäre zu überlegen, dass man sich nur auf Python-Bibliotheken beschränkt
- Die Datenabfrage könnte über SQL oder Spark laufen, eine Schnittstelle zwischen dem Speicher und dem Front-End wird benötigt - Die Datenabfrage könnte über SQL oder Spark laufen, eine Schnittstelle zwischen dem Speicher und dem Front-End wird
benötigt
- Zwischen Daten und der Datenvisualisierung werden eventuell Zwischen-Caches benötigt - Zwischen Daten und der Datenvisualisierung werden eventuell Zwischen-Caches benötigt
- Bezüglich der Frage nach der „Middleware“: Wenn Plotly oder Plotly Dash verwendet wird, wird keine Middleware benötigt, da dies schon eingebaut ist. - Bezüglich der Frage nach der „Middleware“: Wenn Plotly oder Plotly Dash verwendet wird, wird keine Middleware
benötigt, da dies schon eingebaut ist.
### Feedback von Herrn Prof. Arinir: ### Feedback von Herrn Prof. Arinir:
- Es scheint noch kein Gesamtkonzept für das Gewerk vorzuliegen. - Es scheint noch kein Gesamtkonzept für das Gewerk vorzuliegen.
- Wir sollten uns die Frage stellen: Was soll am Ende für "ein brauchbares Stück Software" herauskommen, damit der Anwender mit der Vielzahl von Informationen und Funktionen zurechtkommt. - Wir sollten uns die Frage stellen: Was soll am Ende für "ein brauchbares Stück Software" herauskommen, damit der
Anwender mit der Vielzahl von Informationen und Funktionen zurechtkommt.
- Eine Lösungsskizze muss definiert werden, wobei ein Pflichtenheft jetzt noch nicht erforderlich ist - Eine Lösungsskizze muss definiert werden, wobei ein Pflichtenheft jetzt noch nicht erforderlich ist
- Es sollen zunächst einige GUI-Designs (mit einem Muster-Datensatz) entwickelt werden. - Es sollen zunächst einige GUI-Designs (mit einem Muster-Datensatz) entwickelt werden.
- Pros und Cons zwischen einem Wasserfallmodell (Pflichtenheft mit bis zu 1000 Seiten) und der agilen Modellierung sollen berücksichtigt werden. - Pros und Cons zwischen einem Wasserfallmodell (Pflichtenheft mit bis zu 1000 Seiten) und der agilen Modellierung
sollen berücksichtigt werden.
- Wie sollen die Verflechtungen eingebaut werden? - Wie sollen die Verflechtungen eingebaut werden?
- Wie sollen die Daten persistiert werden? - Wie sollen die Daten persistiert werden?
- Es wäre empfehlenswert, mit irgendetwas (d.h. einer kleinen Lösung) anzufangen, dann das Ergebnis anzuschauen, und diese kontinuierlich zu verbessern. - Es wäre empfehlenswert, mit irgendetwas (d.h. einer kleinen Lösung) anzufangen, dann das Ergebnis anzuschauen, und
diese kontinuierlich zu verbessern.
## Abgeleitete Action Items ## Abgeleitete Action Items
| Action Item | Verantwortlicher | Deadline | | Action Item | Verantwortlicher | Deadline |
|--------------------------------------------|------------------|-------------------| |------------------------------------------|------------------|-----------------|
| GUI Designs | Alle | nächstes Weekly | | GUI Designs | Alle | nächstes Weekly |
| Rückmeldung zum Umfang der Seminararbeit | Prof. Arinir | nächstes Weekly | | Rückmeldung zum Umfang der Seminararbeit | Prof. Arinir | nächstes Weekly |

View File

@ -1,6 +1,7 @@
# Weekly *5*: 25.05.2023 # Weekly *5*: 25.05.2023
## Teilnehmer ## Teilnehmer
- Prof. Arinir - Prof. Arinir
- Tristan Nolde - Tristan Nolde
- Tim Ronneburg - Tim Ronneburg
@ -11,20 +12,23 @@
## Themen ## Themen
- Nächster Termin am 08.06.2023 ist Fronleichnam => Verschoben auf 09.06.2023 09:00 - Nächster Termin am 08.06.2023 ist Fronleichnam Verschoben auf 09.06.2023 09:00
- Sebastian präsentiert das Miro Bord mit den Wireframediagrammen. [Siehe Anlage]() - Sebastian präsentiert das Miro Bord mit den Wireframediagrammen. [Siehe Anlage]()
- Philipp präsentiert den Sozial graph - Philipp präsentiert den social graph
- Sebastian präsentiert die Unternehmensdetails in sicht auf die Kennzahlen - Sebastian präsentiert die Unternehmensdetails in sicht auf die Kennzahlen
- Sebastian dankt Kim für das Überarbeiten der Graphen im Farbschema - Sebastian dankt Kim für das Überarbeiten der Graphen im Farbschema
- Sebastian zeigt die anderen Übersichten - Sebastian zeigt die anderen Übersichten
- Sascha weist darauf hin das zusätzlich noch das Quellmaterial für die Stimmungen mit angezeigt werden sollen. - Sascha weist darauf hin das zusätzlich noch das Quellmaterial für die Stimmungen mit angezeigt werden sollen.
- Die Form ist bisher noch unklar. - Die Form ist bisher noch unklar.
- Arinir: Auch indirekte verpflächtungen für N sprünge sollen bei den Details angezeigt werden und einen wert für den Einfluss von personen und Firmen sein. - Arinir: Auch indirekte Verflechtungen für N sprünge sollen bei den Details angezeigt werden und einen wert für den
- Zähle die Personenverbindungen juristisch/Natürlich getrennt nach den schichten der Indirektion. Interessant wäre eine auftrennung der natürlichen und Jiristischen personen in der Zählung Einfluss von personen und Firmen sein.
- Zähle die Personenverbindungen juristisch/Natürlich getrennt nach den schichten der Indirektion. Interessant wäre
eine auftrennung der natürlichen und Jiristischen personen in der Zählung
- Ranking der Personen nach Anzahl der Verbindungen - Ranking der Personen nach Anzahl der Verbindungen
- Die Frage wie wir zeitliche veränderungen im sozial graph bewerten sollen kam auf. Wurde aber noch nicht abschließend beantwortet. - Die Frage wie wir zeitliche veränderungen im social graph bewerten sollen kam auf. Wurde aber noch nicht abschließend
beantwortet.
## Abgeleitete Action Items ## Abgeleitete Action Items

View File

@ -14,7 +14,7 @@
- Stepstone Projekt: - Stepstone Projekt:
- Gewünscht wird ein initialer Austausch mit Stepstone - Gewünscht wird ein initialer Austausch mit Stepstone
- Befürchtung ist, dass es zu einem Hinderniss wird - Befürchtung ist, dass es zu einem Hindernis wird
- Entscheidung liegt daher beim Projekt-Team - Entscheidung liegt daher beim Projekt-Team
- Weitere Informationen sind nicht aktuell nicht vorhanden - Weitere Informationen sind nicht aktuell nicht vorhanden
- Vorschlag Prof. Arinir: Sollte das Thema nochmal zum Team getragen werden, wird der aktuelle Stand vorgestellt und - Vorschlag Prof. Arinir: Sollte das Thema nochmal zum Team getragen werden, wird der aktuelle Stand vorgestellt und
@ -24,7 +24,7 @@
- Ändert sich der Scope - Nein - Ändert sich der Scope - Nein
- NDA - Nein - NDA - Nein
- Veröffentlichung - maximal Impressionen - Veröffentlichung - maximal Impressionen
- Was muss geleistet werden - nicht direkt an Stepstone sondern über FH als Mediator - Was muss geleistet werden - nicht direkt an Stepstone, sondern über FH als Mediator
- Sollen Präsentationen vorab zur Verfügung gestellt werden? - Sollen Präsentationen vorab zur Verfügung gestellt werden?
- Einige Tage vorher in das Git Repo. hochladen und Prof. Arinir benachrichtigen - Einige Tage vorher in das Git Repo. hochladen und Prof. Arinir benachrichtigen
- Rücksprache Seminarpräsentationen - Rücksprache Seminarpräsentationen
@ -35,7 +35,7 @@
- Fokus auf Anwendung und Mehrwert, weniger genauer mathematischer Lösung - Fokus auf Anwendung und Mehrwert, weniger genauer mathematischer Lösung
- Feedback: - Feedback:
- Präsentation scheint sehr umfangreich; Wunsch nach Reduzierung der Folienanzahl - Präsentation scheint sehr umfangreich; Wunsch nach Reduzierung der Folienanzahl
- Formeln hinter den Analysen spannend, ggf. doch drauf eingehen, um Kennzahl in Kontext zu setzen - Formeln hinter den Analysen spannend, ggf. doch darauf eingehen, um Kennzahl in Kontext zu setzen
- Visualiserung: - Visualiserung:
- Prinzipien - Prinzipien
- Vorteile - Vorteile
@ -43,7 +43,7 @@
- Effekt von Farbwahl - Effekt von Farbwahl
- Erste Umsetzung im Jupyter Notebook - Erste Umsetzung im Jupyter Notebook
- Feedback: - Feedback:
- Es werden extem viele Datenpunkte angezeigt werden müssen, wie wird dies in den Bibliotheken umgesetzt? - Es werden extrem viele Datenpunkte angezeigt werden müssen, wie wird dies in den Bibliotheken umgesetzt?
Kann dort gefiltert werden? Kann dort gefiltert werden?
- Wenn nicht direkt am Graphen (der Darstellung) gefiltert werden kann, dann frühzeitig filtern, bevor - Wenn nicht direkt am Graphen (der Darstellung) gefiltert werden kann, dann frühzeitig filtern, bevor
der Graph gebaut wird der Graph gebaut wird
@ -55,15 +55,15 @@
- Social Graph - Social Graph
- Zeitseriendaten - Zeitseriendaten
- Relationales DB Modell - Relationales DB Modell
- Fokus ebenfalls auf Abfrage der Daten für Folge-Projekte wie Visualiserung und Mehrwert fürs Team, weniger - Fokus ebenfalls auf Abfrage der Daten für Folge-Projekte wie Visualisierung und Mehrwert fürs Team, weniger
Theorie Theorie
- Feedback: - Feedback:
- Es müssen Erfahrungen mit der Library und Darstellung gesammelt werden, um den Mehrwert der Lösung - Es müssen Erfahrungen mit der Library und Darstellung gesammelt werden, um den Mehrwert der Lösung
hervorzuheben hervorzuheben
- Modellierung der Finzanz-Kennzahlen - Modellierung der Finanz-Kennzahlen
- Spaltennamen sollen sprechend sein, z.B. "value" statt "sum" - Spaltennamen sollen sprechend sein, z.B. "value" statt "sum"
- Präferenz zum Modell mit einzelnem Eintrag mit mehren Kennzahl Spalten stallt generischer Lösung über - Präferenz zum Modell mit einzelnem Eintrag mit mehreren Kennzahlen pro Spalten statt generischer
Enum Lösung über Enum
- Text Mining - Text Mining
- Fokus auf Sentiment Analyse - Fokus auf Sentiment Analyse
- Vergleich verschiedener Lösungen und ML Modelle - Vergleich verschiedener Lösungen und ML Modelle

View File

@ -16,7 +16,7 @@
- Datenspeicherung auf dem Cluster - Datenspeicherung auf dem Cluster
- Weitere Vorgehensweise: - Weitere Vorgehensweise:
- Idee: Kleine Workshops/Teams - Idee: Kleine Workshops/Teams
- In 2er Teams die einzelnen Funktionen über Feature Branches erstellen - In 2er-Teams die einzelnen Funktionen über Feature Branches erstellen
## Abgeleitete Action Items ## Abgeleitete Action Items

View File

@ -26,8 +26,8 @@
- UI: - UI:
- Vorstellung der ersten Visualisierung mit Plotly und Anbindung an ProductionDB - Vorstellung der ersten Visualisierung mit Plotly und Anbindung an ProductionDB
- Dash startet im Hintergrund einen http-Server, welcher über den Port 8050 erreichbar ist - Dash startet im Hintergrund einen http-Server, welcher über den Port 8050 erreichbar ist
- Dash wird für das Dashboarding verwendet und wird (bei Bedarf) durch weitere Komponenten erweitert - Dash wird für das Dashboard verwendet und wird (bei Bedarf) durch weitere Komponenten erweitert
- Abschluß des PoC und Umsetzung der bestehenden Architektur - Abschluss des PoC und Umsetzung der bestehenden Architektur
## Abgeleitete Action Items ## Abgeleitete Action Items

View File

@ -15,13 +15,14 @@
- Rückfrage von Herrn Arinir bezüglich Aufbau der Software und Architektur - Rückfrage von Herrn Arinir bezüglich Aufbau der Software und Architektur
- Gerade werden einzelne Funktionen erstellt, Daten werden ungefiltert in die Mongo DB geschrieben, anschließend - Gerade werden einzelne Funktionen erstellt, Daten werden ungefiltert in die Mongo DB geschrieben, anschließend
Bereinigung und Übertragung in die Postgres Bereinigung und Übertragung in die Postgres
- Vorstellung aktueller Repo-Struktur durch Tristan, relevanter Code befindet sich im src-Ordner - Vorstellung aktueller Repo-Struktur durch Tristan
- Relevanter Code befindet sich im src-Ordner
- Wie kann sichergestellt werden, dass unsere Ziele erreicht werden? - Wie kann sichergestellt werden, dass unsere Ziele erreicht werden?
- Zeitplan/Meilensteinplan gewünscht - Zeitplan/Meilensteinplan gewünscht
- Wann soll was erreicht werden? - Wann soll was erreicht werden?
- Burndown-Diagramm - Burn-down-Diagramm
-> Umsetzung durch Team beim Präsenzmeeting am 09.09.2023 Umsetzung durch Team beim Präsenzmeeting am 09.09.2023
- Kurze Vorstellung der bearbeiteten Themen: NER + Sentiment (Sebastian), Finanzdaten (Tristan), UI (Kim), - Kurze Vorstellung der bearbeiteten Themen: NER + Sentiment (Sebastian), Finanzdaten (Tristan), UI (Kim),
Datentransfer (Philipp) Datentransfer (Philipp)

View File

@ -6,48 +6,26 @@ Version 0.1 Erstellt am 07.04.2023
|--------------------|----------------| |--------------------|----------------|
| Kim Mesewinkel | 000 | | Kim Mesewinkel | 000 |
| Tristan Nolde | 000 | | Tristan Nolde | 000 |
| Sebastian Zelenie | 000 | | Sebastian Zeleny | 000 |
| Philip Horstenkamp | 000 | | Philip Horstenkamp | 000 |
| Sascha Zhu | 000 | | Sascha Zhu | 000 |
| Tim Ronneburg | 000 | | Tim Ronneburg | 000 |
## Historie der Dokumentenversion <a name="historie"></a> ## Historie der Dokumentenversion <a name="historie"></a>
| Version | Datum | Autor | Änderungsgrund / Bemerkung | | Version | Datum | Autor | Änderungsgrund / Bemerkung |
|-----------|------------|---------------|----------------------------------------| |---------|------------|---------------|----------------------------------------|
| 0.1 | 07.04.2023 | Tim Ronneburg | Initiales aufsetzen des Pflichtenhefts | | 0.1 | 07.04.2023 | Tim Ronneburg | Initiales aufsetzen des Pflichtenhefts |
| 0.2 | 000 | | | | 0.2 | 000 | | |
| ... | 000 | | | | ... | 000 | | |
| 1.0 | 000 | | | | 1.0 | 000 | | |
## Inhaltsverzeichnis <a name="inhaltsverzeichnis"></a> ## Inhaltsverzeichnis <a name="inhaltsverzeichnis"></a>
[Historie der Dokumentenversion](#historie) [Historie der Dokumentenversion](#historie)
[Inhaltsverzeichnis](#inhaltsverzeichnis) [Inhaltsverzeichnis](#inhaltsverzeichnis)
1. [Einleitung](#einleitung)
1. [allgemeines](#allgemeines)
1. [Ziel und Zweck des Dokuments](#ziel/zweck)
1. [Ausgangssituation](#ausgangssituation)
1. [Projektbezug](#projektbezug)
1. [Abkürzungen](#abkürzungen)
1. [Schnittstellen/ Bezug zu anderen Dokumenten](#schnittstellen)
1. [Konzept und Rahmenbedingungen](#konzept_und_rahmenbedingung)
1. [Ziele des Anbieters](#ziele_anbieter)
1. [Ziele und Nutzen des Anwenders](#ziele_anwender)
1. [Benutzer / Zielgruppen](#benutzer/zielgruppen)
1. [Systemvoraussetzungen (Optional)](#systemvoraussetzungen)
1. [Ressourcen (Optional)](#ressourcen)
1. [Funktionale Anforderungen](#f_anforderung)
1. [F100](#f100)
1. [Nicht-Funktionale Anforderungen](#nf_anforderung)
1. [N100](#n100)
1. [Anforderungsverfolgung zu den Spezifikationen](#verfolgung_spezifikation)
1. [Abnahmekriterien und Vorgehen zur Ausgangsprüfung](#abnahmekriterien)
1. [Lieferumfang](#lieferumfang)
1. [Anhang / Ressourcen](#anhang/ressourcen)
<--!toc-->
## Einleitung <a name="einleitung"></a> ## Einleitung <a name="einleitung"></a>
@ -62,6 +40,7 @@ Version 0.1 Erstellt am 07.04.2023
### Abkürzungen <a name="abkürzungen"></a> ### Abkürzungen <a name="abkürzungen"></a>
### Schnittstellen/ Bezug zu anderen Dokumenten <a name="schnittstellen"></a> ### Schnittstellen/ Bezug zu anderen Dokumenten <a name="schnittstellen"></a>
Test Test
## Konzept und Rahmenbedingungen <a name="konzept_und_rahmenbedingung"></a> ## Konzept und Rahmenbedingungen <a name="konzept_und_rahmenbedingung"></a>
@ -76,14 +55,14 @@ Test
### Ressourcen (Optional) <a name="ressourcen"></a> ### Ressourcen (Optional) <a name="ressourcen"></a>
## Funktionale Anforderungen <a name="f_anforderung"></a> ## Funktionale Anforderungen <a name="f_anforderung"></a>
### **Muss Ziele** ### **Muss Ziele**
### F100 <a name="f100"></a> ### F100 <a name="f100"></a>
Die Software berechnet und veranschaulicht folgende Unternehmenskennzahlen: Die Software berechnet und veranschaulicht folgende Unternehmenskennzahlen:
- Umsatz - Umsatz
- Gewinn - Gewinn
- Bilanzsumme - Bilanzsumme
@ -94,49 +73,66 @@ Die Software berechnet und veranschaulicht folgende Unternehmenskennzahlen:
- Besitzverhältnisse - Besitzverhältnisse
### F110 <a name="f110"></a> ### F110 <a name="f110"></a>
Das System muss, neben den Kennzahlen von F100, die Metriken aus dem Anhang "data_and_metrics.md" je nach Datenlage für die Unternehmen berechnen und anzeigen.
Das System muss, neben den Kennzahlen von F100, die Metriken aus dem Anhang "data_and_metrics.md" je nach Datenlage für
die Unternehmen berechnen und anzeigen.
### F120 <a name="f120"></a> ### F120 <a name="f120"></a>
Die Software muss eine Suche nach Unternehmen und Personen anbieten die zu einer Detailansicht führt mit den in F100 genannten Kennzahlen.
Die Software muss eine Suche nach Unternehmen und Personen anbieten die zu einer Detailansicht führt mit den in F100
genannten Kennzahlen.
### **Soll Ziele** ### **Soll Ziele**
### F200 <a name="f200"></a> ### F200 <a name="f200"></a>
Die Software veranschaulicht die Konzernstruktur (Mutterkonzern <-> Tochterfirmen). Diese sollen durch ein Netz transparent dargestellt werden.
Die Software veranschaulicht die Konzernstruktur (Mutterkonzern <-> Tochterfirmen). Diese sollen durch ein Netz
transparent dargestellt werden.
### F210 <a name="f210"></a> ### F210 <a name="f210"></a>
Die Software zeigt die Beziehungen von Unternehmen untereinander und mit den Wirtschaftsprüfern auf. Diese sollen durch ein Netz transparent dargestellt werden.
Die Software zeigt die Beziehungen von Unternehmen untereinander und mit den Wirtschaftsprüfern auf. Diese sollen durch
ein Netz transparent dargestellt werden.
### F220 <a name="f220"></a> ### F220 <a name="f220"></a>
Die Software soll bewerten ob die Berichtserstattung der letzten 7 Tage eher Positiv oder Negativ zu dem Unternehmen war. Dabei sind häufige Vorstandswechsel negativ und Zielerreichungen positiv.
Die Software soll bewerten ob die Berichtserstattung der letzten 7 Tage eher Positiv oder Negativ zu dem Unternehmen
war. Dabei sind häufige Vorstandswechsel negativ und Zielerreichungen positiv.
## Nicht-Funktionale Anforderungen <a name="nf_anforderung"></a> ## Nicht-Funktionale Anforderungen <a name="nf_anforderung"></a>
### **Muss Ziele** ### **Muss Ziele**
### N100 <a name="n100"></a> ### N100 <a name="n100"></a>
Das System muss die 1000 größten deutschen und europäischen Unternehmen beinhalten. Diese werden anhand der Kennzahlen Das System muss die 1000 größten deutschen und europäischen Unternehmen beinhalten. Diese werden anhand der Kennzahlen
- Umsatz - Umsatz
- -
- -
bewertet und bemessen. bewertet und bemessen.
### **Soll Ziele** ### **Soll Ziele**
### N200 <a name="n200"></a> ### N200 <a name="n200"></a>
Das System ist 24/7 über das Internet für jede Person mit Internetzugang erreichbar. Das System ist 24/7 über das Internet für jede Person mit Internetzugang erreichbar.
### N210 <a name="n210"></a> ### N210 <a name="n210"></a>
Das System soll eine Verfügbarkeit von 99 % erreichen, mit maximal 10 Ausfällen pro Jahr. Das System soll eine Verfügbarkeit von 99 % erreichen, mit maximal 10 Ausfällen pro Jahr.
### **Kann Ziele** ### **Kann Ziele**
### N300 <a name="n300"></a> ### N300 <a name="n300"></a>
Das System kann möglichst über einen Disaster Recovery Schutz verfügen und in einem zweiten, 250 KM vom Hauptrechenzentrum entfernten Rechenzentrum die Systeme und Daten spiegeln.
Das System kann möglichst über einen Disaster Recovery Schutz verfügen und in einem zweiten, 250 KM vom
Hauptrechenzentrum entfernten Rechenzentrum die Systeme und Daten spiegeln.
### N310 <a name="n310"></a> ### N310 <a name="n310"></a>
Das System kann möglichst skalierbar sein, sodass auch eine Nutzerzahl von 1000 Benutzern die Software nutzen können.
Das System kann möglichst skalierbar sein, sodass auch eine Nutzerzahl von 1000 Benutzern die Software nutzen können.
## Anforderungsverfolgung zu den Spezifikationen <a name="verfolgung_spezifikation"></a> ## Anforderungsverfolgung zu den Spezifikationen <a name="verfolgung_spezifikation"></a>

View File

@ -1,4 +1,5 @@
# Timeline # Timeline
```{mermaid} ```{mermaid}
gantt gantt

View File

@ -1,23 +1,29 @@
# Sentimentanalyse # Sentimentanalyse
Sentimentanalyse ist eine Technik des maschinellen Lernens und der künstlichen Intelligenz, die verwendet wird, um das Stimmungs- oder Emotionsniveau in Texten oder anderen Inhalten zu identifizieren. Die Sentimentanalyse basiert auf der Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) und nutzt Algorithmen, um das Vorkommen von positiven, negativen oder neutralen Ausdrücken in einem Text zu erkennen. Sentimentanalyse ist eine Technik des maschinellen Lernens und der künstlichen Intelligenz, die verwendet wird, um das
Stimmungs- oder Emotionsniveau in Texten oder anderen Inhalten zu identifizieren. Die Sentimentanalyse basiert auf der
Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) und nutzt Algorithmen, um das Vorkommen von
positiven, negativen oder neutralen Ausdrücken in einem Text zu erkennen.
## Techniken der Sentimentanalyse: ## Techniken der Sentimentanalyse:
1. Regelbasiert: Nutzt eine Sammlung von Regeln und lexikalischen Ressourcen, um das Sentiment zu erkennen. Beispiel: Das SentiWordNet-Lexikon ordnet jedem Wort in einem Text eine positive, negative oder neutrale Bewertung zu 1. Regelbasiert: Nutzt eine Sammlung von Regeln und lexikalischen Ressourcen, um das Sentiment zu erkennen. Beispiel:
2. Machine-Learning-basiert: Nutzt Algorithmen des maschinellen Lernens, beispielsweise Naive Bayes, Entscheidungsbäume und Support-Vector-Machines (SVM). Das SentiWordNet-Lexikon ordnet jedem Wort in einem Text eine positive, negative oder neutrale Bewertung zu
3. Deep-Learning-basiert: Nutzt neuronale Netze, beispielsweise Convolutional Neural Networks (CNN) und Recurrent Neural Networks (RNN). 2. Machine-Learning-basiert: Nutzt Algorithmen des maschinellen Lernens, beispielsweise Naive Bayes, Entscheidungsbäume
und Support-Vector-Machines (SVM).
3. Deep-Learning-basiert: Nutzt neuronale Netze, beispielsweise Convolutional Neural Networks (CNN) und Recurrent Neural
Networks (RNN).
[Deep Data Analytics](https://deep-data-analytics.com/faq/sentiment-analyse/) [Deep Data Analytics](https://deep-data-analytics.com/faq/sentiment-analyse/)
## Python Bibliotheken: ## Python Bibliotheken:
Pattern, VADER, BERT, TextBlob, spacy, CoreNLP, scikit-learn, Polyglot, PyTorch, Flair Pattern, VADER, BERT, TextBlob, spacy, CoreNLP, scikit-learn, Polyglot, PyTorch, Flair
[Top 10 Libraries](https://www.unite.ai/10-best-python-libraries-for-sentiment-analysis/) [Top 10 Libraries](https://www.unite.ai/10-best-python-libraries-for-sentiment-analysis/)
### FinBERT ### FinBERT
Financial Sentiment Analysis with BERT Financial Sentiment Analysis with BERT
[Paper](https://arxiv.org/pdf/1908.10063.pdf) [Paper](https://arxiv.org/pdf/1908.10063.pdf)
@ -26,18 +32,16 @@ Financial Sentiment Analysis with BERT
[Minimal Example](https://huggingface.co/yiyanghkust/finbert-tone) [Minimal Example](https://huggingface.co/yiyanghkust/finbert-tone)
# Topic Modeling # Topic Modeling
- Text-Mining-Methode, um Themen in Textsammlungen zu finden - Text-Mining-Methode, um Themen in Textsammlungen zu finden
- Suche nach Trends und Mustern in unstrukturierten Daten - Suche nach Trends und Mustern in unstrukturierten Daten
- Verfahren: Latent Dirichlet Allokation (LDA), Probabilistic Latent Semantic Analysis (PLSA), Non-Negative Matrix Factorization (NMF) - Verfahren: Latent Dirichlet Allokation (LDA), Probabilistic Latent Semantic Analysis (PLSA), Non-Negative Matrix
Factorization (NMF)
- Document Clustering - Document Clustering
[Beispiel Blog-Analyse](https://blog.codecentric.de/topic-modeling-codecentric-blog-articles) [Beispiel Blog-Analyse](https://blog.codecentric.de/topic-modeling-codecentric-blog-articles)
## Python Bibliotheken: ## Python Bibliotheken:
Gensim (ggf. Erweiterung gensim-finance), spacy, NLTK, scikit-learn, PyCaret Gensim (ggf. Erweiterung gensim-finance), spacy, NLTK, scikit-learn, PyCaret

View File

@ -1,11 +1,19 @@
# Von der Problemstellung zum Lösungskonzept # Von der Problemstellung zum Lösungskonzept
Um ein Softwaresystem für das Transparenzregister implementieren zu können, ist es notwendig Anforderungen zu formulieren. Diese legen die Eigenschaften der Software fest und werden benötigt, um die fachliche und technische Lösung zu modellieren / entwerfen und ein Produkt zu implementieren.
Zu Beginn sind die Anforderungen wenig eingeschränkt ("Benötigt wird eine Möglichkeit Daten zu speichern."), im Verlauf der Modellierung wird der Lösungsraum eingeschränkt ("Es bietet sich eine Datenbanklösung oder Dateiablage an.") und abschließend auf eine zu implementierende Lösung festgelegt ("Die Software verwendet ein relationales Modell unter Verwendung einer SQLite Datenbank."). Um ein Softwaresystem für das Transparenzregister implementieren zu können, ist es notwendig Anforderungen zu
formulieren. Diese legen die Eigenschaften der Software fest und werden benötigt, um die fachliche und technische Lösung
zu modellieren / entwerfen und ein Produkt zu implementieren.
Zu Beginn sind die Anforderungen wenig eingeschränkt ("Benötigt wird eine Möglichkeit Daten zu speichern."), im Verlauf
der Modellierung wird der Lösungsraum eingeschränkt ("Es bietet sich eine Datenbanklösung oder Dateiablage an.") und
abschließend auf eine zu implementierende Lösung festgelegt ("Die Software verwendet ein relationales Modell unter
Verwendung einer SQLite Datenbank.").
## Requirements Engineering Transparenzregister ## Requirements Engineering Transparenzregister
Unser Weg zum Pflichtenheft und zur Spezifikation der Systemanforderungen ist folgend dargestellt. Unser Weg zum Pflichtenheft und zur Spezifikation der Systemanforderungen ist folgend dargestellt.
Von unspezifizierten Anforderungen werden wir immer konkreter und beantworten iterativ die Fragen *Was ist das Problem/Anforderung?* und *Wie lösen wir das Problem/Anforderung?*. Von unspezifizierten Anforderungen werden wir immer konkreter und beantworten iterativ die Fragen *Was ist das
Problem/Anforderung?* und *Wie lösen wir das Problem/Anforderung?*.
### 1. Anforderungen aus Projektvorstellung ### 1. Anforderungen aus Projektvorstellung
@ -26,15 +34,22 @@ Von unspezifizierten Anforderungen werden wir immer konkreter und beantworten it
- Es werden Werkzeuge benötigt, um Text Mining zu betreiben. - Es werden Werkzeuge benötigt, um Text Mining zu betreiben.
### 3. Identifikation von Domänen zur Lösungsfindung ### 3. Identifikation von Domänen zur Lösungsfindung
Aus den Anforderungen der Projektvorstellung und der Projektgruppe wurden sechs Domänen identifiziert, welche benötigt werden, um ein Softwaresystem für Transparenzregister zu erarbeiten.
Aus den Anforderungen der Projektvorstellung und der Projektgruppe wurden sechs Domänen identifiziert, welche benötigt
werden, um ein Softwaresystem für Transparenzregister zu erarbeiten.
Um das benötigte Domänenwissen zu vertiefen, bearbeitet jedes Mitglied ein Cluster. Um das benötigte Domänenwissen zu vertiefen, bearbeitet jedes Mitglied ein Cluster.
### 4. technische/fachliche Lösungen ### 4. technische/fachliche Lösungen
Mit dem Domänenwissen können technische und fachliche Lösungen definiert werden ("Zur Datenspeicherung von Unternehmenskennzahlen ist *xy* notwendig, weil *abc*.") und erste Modelle (z.B. GUI-Modell) erstellt werden.
Mit dem Domänenwissen können technische und fachliche Lösungen definiert werden ("Zur Datenspeicherung von
Unternehmenskennzahlen ist *xy* notwendig, weil *abc*.") und erste Modelle (z.B. GUI-Modell) erstellt werden.
### 5. Priorisierung von Anforderungen ### 5. Priorisierung von Anforderungen
Die Gruppe diskutiert die Anforderungen und legt eine Priorisierung fest. Die Gruppe diskutiert die Anforderungen und legt eine Priorisierung fest.
### 6. Pflichtenheft ### 6. Pflichtenheft
Das Team legt sich mit dem Pflichtenheft auf einen definierten Umfang und konkrete Inhalte der Lösung fest. Es wird in *Muss-* und *Kann-*Anforderungen unterschieden.
Das Team legt sich mit dem Pflichtenheft auf einen definierten Umfang und konkrete Inhalte der Lösung fest. Es wird in
*Muss-* und *Kann-*Anforderungen unterschieden.
Das Pflichtenheft ist das **Project Proposal**. Das Pflichtenheft ist das **Project Proposal**.

View File

@ -1,44 +1,83 @@
# Timeseries (deutsch: Zeitreihen) im Kontext des Transparenzregisters Kapitalgesellschaften # Timeseries (deutsch: Zeitreihen) im Kontext des Transparenzregisters Kapitalgesellschaften
## Leitfragen ## Leitfragen
1. Was zeichnet Timeseries Daten aus? 1. Was zeichnet Timeseries Daten aus?
2. Wie werden Timeseries effizient gespeichert? 2. Wie werden Timeseries effizient gespeichert?
3. Welche Daten sind für den vorstehenden Use Case relevant und wie werden diese möglichts optimal (gemäß Software Qualitätskriterien wie Skalierbarkeit u.ä.) modelliert? 3. Welche Daten sind für den vorstehenden Use Case relevant und wie werden diese möglichts optimal (gemäß Software
Qualitätskriterien wie Skalierbarkeit u.ä.) modelliert?
4. Passt die Struktur und Handhabung von Timeseries Daten auf den Use Case? 4. Passt die Struktur und Handhabung von Timeseries Daten auf den Use Case?
5. Wo können die benötigten Daten abgerufen werden? 5. Wo können die benötigten Daten abgerufen werden?
6. Wie könnte ein beispielhafter Datensatz (ggf. in Form eines Pandas DataFrames) aussehen? 6. Wie könnte ein beispielhafter Datensatz (ggf. in Form eines Pandas DataFrames) aussehen?
## Timeseries ## Timeseries
Hinter Timeseries (oder Zeitreihen) verbergen sich Datenpunkte meistens numerischer Natur aber auch andere Datentypen sind möglich, die Werte einer Kennzahl oder Entität entlang der Zeit-Achse darstellen. Nennenswerte Beispiele sind die Herzfrequenz eines Menschen sowie Aktienkurse börsennotierter Unternehmen. Es wird generell zwischen `Metriken` (engl.: Metrics; bei regelmäßigem Intervall) und `Ereignissen` (engl.: Events; bei unregelmäßigen Intervallen) unterschieden.
Hinter Timeseries (oder Zeitreihen) verbergen sich Datenpunkte meistens numerischer Natur aber auch andere Datentypen
sind möglich, die Werte einer Kennzahl oder Entität entlang der Zeit-Achse darstellen. Nennenswerte Beispiele sind die
Herzfrequenz eines Menschen sowie Aktienkurse börsennotierter Unternehmen. Es wird generell zwischen `Metriken` (engl.:
Metrics; bei regelmäßigem Intervall) und `Ereignissen` (engl.: Events; bei unregelmäßigen Intervallen) unterschieden.
--<cite>vgl. [influxdata - What is time series data?](https://www.influxdata.com/what-is-time-series-data/) --<cite>vgl. [influxdata - What is time series data?](https://www.influxdata.com/what-is-time-series-data/)
Einige zentrale Eigenschaften von Daten, die als Zeitreihen modelliert werden, sind: Einige zentrale Eigenschaften von Daten, die als Zeitreihen modelliert werden, sind:
1. `Unveränderbarkeit` (engl.: Immutability):
Da Zeitreihen in der Regel in zeitlicher Reihenfolge aufgenommen werden, werden sie normalerweise lediglich an die bestehende Reihe angehangen und nachträglich nicht mehr angepasst. Der entscheidende Identifikator des Datensatzes besteht dabei aus dem Zeitstempel (engl.: Timestamp) sowie der zugeordneten Entität (z.B. einem Sensor). Andere Features, die als Primärschlüssel fungieren können, sind nicht vorgesehen.
2. `Lebensdauer` (engl.: Retention policy):
Da Zeitreihen in hoher Frequenz geschrieben aber mit höherem Alter seltener gelesen werden, ist es üblich alte Daten zu löschen bzw. aggregiert zu speichern, um langfristig Speicher zu sparen.
3. `Aggregation` (engl.: Aggregation):
In den meisten Use Cases werden nicht alle Daten gleichzeitig oder nur einzelne Datensätze sondern Werte eines definierten Zeitraumes abgefragt und häufig aggregiert (z.B. als Summe oder Durchschnitt) zurückgegeben.
4. `Hohes Schreib- zu Lese-Verhältnis` (engl.: High write/read ratio):
Timeseries Daten werden in der Regel in hoher Frequenz (kurzen Intervallen) geschrieben jedoch nur gelegentlich bzw. wie in Punkt 3 angemerkt aggregiert abgerufen, so dass schreibende Zugriffe zur Datenbank die lesenden an Volumen übertreffen.
<cite>-- vgl. [TDengine - Characteristics of Time-Series Data](https://tdengine.com/tsdb/characteristics-of-time-series-data/) 1. `Unveränderbarkeit` (engl.: Immutability):
Da Zeitreihen in der Regel in zeitlicher Reihenfolge aufgenommen werden, werden sie normalerweise lediglich an die
bestehende Reihe angehangen und nachträglich nicht mehr angepasst. Der entscheidende Identifikator des Datensatzes
besteht dabei aus dem Zeitstempel (engl.: Timestamp) sowie der zugeordneten Entität (z.B. einem Sensor). Andere
Features, die als Primärschlüssel fungieren können, sind nicht vorgesehen.
2. `Lebensdauer` (engl.: Retention policy):
Da Zeitreihen in hoher Frequenz geschrieben aber mit höherem Alter seltener gelesen werden, ist es üblich alte Daten
zu löschen bzw. aggregiert zu speichern, um langfristig Speicher zu sparen.
3. `Aggregation` (engl.: Aggregation):
In den meisten Use Cases werden nicht alle Daten gleichzeitig oder nur einzelne Datensätze, sondern Werte eines
definierten Zeitraumes abgefragt und häufig aggregiert (z.B. als Summe oder Durchschnitt) zurückgegeben.
4. `Hohes Schreib- zu Lese-Verhältnis` (engl.: High write/read ratio):
Timeseries Daten werden in der Regel in hoher Frequenz (kurzen Intervallen) geschrieben jedoch nur gelegentlich bzw.
wie in Punkt 3 angemerkt aggregiert abgerufen, sodass schreibende Zugriffe zur Datenbank die lesenden an Volumen
übertreffen.
<cite>--
vgl. [TDengine - Characteristics of Time-Series Data](https://tdengine.com/tsdb/characteristics-of-time-series-data/)
## Modellierung relevanter Kennzahlen ## Modellierung relevanter Kennzahlen
### Ist die Timeseries Modellierung für den Use Case geeignet? ### Ist die Timeseries Modellierung für den Use Case geeignet?
Die im Rahmen der vorher durchgeführten Analyse von für den Use Case [relevanten Unternehmenskennzahlen](../data_and_metrics.md) zeichnen sich durch ein Merkmal aus: sie basieren auf einer jährlich bis maximal jedes Quartal aufgestellten Kennzahl wie den Gewinn oder Umsatz des Unternehmens. Daraus resultiert eine für Zeitreihen geringe Datenfrequenz - üblich sind hier minütlich bis unter sekündlich geschriebene Daten.
Des Weiteren ist jeder Datensatz nicht nur an die Zeit-Achse sondern eine weitere Entität wie einen Quartals oder Jahresabschluss gebunden. Dies spiegelt nicht nur in der Berechnung der Kennzahl für ein einzelnes Unternehmen sondern auch den Vergleich zwischen Mehreren wieder: Hier ist es möglich, dass Unternehmen ihre Ergebnisse zu unterschiedlichen Zeiten aber den selben Ereignissen veröffentlichen. Immerhin ist es realistisch, dass ein Unternehmen seinen Jahresabschluss deutlich früher als ein anderes der Öffentlichkeit zur Verfügung stellt. So eine Abfrage ließe sich zwar durchaus über die Einführung einer zeitlichen Einschränkung filtern, jedoch ist auch hier die Verknüpfung zu einem Jahres- oder Quartalsabschluss von höherem Interesse. Die im Rahmen der vorher durchgeführten Analyse von für den Use
Case [relevanten Unternehmenskennzahlen](../data_and_metrics.md) zeichnen sich durch ein Merkmal aus: sie basieren auf
einer jährlich bis maximal jedes Quartal aufgestellten Kennzahl wie den Gewinn oder Umsatz des Unternehmens. Daraus
resultiert eine für Zeitreihen geringe Datenfrequenz - üblich sind hier minütlich bis unter sekündlich geschriebene
Daten.
In Folge dessen eignet sich eine Zeitreihen basierte Modellierung nicht für die zentralen Unternehmenskennzahlen. Des Weiteren ist jeder Datensatz nicht nur an die Zeit-Achse, sondern eine weitere Entität wie eines Quartals oder
Jahresabschluss gebunden. Dies spiegelt nicht nur in der Berechnung der Kennzahl für ein einzelnes Unternehmen, sondern
auch den Vergleich zwischen Mehreren wieder: Hier ist es möglich, dass Unternehmen ihre Ergebnisse zu unterschiedlichen
Zeiten aber den selben Ereignissen veröffentlichen. Immerhin ist es realistisch, dass ein Unternehmen seinen
Jahresabschluss deutlich früher als ein anderes der Öffentlichkeit zur Verfügung stellt. So eine Abfrage ließe sich zwar
durchaus über die Einführung einer zeitlichen Einschränkung filtern, jedoch ist auch hier die Verknüpfung zu einem
Jahres- oder Quartalsabschluss von höherem Interesse.
Für die Speicherung und Verwaltung von Aktienkursen börsennotierter Unternehmen - folglich nicht aller Kapitalgesellschaften, die im Use Case behandelt werden - bietet sich der Einsatz einer Timeseries Datenbank jedoch durchaus an, da Daten hier nicht nur in sehr hoher Frequenz geschrieben sondern auch im bekannten Muster abgefragt werden. Demzufolge mag sich eine Modellierung auf Basis der `Polyglot persistence` (Verwendung verschiedener Datenspeicherungs Technologien) auf Gesamtsicht eignen, so dass Kennzahlen sowie Stammdaten von Unternehmen in einer relationalen DB gespeichert und abhängig ihrer Unternehmensform mit Aktiekursen aus einer Timeseries DB angereichert werden. In Folge dessen eignet sich eine zeitreihenbasierte Modellierung nicht für die zentralen Unternehmenskennzahlen.
Dieser Ansatz wäre nicht nur für diese Anforderung lohnenswert, sondern kann auch die effiziente Speicherung der Unternehmensverflechtungen vereinfachen, da für diesen Anwendungszweck eine Graphen-Datenbank ins Spiel gebracht werden könnte, die die Relationen zwischen Unternehmen und Unternehmen leicht traversierbar speichert. Es ist daher auch abzuwägen, ob diese nicht auch die Aufgaben des relationalen Modells übernehmen könnte, um die Fülle anforderungsspezifischen DB Technologien zu reduzieren, um auch so die Komplexität des Gesamtsystem gering zu halten. Für die Speicherung und Verwaltung von Aktienkursen börsennotierter Unternehmen - folglich nicht aller
Kapitalgesellschaften, die im Use Case behandelt werden - bietet sich der Einsatz einer Timeseries Datenbank jedoch
durchaus an, da Daten hier nicht nur in sehr hoher Frequenz geschrieben, sondern auch im bekannten Muster abgefragt
werden. Demzufolge mag sich eine Modellierung auf Basis der `Polyglot persistence` (Verwendung verschiedener
Datenspeicher-Technologien) auf Gesamtsicht eignen, sodass Kennzahlen sowie Stammdaten von Unternehmen in einer
relationalen DB gespeichert und abhängig ihrer Unternehmensform mit Aktienkursen aus einer Timeseries DB angereichert
werden.
Um einen geeigneten Zugang zu den Daten von extern (z.B. der Datenvisualisierungs-Schicht in Form einer Web App) zu ermöglichen, ist der Einsatz von `GraphQL` sinnvoll. Dies ermöglicht dem Client die gesamte Datenbasis zu durchforsten und den benötigten Datenbestand abzufragen. Der ``GraphQL`` Server kann dabei durch seine `Resolver` Struktur problemlos mehrere Datenquellen (siehe oben angesprochene `Polyglot Persistence`) kombinieren. Dieser Ansatz wäre nicht nur für diese Anforderung lohnenswert, sondern kann auch die effiziente Speicherung der
Unternehmensverflechtungen vereinfachen, da für diesen Anwendungszweck eine Graphen-Datenbank ins Spiel gebracht werden
könnte, die die Relationen zwischen Unternehmen und Unternehmen leicht traversierbar speichert. Es ist daher auch
abzuwägen, ob diese nicht auch die Aufgaben des relationalen Modells übernehmen könnte, um die Fülle
anforderungsspezifischen DB Technologien zu reduzieren, um auch so die Komplexität des Gesamtsystems gering zu halten.
Um einen geeigneten Zugang zu den Daten von extern (z.B. der Datenvisualisierungs-Schicht in Form einer Web-App) zu
ermöglichen, ist der Einsatz von `GraphQL` sinnvoll. Dies ermöglicht dem Client die gesamte Datenbasis zu durchforsten
und den benötigten Datenbestand abzufragen. Der ``GraphQL`` Server kann dabei durch seine `Resolver` Struktur problemlos
mehrere Datenquellen (siehe oben angesprochene `Polyglot Persistence`) kombinieren.
### Überblick über Datenrelationen ### Überblick über Datenrelationen

View File

@ -1,32 +1,35 @@
# Daten und Kennzahlen von Unternehmen # Daten und Kennzahlen von Unternehmen
## Basisdaten der Firma ## Basisdaten der Firma
* Name * Name
* Sitz * Sitz
* Rechtsform bzw. Art der Kapitalgesellschaft (AG, KGaA, GmbH, UG) * Rechtsform bzw. Art der Kapitalgesellschaft (AG, KGaA, GmbH, UG)
* Branche * Branche
* Gründungsdatum * Gründungsdatum
## Personen ## Personen
* Gesellschafter/innen (Verteilung der Anteile, Höhe der Anteile) * Gesellschafter/innen (Verteilung der Anteile, Höhe der Anteile)
* Geschäftsführung bzw. Vorstand (Vorsitzende/r, Stellvertretung, weitere) * Geschäftsführung bzw. Vorstand (Vorsitzende/r, Stellvertretung, weitere)
* Aufsichtsrat (Vorsitzende/r, Stellvertretung, weitere) * Aufsichtsrat (Vorsitzende/r, Stellvertretung, weitere)
* Wirtschaftsprüfung (Unternehmen, verantwortliche/r Wirtschaftsprüfer/in) * Wirtschaftsprüfung (Unternehmen, verantwortliche/r Wirtschaftsprüfer/in)
Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein. Hier wären neben dem Nachnamen auch der Vorname wünschenswert. Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein. Hier wären neben dem Nachnamen auch der
Vorname wünschenswert.
## Bewertung der Größe der Kapitalgesellschaft ## Bewertung der Größe der Kapitalgesellschaft
*Nach HGB §267: https://www.gesetze-im-internet.de/hgb/__267.html* *Nach HGB §267: https://www.gesetze-im-internet.de/hgb/__267.html*
* Durchschnittliche Mitarbeiterzahl (Anzahl beschäftigte Arbeitnehmer am 31.03., 30.06., 30.09., 31.12.) * Durchschnittliche Mitarbeiterzahl (Anzahl beschäftigte Arbeitnehmer am 31.03., 30.06., 30.09., 31.12.)
* Bilanzsumme bzw. Gesamtkapital * Bilanzsumme bzw. Gesamtkapital
* Umsatz bzw. Umsatzerlöse * Umsatz bzw. Umsatzerlöse
## Kennzahlen bei Aktiengesellschaften ## Kennzahlen bei Aktiengesellschaften
*Angelehnt an https://www.tagesschau.de/wirtschaft/boersenkurse/ und https://boerse.de* *Angelehnt an https://www.tagesschau.de/wirtschaft/boersenkurse/ und https://boerse.de*
* ISIN (International Securities Identification Number) * ISIN (International Securities Identification Number)
* WKN (Wertpapierkennnummer) * WKN (Wertpapierkennnummer)
* Aktienkurs * Aktienkurs
@ -40,33 +43,39 @@ Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein
* Kurs-Umsatz-Verhältnis (KUV) = Marktkapitalisierung / Umsatz * Kurs-Umsatz-Verhältnis (KUV) = Marktkapitalisierung / Umsatz
* Kurs-Gewinn-Wachstumsverhältnis (PEG) = KGV / erwarteter Gewinnwachstum im kommenden Geschäftsjahr * Kurs-Gewinn-Wachstumsverhältnis (PEG) = KGV / erwarteter Gewinnwachstum im kommenden Geschäftsjahr
## Mögliche Kennzahlen zur Unternehmensbewertung ## Mögliche Kennzahlen zur Unternehmensbewertung
*Handbuch Aktien- und Unternehmensbewertung - Peter Seppelfricke* *Handbuch Aktien- und Unternehmensbewertung - Peter Seppelfricke*
### Erfolgskennzahlen ### Erfolgskennzahlen
* Umsatz * Umsatz
* Gewinn bzw. Jahresüberschuss * Gewinn bzw. Jahresüberschuss
* Gewinn vor Steuern (EBT) * Gewinn vor Steuern (EBT)
* Gewinn vor Steuern und Zinsen (EBIT/Betriebsergebnis): Bei Gesamtkostenverfahren Summe 1-8, bei Umsatzkostenverfahren Summe 1-7 * Gewinn vor Steuern und Zinsen (EBIT/Betriebsergebnis): Bei Gesamtkostenverfahren Summe 1-8, bei Umsatzkostenverfahren
Summe 1-7
### Finanzkennzahlen ### Finanzkennzahlen
* Eigenkapitalquote = Eigenkapital / Gesamtkapital * 100 * Eigenkapitalquote = Eigenkapital / Gesamtkapital * 100
* Fremdkapitalquote = Fremdkapital / Gesamtkapital * 100 * Fremdkapitalquote = Fremdkapital / Gesamtkapital * 100
* Verschuldungsgrad = Fremdkapital / Eigenkapital * 100 * Verschuldungsgrad = Fremdkapital / Eigenkapital * 100
### Rentabilitätskennzahlen ### Rentabilitätskennzahlen
* Eigenkapitalrentabilität = Jahresüberschuss / Eigenkapital * 100 * Eigenkapitalrentabilität = Jahresüberschuss / Eigenkapital * 100
* Return on Investment (ROI) = Gewinn / Gesamtkapital * Return on Investment (ROI) = Gewinn / Gesamtkapital
* Umsatzrentabilität = Gewinn / Umsatz * 100 * Umsatzrentabilität = Gewinn / Umsatz * 100
### _Nichtfinanzielle Kennzahlen_ ### _Nichtfinanzielle Kennzahlen_
* _CO<sub>2</sub>-Emissionen_ * _CO<sub>2</sub>-Emissionen_
* _Unfallrate_ * _Unfallrate_
## Gewünschte Kennzahlen ## Gewünschte Kennzahlen
*E-Mail vom 13.04.2023* *E-Mail vom 13.04.2023*
* Umsatz * Umsatz
* EBIT * EBIT
* EBIT Marge * EBIT Marge
@ -78,28 +87,40 @@ Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein
* Umschlaghäufigkeit des Gesamtkapitals (Umsatz / Bilanzsumme) * Umschlaghäufigkeit des Gesamtkapitals (Umsatz / Bilanzsumme)
## Kurzdefinitionen ## Kurzdefinitionen
### Umsatz (Erlös) ### Umsatz (Erlös)
*https://www.lexoffice.de/lexikon/umsatz/* *https://www.lexoffice.de/lexikon/umsatz/*
* Wert aller Produkte und Dienstleistungen, die in einem bestimmten Zeitraum abgesetzt wurden * Wert aller Produkte und Dienstleistungen, die in einem bestimmten Zeitraum abgesetzt wurden
* Muss in der GuV ausgewiesen werden * Muss in der GuV ausgewiesen werden
* Berechnung: Bruttoumsatz = Verkaufspreis (pro Stück) x abgesetzte Menge, Nettoumsatz = Bruttoumsatz - Erlösschmälerungen (z.B. Rabatte, Boni, Skonti) - Umsatzsteuer * Berechnung: Bruttoumsatz = Verkaufspreis (pro Stück) x abgesetzte Menge, Nettoumsatz = Bruttoumsatz -
Erlösschmälerungen (z.B. Rabatte, Boni, Skonti) - Umsatzsteuer
### EBIT (Earnings Before Interest and Taxes/Gewinn vor Zinsen und Steuern/Betriebsergebnis/Operativer Gewinn) ### EBIT (Earnings Before Interest and Taxes/Gewinn vor Zinsen und Steuern/Betriebsergebnis/Operativer Gewinn)
*https://www.bwl-lexikon.de/wiki/ebit/* *https://www.bwl-lexikon.de/wiki/ebit/*
* Kennzahl, die den Unternehmensgewinn angibt, der aus der gewöhnlichen Geschäftstätigkeit entsteht * Kennzahl, die den Unternehmensgewinn angibt, der aus der gewöhnlichen Geschäftstätigkeit entsteht
* Stellt das operative Ergebnis eines Unternehmens dar * Stellt das operative Ergebnis eines Unternehmens dar
* Gibt Auskunft über die Effizienz und die Ertragskraft eines Unternehmens * Gibt Auskunft über die Effizienz und die Ertragskraft eines Unternehmens
* Berechnung: Jahresüberschuss/-fehlbetrag + Steueraufwand - Steuerertrag + außerordentlicher Aufwand - außerordentlicher Ertrag + Finanzaufwand - Finanzertrag = EBIT * Berechnung: Jahresüberschuss/-fehlbetrag + Steueraufwand - Steuerertrag + außerordentlicher Aufwand -
außerordentlicher Ertrag + Finanzaufwand - Finanzertrag = EBIT
### EBIT-Marge ### EBIT-Marge
*https://www.bwl-lexikon.de/wiki/ebit-marge/* *https://www.bwl-lexikon.de/wiki/ebit-marge/*
* Eignet sich zum Vergleich von verschiedenen Unternehmen, zur Messung der operativen Veränderung und gibt Rückschlüsse auf die zukünftige Rentabilität
* Eignet sich zum Vergleich von verschiedenen Unternehmen, zur Messung der operativen Veränderung und gibt Rückschlüsse
auf die zukünftige Rentabilität
* Verhältnis von EBIT und Umsatz * Verhältnis von EBIT und Umsatz
* Eine EBIT-Marge in Höhe von 10% und mehr ist als positiv zu bewerten * Eine EBIT-Marge in Höhe von 10% und mehr ist als positiv zu bewerten
* Berechnung: EBIT-Marge = EBIT / Umsatz * Berechnung: EBIT-Marge = EBIT / Umsatz
### Bilanzsumme (Gesamtvermögen/Gesamtkapital) ### Bilanzsumme (Gesamtvermögen/Gesamtkapital)
*https://www.bwl-lexikon.de/wiki/bilanzsumme/* *https://www.bwl-lexikon.de/wiki/bilanzsumme/*
* Summe des Vermögens bzw. der Aktiva und des Kapitals bzw. der Passiva eines Unternehmens * Summe des Vermögens bzw. der Aktiva und des Kapitals bzw. der Passiva eines Unternehmens
* Kriterium für die Größe von Kapitalgesellschaften * Kriterium für die Größe von Kapitalgesellschaften
* Aktiva = Anlagevermögen + Umlaufvermögen * Aktiva = Anlagevermögen + Umlaufvermögen
@ -107,7 +128,9 @@ Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein
* Liefert Anhaltspunkte dafür, ob und wie schnell ein Unternehmen wächst * Liefert Anhaltspunkte dafür, ob und wie schnell ein Unternehmen wächst
### Eigenkapitalquote ### Eigenkapitalquote
*https://www.bwl-lexikon.de/wiki/eigenkapitalquote/* *https://www.bwl-lexikon.de/wiki/eigenkapitalquote/*
* Informiert über die Kapitalstruktur eines Unternehmens * Informiert über die Kapitalstruktur eines Unternehmens
* Geht aus der Bilanz eines Unternehmens vor * Geht aus der Bilanz eines Unternehmens vor
* Je größer der Abstand zwischen eigenen und fremden Mittel, umso freier kann die Unternehmensleitung agieren * Je größer der Abstand zwischen eigenen und fremden Mittel, umso freier kann die Unternehmensleitung agieren
@ -115,21 +138,28 @@ Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein
* Berechnung: Eigenkapital / Gesamtkapital * Berechnung: Eigenkapital / Gesamtkapital
### Fremdkapitalquote ### Fremdkapitalquote
*https://www.bwl-lexikon.de/wiki/fremdkapitalquote/* *https://www.bwl-lexikon.de/wiki/fremdkapitalquote/*
* Anteil des Fremdkapitals am gesamten Kapital * Anteil des Fremdkapitals am gesamten Kapital
* Anzeichen für die Zahlungsfähigkeit eines Unternehmens * Anzeichen für die Zahlungsfähigkeit eines Unternehmens
* Je höher die Quote, desto abhängiger ist das Unternehmen von Fremdkapitalgebern, die Kreditwürdigkeit sinkt * Je höher die Quote, desto abhängiger ist das Unternehmen von Fremdkapitalgebern, die Kreditwürdigkeit sinkt
* Berechnung: Fremdkapital / Gesamtkapital * Berechnung: Fremdkapital / Gesamtkapital
### Verschuldungsgrad ### Verschuldungsgrad
*https://www.bwl-lexikon.de/wiki/verschuldungsgrad/* *https://www.bwl-lexikon.de/wiki/verschuldungsgrad/*
* Informiert über die wirtschaftliche Stabilität eines Unternehmens * Informiert über die wirtschaftliche Stabilität eines Unternehmens
* Bei einem hohen Verschuldungsgrad wird mehr Fremdkapital in einem Unternehmen eingesetzt, die Gefahr der Insolvenz steigt * Bei einem hohen Verschuldungsgrad wird mehr Fremdkapital in einem Unternehmen eingesetzt, die Gefahr der Insolvenz
steigt
* Bei einem niedrigen Verschuldungsgrad ist die Eigenkapitalfinanzierung höher * Bei einem niedrigen Verschuldungsgrad ist die Eigenkapitalfinanzierung höher
* Berechnung: Fremdkapital / Eigenkapital * Berechnung: Fremdkapital / Eigenkapital
### Eigenkapitalrentabilität (Return on Equity ROE) ### Eigenkapitalrentabilität (Return on Equity ROE)
*https://www.bwl-lexikon.de/wiki/eigenkapitalrentabilitaet/* *https://www.bwl-lexikon.de/wiki/eigenkapitalrentabilitaet/*
* Informiert über die Wirtschaftlichkeit des Unternehmens und die Sinnhaftigkeit des Kapitaleinsatzes * Informiert über die Wirtschaftlichkeit des Unternehmens und die Sinnhaftigkeit des Kapitaleinsatzes
* Misst die Ertragskraft des Unternehmens * Misst die Ertragskraft des Unternehmens
* Gewünschte Höhe der Eigenkapitalrentabilität differiert je nach Branche * Gewünschte Höhe der Eigenkapitalrentabilität differiert je nach Branche
@ -138,14 +168,19 @@ Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein
* Berechnung: Gewinn bzw. Jahresüberschuss / Eigenkapital * Berechnung: Gewinn bzw. Jahresüberschuss / Eigenkapital
### Gesamtkapitalumschlag (Kapitalumschlag/Umschlagshäufigkeit) ### Gesamtkapitalumschlag (Kapitalumschlag/Umschlagshäufigkeit)
*https://www.bwl-lexikon.de/wiki/kapitalumschlag/* *https://www.bwl-lexikon.de/wiki/kapitalumschlag/*
* Verhältnis vom Umsatz zum Eigen- oder Gesamtkapital * Verhältnis vom Umsatz zum Eigen- oder Gesamtkapital
* Legt fest, wie viel Umsatz mit dem vorhandenen Kapital eines Unternehmens erwirtschaftet werden kann * Legt fest, wie viel Umsatz mit dem vorhandenen Kapital eines Unternehmens erwirtschaftet werden kann
* Gibt an, wie oft das eingesetzte Kapital durch die Umsatzerlöse zurück in das Unternehmen gelangt ist (desto häufiger, desto besser) * Gibt an, wie oft das eingesetzte Kapital durch die Umsatzerlöse zurück in das Unternehmen gelangt ist (desto häufiger,
desto besser)
* Berechnung: Umsatz / Bilanzsumme bzw. Gesamtkapital * Berechnung: Umsatz / Bilanzsumme bzw. Gesamtkapital
### Umsatzrentabilität (Umsatzrendite/Umsatzmarge/Nettomarge) ### Umsatzrentabilität (Umsatzrendite/Umsatzmarge/Nettomarge)
*https://www.bwl-lexikon.de/wiki/umsatzrentabilitaet/* *https://www.bwl-lexikon.de/wiki/umsatzrentabilitaet/*
* Verhältnis von Gewinn und Umsatz * Verhältnis von Gewinn und Umsatz
* Betrag, den ein Unternehme pro Euro Umsatz erwirtschaftet * Betrag, den ein Unternehme pro Euro Umsatz erwirtschaftet
* Eine steigende Umsatzrendite deutet darauf hin, dass die Produktivität des Unternehmens steigt * Eine steigende Umsatzrendite deutet darauf hin, dass die Produktivität des Unternehmens steigt
@ -154,14 +189,18 @@ Im Fall von realen Personen könnte die eindeutige Identifikation schwierig sein
* Berechnung: Gewinn / Umsatz * Berechnung: Gewinn / Umsatz
### Gesamtkapitalrentabilität (Return on Investment ROI, Kapitalrendite) ### Gesamtkapitalrentabilität (Return on Investment ROI, Kapitalrendite)
*https://www.bwl-lexikon.de/wiki/gesamtkapitalrentabilitaet/* *https://www.bwl-lexikon.de/wiki/gesamtkapitalrentabilitaet/*
* Relation zwischen dem investierten Kapital und dem Gewinn * Relation zwischen dem investierten Kapital und dem Gewinn
* Beurteilungsmaßstad für die Rentabilität * Beurteilungsmaßstad für die Rentabilität
* Positiver ROI ist für ein Unternehmen vorteilhaft * Positiver ROI ist für ein Unternehmen vorteilhaft
* Berechnung: Umsatzrentabilität x Kapitalumschlag * Berechnung: Umsatzrentabilität x Kapitalumschlag
# Fazit # Fazit
Insgesamt sollen folgende Größen bzw. Kennzahlen betrachtet werden: Insgesamt sollen folgende Größen bzw. Kennzahlen betrachtet werden:
* Unternehmensgröße * Unternehmensgröße
* Umsatz * Umsatz
* EBIT * EBIT
@ -175,8 +214,8 @@ Insgesamt sollen folgende Größen bzw. Kennzahlen betrachtet werden:
* Gesamtkapitalrentabilität * Gesamtkapitalrentabilität
* Gesamtkapitalumschlag * Gesamtkapitalumschlag
Dazu werden folgende Daten benötigt: Dazu werden folgende Daten benötigt:
* Umsatz * Umsatz
* Bilanzsumme * Bilanzsumme
* EBIT * EBIT
@ -186,5 +225,8 @@ Dazu werden folgende Daten benötigt:
* Durchschnittliche Mitarbeiterzahl * Durchschnittliche Mitarbeiterzahl
Vergleichsmöglichkeiten: Vergleichsmöglichkeiten:
* Zeitvergleich: Vergleich der ermittelten Kennzahlen in verschiedenen Perioden, mit Hilfe von Zeitvergleichen über längere Zeiträume lassen sich Trends oder Zyklen erkennen
* Betriebsvergleich: Gegenüberstellung der Kennzahlen von Unternehmen der gleichen Branche oder Vergleich der Werte eines Unternehmens mit dem Branchendurchschnitt * Zeitvergleich: Vergleich der ermittelten Kennzahlen in verschiedenen Perioden, mit Hilfe von Zeitvergleichen über
längere Zeiträume lassen sich Trends oder Zyklen erkennen
* Betriebsvergleich: Gegenüberstellung der Kennzahlen von Unternehmen der gleichen Branche oder Vergleich der Werte
eines Unternehmens mit dem Branchendurchschnitt

View File

@ -3,24 +3,27 @@
## **Twitter API v2** ## **Twitter API v2**
### **Access Levels** ### **Access Levels**
**Free:** **Free:**
- 1,500 Tweets per months - 1,500 Tweets per months
- 1 AppID - 1 AppID
- Login with Twitter - Login with Twitter
**Basic:** **Basic:**
- 100 per month - 100 per month
**Enterprise:** **Enterprise:**
- Monthly subscribtion tiers - Monthly subscribtion tiers
Postman Besipiele: https://developer.twitter.com/en/docs/tutorials/postman-getting-started Postman Besipiele: https://developer.twitter.com/en/docs/tutorials/postman-getting-started
Getting started: https://github.com/twitterdev Getting started: https://github.com/twitterdev
## **NewsAPI** ## **NewsAPI**
- Developer ist kostenlos - Developer ist kostenlos
- 24 Stunden verspätet sind die Artikel erreichabr - 24 Stunden verspätet sind die Artikel erreichabr
- Bis zu einem Monat alte Artikel abrufbar - Bis zu einem Monat alte Artikel abrufbar
@ -28,47 +31,49 @@ Getting started: https://github.com/twitterdev
- CORS geht nur für local host - CORS geht nur für local host
- Hat extra einen Punkt für deutsche Nachrichten: https://newsapi.org/s/germany-news-api - Hat extra einen Punkt für deutsche Nachrichten: https://newsapi.org/s/germany-news-api
Benötigt einen Account um einen API Key zu generieren. Benötigt einen Account um einen API Key zu generieren.
Doku: https://newsapi.org/docs/get-started Doku: https://newsapi.org/docs/get-started
**Hinweis**: *Bietet die Möglichkeit nach Artikel mit einem bestimmten Wort zu suchen* **Hinweis**: *Bietet die Möglichkeit nach Artikel mit einem bestimmten Wort zu suchen*
## **Bloomberg API** ## **Bloomberg API**
- Link: https://www.bloomberg.com/professional/support/api-library/ - Link: https://www.bloomberg.com/professional/support/api-library/
- generell kostenlos, bei starker Nutzung muss ein Preis angefragt werden - generell kostenlos, bei starker Nutzung muss ein Preis angefragt werden
- sehr gut für Marktanalysen geeignet - sehr gut für Marktanalysen geeignet
## **New York Times API** ## **New York Times API**
- die ersten 1000 Anfragen pro Tag sind kostenlos - die ersten 1000 Anfragen pro Tag sind kostenlos
- 11 verschiedene APIs - 11 verschiedene APIs
## **PressePortal** ## **PressePortal**
Bietet eine API zur DPA Gruppe an. Eher schlecht beschrieben und der API-Key muss via Email beantragt werden, bietet aber potentiell Zugriff auf deutsche Nachrichten.
Bietet eine API zur DPA Gruppe an. Eher schlecht beschrieben und der API-Key muss via E-Mail beantragt werden, bietet
aber potenziell Zugriff auf deutsche Nachrichten.
Demo: https://api.presseportal.de/v2/demo/index.htx?mod=section_all&newsroom=&office=&city=&keyword=&topic=&police_officetype=&police_federalstate=&media=dokument&limit=&language=de&companyinfo=6344 Demo: https://api.presseportal.de/v2/demo/index.htx?mod=section_all&newsroom=&office=&city=&keyword=&topic=&police_officetype=&police_federalstate=&media=dokument&limit=&language=de&companyinfo=6344
API-Key Anfragen: https://api.presseportal.de/ API-Key Anfragen: https://api.presseportal.de/
## **Tagesschau API 2.0** ## **Tagesschau API 2.0**
https://tagesschau.api.bund.dev/ https://tagesschau.api.bund.dev/
## **Yahoo finance API** ## **Yahoo finance API**
https://financeapi.net/ https://financeapi.net/
## **Google News API** ## **Google News API**
- deprecated - deprecated
- kostenlos - kostenlos
- gut dokumentiert - gut dokumentiert
## **Sonstiges** ## **Sonstiges**
Bing News API, ESPN, Guardian API, BBC News API Yahoo News API und Financial Times fallen raus, da diese immer mit kosten verbunden sind oder sich nur mit Sport oder Kommentare befassen.
- "Die Zeit" hatte mal eine API die abgeschaltet wurde. Bing News API, ESPN, Guardian API, BBC News API Yahoo News API und Financial Times fallen raus, da diese immer mit
kosten verbunden sind oder sich nur mit Sport oder Kommentare befassen.
- "Die Zeit" hatte mal eine API, welche aber abgeschaltet wurde.
-> RSS Feeds Irgendwie abgreifen - RSS-Feeds irgendwie abgreifen

View File

@ -1,6 +1,5 @@
# Research Central # Research Central
## Sentiment Analysis ## Sentiment Analysis
### FinBert ### FinBert
@ -9,4 +8,5 @@ FinBert is a specialised sentiment Analysis for Financial Data.
Sadly it isn't a very good model, and it does not work at all for texts in german. Sadly it isn't a very good model, and it does not work at all for texts in german.
Experiments can be found here: Experiments can be found here:
* [FinBert Jupyter](../../Jupyter/AI-models/"Sentiment Analysis"/FinBert.ipynb) * [FinBert Jupyter](../../Jupyter/AI-models/"Sentiment Analysis"/FinBert.ipynb)

View File

@ -7,29 +7,40 @@ date: "2023-05-06"
# Abstract: Automatisierte Daten Extraktion aus Internetquellen als Grundlage für die Analyse von Kapitalgesellschaften # Abstract: Automatisierte Daten Extraktion aus Internetquellen als Grundlage für die Analyse von Kapitalgesellschaften
## Gliederung ## Gliederung
1. Einleitung (Zielsetzung/Problemstellung, Vorgehen) 1. Einleitung (Zielsetzung/Problemstellung, Vorgehen)
2. Web Scraping/Crawling 2. Web Scraping/Crawling
1. Definition und Theorie 2.1. Definition und Theorie
2. Technologien 2.2. Technologien
3. Umsetzung 2.3. Umsetzung
3. RSS Feeds 3. RSS-Feeds
1. Definition und Theorie 3.1. Definition und Theorie
2. Technologien 3.2. Technologien
3. Umsetzung 3.3. Umsetzung
4. APIs 4. APIs
1. Definition und Theorie 4.1. Definition und Theorie
2. Technologien 4.2. Technologien
3. Umsetzung 4.3. Umsetzung
5. Rechtliche Rahmenbedingungen 5. Rechtliche Rahmenbedingungen
6. Vergleich der Lösungsansätze 6. Vergleich der Lösungsansätze
7. Zusammenfassung 7. Zusammenfassung
## Inhalt ## Inhalt
In Zeiten von Big Data und AI stellen Daten und ihre Verfügbarkeit zunehmend eines der wichtigsten Wirtschaftsgüter dar. Als solches können sie auch eingesetzt werden, um Kapitalgesellschaften (eine Subklasse von Unternehmen) anhand verschiedener Kennzahlen wie der Mitarbeiterzahl oder dem Jahresgewinn zu analysieren. Obwohl solche Daten zu Genüge in Zeitungsartikeln, Newslettern oder dedizierten Aktienanalysen zu finden sind, so gestaltet sich eine automatisierte Extraktion dieser Daten aufgrund verschiedener Formate sowie weiterer Restriktionen schwierig. In Zeiten von Big Data und AI stellen Daten und ihre Verfügbarkeit zunehmend eines der wichtigsten Wirtschaftsgüter dar.
Als solches können sie auch eingesetzt werden, um Kapitalgesellschaften (eine Subklasse von Unternehmen) anhand
verschiedener Kennzahlen wie der Mitarbeiterzahl oder dem Jahresgewinn zu analysieren. Obwohl solche Daten zu Genüge in
Zeitungsartikeln, Newslettern oder dedizierten Aktienanalysen zu finden sind, so gestaltet sich eine automatisierte
Extraktion dieser Daten aufgrund verschiedener Formate sowie weiterer Restriktionen schwierig.
Daher sollen im Rahmen dieser Seminararbeit verschiedene Wege betrachtet werden, die eben diese Daten erheben und zur Verfügung stellen können. Zu den nennenswerten Quellen gehören: Der Bundesanzeiger, RSS Feeds, Nachrichten APIs. Ziel ist es, aus diesen Quellen wertvolle Informationen bezogen auf den wirtschaftlichen Erfolg einer Kapitalgesellschaft sowie aktueller Nachrichten zu extrahieren und in ein einheitliches Format zu überführen. Daher sollen im Rahmen dieser Seminararbeit verschiedene Wege betrachtet werden, die eben diese Daten erheben und zur
Verfügung stellen können. Zu den nennenswerten Quellen gehören: Der Bundesanzeiger, RSS-Feeds, Nachrichten APIs. Ziel
ist es, aus diesen Quellen wertvolle Informationen bezogen auf den wirtschaftlichen Erfolg einer Kapitalgesellschaft
sowie aktueller Nachrichten zu extrahieren und in ein einheitliches Format zu überführen.
Neben des technischen Einsatzes von Web Scraping/Crawling, um Informationen aus Webseiten zu gewinnen, sowie des Abfragens verfügbarer APIs soll auch der rechltiche Aspekt dieser Vorgehens Berücksichtigung finden, um die Rechtmäßigkeit zu bewerten. Neben des technischen Einsatzes von Web Scraping/Crawling, um Informationen aus Webseiten zu gewinnen, sowie des
Abfragens verfügbarer APIs soll auch der rechtliche Aspekt dieser Vorgehens Berücksichtigung finden, um die
Rechtmäßigkeit zu bewerten.
Abschließend wird der Einsatz der verschiedenen Technologien an den Faktoren: Flexibilität, Simplizität, Verfügbarkeit und Rechtmäßigkeit, ein Fazit gezogen sowie ein Ausblick des weiteren Einsatzes gegeben. Abschließend wird der Einsatz der verschiedenen Technologien an den Faktoren: Flexibilität, Simplizität, Verfügbarkeit
und Rechtmäßigkeit, ein Fazit gezogen sowie ein Ausblick des weiteren Einsatzes gegeben.

View File

@ -5,7 +5,7 @@
- [x] Erstelle eine Kurzanleitung für die Handhabung von Docker - [x] Erstelle eine Kurzanleitung für die Handhabung von Docker
- [x] erstelle Jupyter Notebook zum Verbinden mit Datenbank und Anlegen von Tabellen - [x] erstelle Jupyter Notebook zum Verbinden mit Datenbank und Anlegen von Tabellen
- [x] Recherchiere nach den 10 größten deutschen Unternehmen und ermittel Finanzdaten (Umsatz, Ebit, Ebitda) - [x] Recherchiere nach den 10 größten deutschen Unternehmen und ermittel Finanzdaten (Umsatz, Ebit, Ebitda)
- [x] Erstelle ein Jupyter Notebook um diese Daten in die Datenbank zu übertragen - [x] Erstelle ein Jupyter Notebook, um diese Daten in die Datenbank zu übertragen
- [x] Erstelle ein Jupyter Notebook, um die Daten abzufragen - [x] Erstelle ein Jupyter Notebook, um die Daten abzufragen
- [x] Erstelle ein Schema für Stimmungsdaten - [x] Erstelle ein Schema für Stimmungsdaten
- [x] Erstelle ein Schema für Verflechtungen - [x] Erstelle ein Schema für Verflechtungen
@ -14,5 +14,5 @@
- [ ] Erstelle eine Prototypen GUI in Mercury zur einfachen Abfrage von Daten - [ ] Erstelle eine Prototypen GUI in Mercury zur einfachen Abfrage von Daten
- [ ] Verwende SQLalchemy, um eine Verbindung zur Datenbank aufzubauen, Tabellen anzulegen und Daten zu schreiben --> - [ ] Verwende SQLalchemy, um eine Verbindung zur Datenbank aufzubauen, Tabellen anzulegen und Daten zu schreiben -->
- [x] Ersetze den enumeration type in den Finanzdaten gegen einzelne (eindeutig bezeichnete) Spalten - [x] Ersetze den enumeration type in den Finanzdaten gegen einzelne (eindeutig bezeichnete) Spalten
- [x] Lade das DB Schema hoch, um es den anderen Teammitgliedern bereitzustellen - [x] Lade das DB-Schema hoch, um es den anderen Teammitgliedern bereitzustellen
- [ ] - [ ]

View File

@ -4,22 +4,25 @@ https://thibaut-deveraux.medium.com/how-to-install-neo4j-with-docker-compose-36e
https://towardsdatascience.com/how-to-run-postgresql-and-pgadmin-using-docker-3a6a8ae918b5 https://towardsdatascience.com/how-to-run-postgresql-and-pgadmin-using-docker-3a6a8ae918b5
# Installation Docker Desktop # Installation Docker Desktop
## Starten eines Containers: ## Starten eines Containers:
> docker run --name basic-postgres --rm -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=4y7sV96vA9wv46VR -e PGDATA=/var/lib/postgresql/data/pgdata -v /tmp:/var/lib/postgresql/data -p 5432:5432 -it postgres:14.1-alpine > docker run --name basic-postgres --rm -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=4y7sV96vA9wv46VR -e
> PGDATA=/var/lib/postgresql/data/pgdata -v /tmp:/var/lib/postgresql/data -p 5432:5432 -it postgres:14.1-alpine
Dieser Befehl startet einen Container mit dem Postgres14.1-alpine Image, welches von Dockerhub geladen wird. Der Container läuft unter dem Namen basic-postgres Dieser Befehl startet einen Container mit dem Postgres14.1-alpine Image, welches von Dockerhub geladen wird. Der
Container läuft unter dem Namen basic-postgres
| Syntax | Attribut | Beschreibung | | Syntax | Attribut | Beschreibung |
| ----------- | ----------- | ----------- | |-------------------|----------|-----------------------------------------------------------------------------------|
| basic-postgres | --name | Angabe des Containernamens| | basic-postgres | --name | Angabe des Containernamens |
| | --rm | Bei Beendigung des Containers wird das erstellte Dateisystem entfernt| | | --rm | Bei Beendigung des Containers wird das erstellte Dateisystem entfernt |
| |-e| Verwende Umgebungsvariablen | | | -e | Verwende Umgebungsvariablen |
| POSTGRES_USER | | Umgebungsvariable für den anzulegenden Benutzer: postgres| | POSTGRES_USER | | Umgebungsvariable für den anzulegenden Benutzer: postgres |
|POSTGRES_PASSWORD| | Umgebungsvariable für das anzulegende Passwort: 4y7sV96vA9wv46VR | | POSTGRES_PASSWORD | | Umgebungsvariable für das anzulegende Passwort: 4y7sV96vA9wv46VR |
| PGDATA | | Umgebungsvariable für den Ort der Datenbank| | PGDATA | | Umgebungsvariable für den Ort der Datenbank |
| | -v | Einzubindendes Volumen: /tmp:/var/lib/postgresql/data | | | -v | Einzubindendes Volumen: /tmp:/var/lib/postgresql/data |
| |-p | Angabe des Containerports und des öffentlich zugänglichen Ports | | | -p | Angabe des Containerports und des öffentlich zugänglichen Ports |
| | -it | Interactive: der Container bleibt aktiv, damit mit diesem interagiert werden kann | | | -it | Interactive: der Container bleibt aktiv, damit mit diesem interagiert werden kann |
Mit einem zweiten Terminalfenster kann man auf die Bash des Containers öffnen und auf die Datenbank zugreifen. Mit einem zweiten Terminalfenster kann man auf die Bash des Containers öffnen und auf die Datenbank zugreifen.
@ -29,42 +32,53 @@ Mit einem zweiten Terminalfenster kann man auf die Bash des Containers öffnen u
Die folgenden Befehle starten die Postgres CLI, Ausgabe aller Datenbanken und beendet die CLI. Die folgenden Befehle starten die Postgres CLI, Ausgabe aller Datenbanken und beendet die CLI.
> Psql username postgres \ > Psql username postgres \
> \l \ > \l \
Exit > Exit
Der Container kann durch Betätigung von STRG + C beendet werden. Der Container kann durch Betätigung von STRG + C beendet werden.
## Docker Compose ## Docker Compose
Das oben erklärte Vorgehen zum Starten eines Containers, festlegen der Umgebungsvariablen und zusätzliche verlinken zu einer Anwendung wird nun in einer yml-Datei beschrieben, um die Verwaltung und das Erstellen zu vereinfachen.
Das oben erklärte Vorgehen zum Starten eines Containers, festlegen der Umgebungsvariablen und zusätzliche verlinken zu
einer Anwendung wird nun in einer yml-Datei beschrieben, um die Verwaltung und das Erstellen zu vereinfachen.
| | | Beschreibung | | | | Beschreibung |
| ----------- | ----------- | ----------- | |----------|-------------|---------------------------------------------------------------------------------------------------------------------|
|Version | | Version von docker-compose | | Version | | Version von docker-compose |
|Services| |Definition der Services, wobei jeder ein eigenen docker-run Befehl ausführt.| | Services | | Definition der Services, wobei jeder ein eigenen docker-run Befehl ausführt. |
| | image | Angabe des zu verwendenden Images | | | image | Angabe des zu verwendenden Images |
| | restart | Option um Container erneut zu starten, falls dieser gestoppt wird | | | restart | Option um Container erneut zu starten, falls dieser gestoppt wird |
| | Environment | Umgebungsvariablen: Username und Passwort | | | Environment | Umgebungsvariablen: Username und Passwort |
| | Ports | Mapping des Containerports zum Port der Hostmaschine | | | Ports | Mapping des Containerports zum Port der Hostmaschine |
| | Volumes | Angabe eines Volumes zum Persistieren der Containerdaten, damit nach einem Neustart die Daten wieder verfügbar sind | | | Volumes | Angabe eines Volumes zum Persistieren der Containerdaten, damit nach einem Neustart die Daten wieder verfügbar sind |
Nun kann der Container mittels Docker-Compose gestartet werden. Nun kann der Container mittels Docker-Compose gestartet werden.
> docker-compose -f /.../docker-compose-postgres.yml up
```console
docker-compose -f /.../docker-compose-postgres.yml up
```
## pgAdmin ## pgAdmin
pgAdmin ist ein grafisches Administrationswerkezug für postgreSQL und macht die oben gezeigte Administration komfortabler. \
Erreichbar ist das Interface über: http://localhost:5050 \ pgAdmin ist ein grafisches Administrationswerkzeug für postgreSQL und macht die oben gezeigte Administration
komfortabler.
Erreichbar ist das Interface über: http://localhost:5050
Als Login werden die Daten aus der docker-compose verwendet: Als Login werden die Daten aus der docker-compose verwendet:
>User: admin@fh-swf.de
>Passwort: admin ```
> User: admin@fh-swf.de
> Passwort: admin
```
### Anlegen eines Servers ### Anlegen eines Servers
Zuerst muss der Server angelegt werden, dafür einen Rechtsklick auf Server und den Button „Register“ auswählen. \ Zuerst muss der Server angelegt werden, dafür einen Rechtsklick auf Server und den Button „Register“ auswählen. \
Im geöffneten Dialog muss die Konfiguration festgelegt werden. Im geöffneten Dialog muss die Konfiguration festgelegt werden.
| Reiter | Parameter | Wert | | Reiter | Parameter | Wert |
| ----------- | ----------- | ----------- | |------------|-------------------|-----------------------------------|
| General| Name | postgres_docker | | General | Name | postgres_docker |
| Connection | Host name/address | local_pgdb (siehe docker-compose) | | Connection | Host name/address | local_pgdb (siehe docker-compose) |
| Connection | Username | postgres (siehe docker-compose) | | Connection | Username | postgres (siehe docker-compose) |
| Connection | Password | postgres (siehe docker-compose) | | Connection | Password | postgres (siehe docker-compose) |

View File

@ -1,6 +1,7 @@
# Seminarthema: Datenvisualisierung # Seminarthema: Datenvisualisierung
## Geplanter Inhalt: ## Geplanter Inhalt:
- Einführung - Einführung
- Best Practice für Datenvisualisierung - Best Practice für Datenvisualisierung
- Vorstellung verschiedener Diagrammarten - Vorstellung verschiedener Diagrammarten
@ -17,13 +18,23 @@
## Abstract: ## Abstract:
In dieser Seminararbeit geht es um die Visualisierung von Daten in Python. Im Fokus steht die Anwendung auf die drei Themenbereiche, die im Projekt "Transparenzregister" behandelt werden: Time Series Daten, Soziale Netzwerke und Stimmungen. Nach einer Einführung in das Thema werden Best Practices für die Datenvisualisierung vorgestellt und verschiedene Diagrammarten präsentiert. Anschließend wird diskutiert, welche Diagramme für die genannten Anwendungsbereiche am besten geeignet sind. In dieser Seminararbeit geht es um die Visualisierung von Daten in Python. Im Fokus steht die Anwendung auf die drei
Themenbereiche, die im Projekt "Transparenzregister" behandelt werden: Time Series Daten, Soziale Netzwerke und
Stimmungen. Nach einer Einführung in das Thema werden Best Practices für die Datenvisualisierung vorgestellt und
verschiedene Diagrammarten präsentiert. Anschließend wird diskutiert, welche Diagramme für die genannten
Anwendungsbereiche am besten geeignet sind.
Im zweiten Abschnitt werden verschiedene Python Bibliotheken vorgestellt und anhand von Minimalbeispielen betrachtet. Dabei wird analysiert, welche Bibliotheken die gewünschten Diagramme für unsere Anwendungsbereiche am besten darstellen und welche Daten für die Erstellung der verschiedenen Diagramme benötigt werden. Es werden zudem Ideen und Anforderungen an die anderen Themenbereiche aufgezeigt. Im zweiten Abschnitt werden verschiedene Python Bibliotheken vorgestellt und anhand von Minimalbeispielen betrachtet.
Dabei wird analysiert, welche Bibliotheken die gewünschten Diagramme für unsere Anwendungsbereiche am besten darstellen
und welche Daten für die Erstellung der verschiedenen Diagramme benötigt werden. Es werden zudem Ideen und Anforderungen
an die anderen Themenbereiche aufgezeigt.
Im letzten Abschnitt der Arbeit wird ein Fazit gezogen und eine Handlungsempfehlung gegeben. Insgesamt soll die Arbeit einen Einblick in die Welt der Datenvisualisierung in Python geben und unserem Projekt helfen, die richtigen Entscheidungen bei der Wahl der Diagrammarten und Bibliotheken zu treffen. Im letzten Abschnitt der Arbeit wird ein Fazit gezogen und eine Handlungsempfehlung gegeben. Insgesamt soll die Arbeit
einen Einblick in die Welt der Datenvisualisierung in Python geben und unserem Projekt helfen, die richtigen
Entscheidungen bei der Wahl der Diagrammarten und Bibliotheken zu treffen.
## Erste Sammlung von Referenzen: ## Erste Sammlung von Referenzen:
Bibliotheken/Tools: Bibliotheken/Tools:
- D3Blocks: [Documentation](https://d3blocks.github.io/d3blocks/pages/html/index.html), [Medium Blog](https://towardsdatascience.com/d3blocks-the-python-library-to-create-interactive-and-standalone-d3js-charts-3dda98ce97d4) - D3Blocks: [Documentation](https://d3blocks.github.io/d3blocks/pages/html/index.html), [Medium Blog](https://towardsdatascience.com/d3blocks-the-python-library-to-create-interactive-and-standalone-d3js-charts-3dda98ce97d4)
- pyvis: [Documentation](https://pyvis.readthedocs.io/en/latest/tutorial.html) - pyvis: [Documentation](https://pyvis.readthedocs.io/en/latest/tutorial.html)
@ -31,12 +42,15 @@ Bibliotheken/Tools:
- plotly: [Documentation](https://plotly.com/python/#animations) - plotly: [Documentation](https://plotly.com/python/#animations)
Netzwerke: Netzwerke:
- Zentralitätsmaße: [Medium Blog](https://towardsdatascience.com/social-network-analysis-from-theory-to-applications-with-python-d12e9a34c2c7) - Zentralitätsmaße: [Medium Blog](https://towardsdatascience.com/social-network-analysis-from-theory-to-applications-with-python-d12e9a34c2c7)
- Visualisierungsideen: [Medium Blog](https://towardsdatascience.com/visualizing-networks-in-python-d70f4cbeb259) - Visualisierungsideen: [Medium Blog](https://towardsdatascience.com/visualizing-networks-in-python-d70f4cbeb259)
Kennzahlen: Kennzahlen:
- Visualisierungsideem: [Towards AI](https://towardsai.net/p/l/time-series-data-visualization-in-python) - Visualisierungsideem: [Towards AI](https://towardsai.net/p/l/time-series-data-visualization-in-python)
Best Practice: Best Practice:
- [Science Direct](https://www.sciencedirect.com/science/article/pii/S2666389920301896) - [Science Direct](https://www.sciencedirect.com/science/article/pii/S2666389920301896)
- [Toptal](https://www.toptal.com/designers/data-visualization/data-visualization-best-practices) - [Toptal](https://www.toptal.com/designers/data-visualization/data-visualization-best-practices)

View File

@ -4,15 +4,13 @@
**10.05.2023** **10.05.2023**
## Gliederung ## Gliederung
1. Einleitung und Begriffsbestimmung 1. Einleitung und Begriffsbestimmung
2. Text Mining Prozess 2. Text Mining Prozess
3. Verwendung von NLP-Methoden für das Text Mining 3. Verwendung von NLP-Methoden für das Text-Mining
3.1 Morphologische Textanalyse 3.1 Morphologische Textanalyse
@ -26,20 +24,32 @@
4.2 Generierung von Ontologien mittels Text Mining ("ontology generation"/"ontology learning" ) 4.2 Generierung von Ontologien mittels Text Mining ("ontology generation"/"ontology learning" )
5. Sentiment-Analyse als Teilgebiet des Text Minings 5. Sentiment-Analyse als Teilgebiet des Text-Minings
6. Zusammenfassung und Ausblick 6. Zusammenfassung und Ausblick
Die Seminararbeit zu "Text Mining" soll in die oben genannten sechs Abschnitte gegliedert werden. Die Seminararbeit zu "Text Mining" soll in die oben genannten sechs Abschnitte gegliedert werden.
Nach einer Einleitung, in der der Begriff "Text Mining" näher definiert wird und gegenüber "Data Mining" und "Computational Linguistics" abgegrenzt wird, folgt der zweite Abschnitt zum Text Mining Prozess, der nach Hippner u. Rentzmann (2006) in die folgenden sechs Schritte eingeteilt wird: (a) Aufgabendefinition; (b) Dokumentenselektion; (c) Dokumentenaufbereitung; (d) Untersuchung mit Text-Mining-Methoden; (e) Interpretation und Evaluation; (f) Anwendung der Ergebnisse. Nach einer Einleitung, in der der Begriff "Text Mining" näher definiert wird und gegenüber "Data-Mining" und
"Computational Linguistics" abgegrenzt wird, folgt der zweite Abschnitt zum Text Mining Prozess, der nach Hippner u.
Rentzmann (2006) in die folgenden sechs Schritte eingeteilt wird: (a) Aufgabendefinition; (b) Dokumentenselektion; (c)
Dokumentenaufbereitung; (d) Untersuchung mit Text-Mining-Methoden; (e) Interpretation und Evaluation; (f) Anwendung der
Ergebnisse.
Im darauffolgenden dritten Abschnitt zur Verwendung von NLP-Methoden für das Text Mining werden die drei Phasen des Natural Language Processings (NLP), d.h. die morphologische, syntaktische und semantische Textanalyse, näher dargestellt, wobei der Schwerpunkt auf die semantische Analysetechniken wie z.B. "Word Sense Disambiguation" (WSD) und "Named Entity Recognition" (NED) liegen soll. Im darauffolgenden dritten Abschnitt zur Verwendung von NLP-Methoden für das Text-Mining werden die drei Phasen des
Natural Language Processing (NLP), d.h. die morphologische, syntaktische und semantische Textanalyse, näher
dargestellt, wobei der Schwerpunkt auf den semantischen Analysetechniken wie z.B. "Word Sense Disambiguation" (WSD) und
"Named Entity Recognition" (NED) liegen soll.
Der vierte Abschnitt soll sich dem Thema "Ontologien und Text Mining" widmen. Einerseits können Ontologien, die domänenspezifisches Wissen abbilden, als Grundlage für NLP-Methoden dienen, um etwa die semantische Textanalyse zu verbessern. Andererseits können mittels Text Mining automatisch bzw. semi-automatisch Ontologien als Repräsentation der Text-Mining-Ergebnisse erstellt werden ("ontology generation"/"ontology learning"). Der vierte Abschnitt soll sich dem Thema "Ontologien und Text Mining" widmen. Einerseits können Ontologien, die
domänenspezifisches Wissen abbilden, als Grundlage für NLP-Methoden dienen, um etwa die semantische Textanalyse zu
verbessern. Andererseits können mittels Text Mining automatisch bzw. semi-automatisch Ontologien als Repräsentation der
Text-Mining-Ergebnisse erstellt werden ("ontology generation"/"ontology learning").
Im vorletzten, fünften Analyse soll die Sentiment-Analyse als Teilgebiet des Text Mining durchleuchtet werden. Dieser Abschnitt soll den Schwerpunkt der gesamten Seminararbeit darstellen. Die Methodik, Funktionsweise, Varianten und Use Cases der Sentiment Analyse sollen anhand ausgewählter Beispiele erläutert werden. Zudem sollen auch bekannte Sentiment-Analyse-Tools wie z.B. FinBERT, VADER, SentiWS etc. näher beschrieben werden. Im vorletzten, fünften Analyse soll die Sentiment-Analyse als Teilgebiet des Texts Mining durchleuchtet werden. Dieser
Abschnitt soll den Schwerpunkt der gesamten Seminararbeit darstellen. Die Methodik, Funktionsweise, Varianten und Use
Cases der Sentiment Analyse sollen anhand ausgewählter Beispiele erläutert werden. Zudem sollen auch bekannte
Sentiment-Analyse-Tools wie z.B. FinBERT, VADER, SentiWS etc. näher beschrieben werden.
Am Ende der Seminararbeit soll der sechste Abschnitt eine Zusammenfassung liefern und einen Ausblick darüber geben, in welche Richtung die zukünftige Entwicklung auf dem Gebiet des Text Minings gehen wird. Am Ende der Seminararbeit soll der sechste Abschnitt eine Zusammenfassung liefern und einen Ausblick darüber geben, in
welche Richtung die zukünftige Entwicklung auf dem Gebiet des Text-Minings gehen wird.

View File

@ -3,29 +3,26 @@
## Entwurf des Inhaltsverzeichnis + Stichpunkte ## Entwurf des Inhaltsverzeichnis + Stichpunkte
1 Einleitung 1 Einleitung
1.1 Problemstellung 1.1 Problemstellung
1.2 Zielsetzung und Aufbau der Arbeit 1.2 Zielsetzung und Aufbau der Arbeit
2 Graphentheorie 2 Graphentheorie
2.1 Begriffliche Definition 2.1 Begriffliche Definition
2.2 Sociometry 2.2 Sociometry
- sociometry: quantitatives Methode um soziale Beziehungen zu messen. - sociometry: quantitatives Methode um soziale Beziehungen zu messen.
2.3 Sociogram/ Social Graph 2.3 Sociogram/ Social Graph
- Ist ein graph der ein Soziales netzwerk darstellt
- Ist ein graph der ein soziales Netzwerk darstellt
- Basiert auf der Graphentheorie - Basiert auf der Graphentheorie
- Wurde offiziell Sociogram genannt - Wurde offiziell Sociogram genannt
- von facebook in der F8 2007 vorgestellt - von facebook in der F8 2007 vorgestellt
2.4 Social Network Analysis (SNA) 2.4 Social Network Analysis (SNA)
- Social Network Analysis (SNA): Untersuchen von Sozialen Strukturen anhand von Netzwerken und Graphtheorie. - Social Network Analysis (SNA): Untersuchen von sozialen Strukturen anhand von Netzwerken und Graphtheorie.
3 Ein Social Graph für das Transparentsregister 3 Ein Social Graph für das Transparenzregister
3.5 Handlungsempfehlung 3.5 Handlungsempfehlung
@ -39,10 +36,22 @@
## Abstract ## Abstract
In der Seminararbeit zum Thema: "Verpflechtungsanalyse der Unternehmen und Personen im Transparenzregister" soll einerseits die Theorie für die Analyse von Verflechtungen vermittelt sowie anhand des Projektess aufgezeigt werden wie diese angewendet werden kann. In der Seminararbeit zum Thema: "Verpflechtungsanalyse der Unternehmen und Personen im Transparenzregister" soll
einerseits die Theorie für die Analyse von Verflechtungen vermittelt sowie anhand des Projektes aufgezeigt werden wie
diese angewendet werden kann.
Als Fundament dient die Graphentheorie, welche Grundlegen für die Analyse von Netzstrukturen ist. Zunächst werden die wichtigsten Begriffe definiert und es wird eine Einführung ins Thema der Graphentheorie mit Beispielen und Erläuterung gegeben. Darauffolgend wird tiefer in das Thema eingetaucht und sich mit dem Bereich Sociogram/ Social Graph auseinandergesetzt. Ein Sociogram ist ein Model eines Netzwerks von sozialen Verbindungen die durch einen Graphen repräsentiert werden. Diese Idee wurde 2007 von Facebook als Social Graph in der F8 vorgestellt. Diese Art von Graph basiert auf der Graphentheorie. Die stärken dieses Graphen liegen in der Veranschaulichung der sozialen Verflechtungen. Daher wird der Social Graph für die Analyse der Verflechtungen innerhalb des Transparenzregisters genutzt. Als Fundament dient die Graphentheorie, welche Grundlegen für die Analyse von Netzstrukturen ist. Zunächst werden die
wichtigsten Begriffe definiert und es wird eine Einführung ins Thema der Graphentheorie mit Beispielen und Erläuterung
gegeben. Darauffolgend wird tiefer in das Thema eingetaucht und sich mit dem Bereich Sociogram/ Social Graph
auseinandergesetzt. Ein Sociogram ist ein Model eines Netzwerks von sozialen Verbindungen die durch einen Graphen
repräsentiert werden. Diese Idee wurde 2007 von Facebook als Social Graph in der F8 vorgestellt. Diese Art von Graph
basiert auf der Graphentheorie. Die Stärken dieses Graphen liegen in der Veranschaulichung der sozialen Verflechtungen.
Daher wird der Social Graph für die Analyse der Verflechtungen innerhalb des Transparenzregisters genutzt.
Im Hauptteil der Seminararbeit wird aufgezeigt wie der Social Graph auf das Transparenzregister angewendet werden könnte. Es wird gezeigt welche Komponenten gebildet werden müssten und wie die Daten aufbereitet werden um einen Social graph bauen zu können. Des Weiteren wird auf die Formel und Algorithmen eingegangen die zur Erstellung des Graphen nötig sind. Dabei orientiert sich die Arbeit an Beispielen um die Theorie nachvollziebar zu vermitteln. Dieser Abschnitt wird mit einer Handlungsempfehlung für das Projekt abgeschlossen. Im Hauptteil der Seminararbeit wird aufgezeigt wie der Social Graph auf das Transparenzregister angewendet werden
könnte. Es wird gezeigt welche Komponenten gebildet werden müssten und wie die Daten aufbereitet werden um einen Social
graph bauen zu können. Des Weiteren wird auf die Formel und Algorithmen eingegangen die zur Erstellung des Graphen nötig
sind. Dabei orientiert sich die Arbeit an Beispielen, um die Theorie nachvollziehbar zu vermitteln. Dieser Abschnitt
wird mit einer Handlungsempfehlung für das Projekt abgeschlossen.
Abgeschlossen wird das Werk mit einer kritischen Reflexion, gefolgt von einem Fazit und einem Ausblick. Abgeschlossen wird das Werk mit einer kritischen Reflexion, gefolgt von einem Fazit und einem Ausblick.

View File

@ -1,4 +1,4 @@
"""News mnodel.""" """News model."""
from dataclasses import asdict, dataclass from dataclasses import asdict, dataclass

View File

@ -52,7 +52,8 @@ class Bundesanzeiger:
# Remove irrelevant columns # Remove irrelevant columns
return df_data.drop(["raw_report"], axis=1) return df_data.drop(["raw_report"], axis=1)
def filter_reports(self, df_reports: pd.DataFrame) -> pd.DataFrame: @staticmethod
def filter_reports(df_reports: pd.DataFrame) -> pd.DataFrame:
"""Returns only reports of type `Jahresabschluss` and extracts the year of the report. """Returns only reports of type `Jahresabschluss` and extracts the year of the report.
Args: Args:
@ -73,7 +74,8 @@ class Bundesanzeiger:
) )
return df_reports.drop(["name", "report", "type"], axis=1) return df_reports.drop(["name", "report", "type"], axis=1)
def extract_auditor_company(self, report: str) -> str | None: @staticmethod
def extract_auditor_company(report: str) -> str | None:
"""Extract the name of an auditor company from the given yearly results report. """Extract the name of an auditor company from the given yearly results report.
Args: Args:

View File

@ -401,7 +401,7 @@ def add_relationships(companies: list[dict[str, dict]], db: Session) -> None:
for relationship in relationships: for relationship in relationships:
try: try:
add_relationship(relationship, company_id=company_id, db=db) add_relationship(relationship, company_id, db)
except Exception: except Exception:
db.rollback() db.rollback()
pbar.update() pbar.update()

View File

@ -1,4 +1,4 @@
"""Test Models.nesws.""" """Test Models.news."""
from aki_prj23_transparenzregister.models.news import News from aki_prj23_transparenzregister.models.news import News

View File

@ -49,7 +49,7 @@ def test_extract_kpis() -> None:
assert result[FinancialKPIEnum.LIABILITIES.value] == liabilities assert result[FinancialKPIEnum.LIABILITIES.value] == liabilities
def test_extracct_financial_results() -> None: def test_extract_financial_results() -> None:
input_data = """ input_data = """
<br> <br>
Die Prj23_Transparenzregister GmbH erwirtschaftete einen Jahresüberschuss 10.000,43 . Die Prj23_Transparenzregister GmbH erwirtschaftete einen Jahresüberschuss 10.000,43 .

View File

@ -1,4 +1,4 @@
"""Testing utisl/data_extraction/unternehmensregister/extract.py.""" """Testing utils/data_extraction/unternehmensregister/extract.py."""
import os import os
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory

View File

@ -601,6 +601,7 @@ def test_add_relationships_none(empty_relations: list, full_db: Session) -> None
data_transfer.add_relationships([], full_db) data_transfer.add_relationships([], full_db)
# noinspection SpellCheckingInspection
@pytest.mark.parametrize( @pytest.mark.parametrize(
"documents", "documents",
[ [