function escapeRegExp(string) {
    return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

/**
 * Removes excluded text from a Node.
 *
 * @param {Node} target Node to filter.
 * @param {string} exclude CSS selector of nodes to exclude.
 * @returns {DOMString} Text from `target` with text removed.
 */
function filterText(target, exclude) {
    const clone = target.cloneNode(true);  // clone as to not modify the live DOM
    if (exclude) {
        // remove excluded nodes
        clone.querySelectorAll(exclude).forEach(node => node.remove());
    }
    return clone.innerText;
}

// Callback when a copy button is clicked. Will be passed the node that was clicked
// should then grab the text and replace pieces of text that shouldn't be used in output
function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") {
    var regexp;
    var match;

    // Do we check for line continuation characters and "HERE-documents"?
    var useLineCont = !!lineContinuationChar
    var useHereDoc = !!hereDocDelim

    // create regexp to capture prompt and remaining line
    if (isRegexp) {
        regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)')
    } else {
        regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)')
    }

    const outputLines = [];
    var promptFound = false;
    var gotLineCont = false;
    var gotHereDoc = false;
    const lineGotPrompt = [];
    for (const line of textContent.split('\n')) {
        match = line.match(regexp)
        if (match || gotLineCont || gotHereDoc) {
            promptFound = regexp.test(line)
            lineGotPrompt.push(promptFound)
            if (removePrompts && promptFound) {
                outputLines.push(match[2])
            } else {
                outputLines.push(line)
            }
            gotLineCont = line.endsWith(lineContinuationChar) & useLineCont
            if (line.includes(hereDocDelim) & useHereDoc)
                gotHereDoc = !gotHereDoc
        } else if (!onlyCopyPromptLines) {
            outputLines.push(line)
        } else if (copyEmptyLines && line.trim() === '') {
        }
    }

    // If no lines with the prompt were found then just use original lines
    if (lineGotPrompt.some(v => v === true)) {
        textContent = outputLines.join('\n');
    }

    // Remove a trailing newline to avoid auto-running when pasting
    if (textContent.endsWith("\n")) {
        textContent = textContent.slice(0, -1)
    }
    return textContent
}

seminararbeiten/Abstract Planung Seminararbeit zu Text Mining Sascha Zhu

[Historie der Dokumentenversion](#historie)
[Inhaltsverzeichnis](#inhaltsverzeichnis)

[Anforderungsverfolgung zu den Spezifikationen](#verfolgung_spezifikation)

[Abnahmekriterien und Vorgehen zur Ausgangsprüfung](#abnahmekriterien)

Schnittstellen/ Bezug zu anderen Dokumenten <a name="schnittstellen"></a>

Konzept und Rahmenbedingungen <a name="konzept_und_rahmenbedingung"></a>

Systemvoraussetzungen (Optional) <a name="systemvoraussetzungen"></a>

Die Software berechnet und veranschaulicht folgende Unternehmenskennzahlen:

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.

Die Software muss eine Suche nach Unternehmen und Personen anbieten die zu einer Detailansicht führt mit den in F100 genannten Kennzahlen.

Die Software veranschaulicht die Konzernstruktur (Mutterkonzern <-> Tochterfirmen). 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.

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.

Das System muss die 1000 größten deutschen und europäischen Unternehmen beinhalten. Diese werden anhand der Kennzahlen

Das System ist 24/7 über das Internet für jede Person mit Internetzugang erreichbar.

Das System soll eine Verfügbarkeit von 99 % erreichen, mit maximal 10 Ausfällen pro Jahr.

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 skalierbar sein, sodass auch eine Nutzerzahl von 1000 Benutzern die Software nutzen können.

Anforderungsverfolgung zu den Spezifikationen <a name="verfolgung_spezifikation"></a>

Abnahmekriterien und Vorgehen zur Ausgangsprüfung <a name="abnahmekriterien"></a>

A project analysing the german transparenzregister and other data sources.

to find shared business interests and shared personal and other links for lots of companies

This is the documentation for the AKI project group on the german transparenzregister and an Analysis there of.

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)

Verflechtungen zwischen Unternehmen: Geschäftsführer, Wirtschaftsprüfer

Meeting-Notes mit besprochenen Themen, Entscheidungen, Terminen und Action-List (Wer arbeitet an welcher Aufgabe?)

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

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.

Welche Anforderungen / Erwartungen stellen wir inhaltlich und technisch an das Projekt?

Recherche zum Datenschutz / Urheberrecht: Welche Daten aus den Datenbanken dürfen offline oder online benutzt werden. (Sascha)

Wenn wir die Ergebnisse veröffentlichen müssen die Vorgaben der Datenbanken beachten

Hinweis von Herrn Arinir: Das ist als Vorschungsprojekt zu sehen

Hinweis: Für Tendenzanalysen sollen zeitliche Veränderungen erfasst werden (Timescale Datenbank)

Recherche zu den verfügbaren Datengrundlagen (Phillip und Tristan)

Anlegen eines Pflichtenhefts mit den Anforderungen an das Projekt (Tim)

Es muss noch ein Projekt angelegt werden für das GitHub Repository mit einem Board zur Projektorganisation

Nicht nur auf Kennzahlen eingehen, sondern auch auf die Berichterstattung eingehen

Dazu sollen die Technologieauswahl recherchiert werden (Trendanalyse von Nachrichten, Finanztreff, Twitter etc.)

Rechechieren welche Nachrichtenquellen (Aktuelle und "Alte" Nachrichten) genutzt werden können

Rechechieren welche Nachrichtenquellen (Aktuelle und “Alte” Nachrichten) genutzt werden können

Recherchieren welche Technologien zur Auswertung der Nachrichtenqullen genutzt werden können (z.b. Sentiment Analyse)

Festlegen von Kriterien wann ein Artikel positiv oder negativ zu bewerten ist

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%

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

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

Aufnahme des zeitlichen Ablaufs der Tickets in die Meeting Notes -> Screenshot des Projects in Protokoll mit aufnehmen

Organisatorische Absprachen zum Umfang und Inhalt der Seminararbeit:

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 Seminarbeit 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 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

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.

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.

organisatorische absprachen zum umfang und inhalt der seminararbeit:

Vorstellung des Abstracts der Seminararbeit zu "Dev Ops" (Philipp Horstenkamp):

Vorstellung des Abstracts der Seminararbeit zu “Dev Ops” (Philipp Horstenkamp):

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.

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 "dev ops" (philipp horstenkamp):

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):

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

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 "automatisierte datenextraktion aus internetquellen als grundlage für die analyse von kapitalgesellschaften" (tristan nolde):

Vorstellung des Abstracts der Seminararbeit zu "Datenspeicherung" (Sebastian Zeleny):

Vorstellung des Abstracts der Seminararbeit zu “Datenspeicherung” (Sebastian Zeleny):

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 "datenspeicherung" (sebastian zeleny):

Vorstellung des Abstracts der Seminararbeit zu "Verpflechtungsanalyse" (Tim Ronneburg):

Vorstellung des Abstracts der Seminararbeit zu “Verpflechtungsanalyse” (Tim Ronneburg):

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

vorstellung des abstracts der seminararbeit zu "verpflechtungsanalyse" (tim ronneburg):

Vorstellung des Abstracts der Seminararbeit zu "Text Mining" (Sascha Zhu):

Vorstellung des Abstracts der Seminararbeit zu “Text Mining” (Sascha Zhu):

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

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 "text mining" (sascha zhu):

Vorstellung des Abstracts der Seminararbeit zu "Datenvisualisierung" (Kim Mesewinkel-Risse):

Vorstellung des Abstracts der Seminararbeit zu “Datenvisualisierung” (Kim Mesewinkel-Risse):

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

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.

vorstellung des abstracts der seminararbeit zu "datenvisualisierung" (kim mesewinkel-risse):

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

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.

Es wäre empfehlenswert, mit irgendetwas (d.h. einer kleinen Lösung) anzufangen, dann das Ergebnis anzuschauen, und diese kontinuierlich zu verbessern.

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. 

Sebastian präsentiert die Unternehmensdetails in sicht auf die Kennzahlen

Sebastian dankt Kim für das Überarbeiten der Graphen im Farbschema

Sascha weist darauf hin das zusätzlich noch das Quellmaterial für die Stimmungen mit angezeigt werden sollen.

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.

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

Die Frage wie wir zeitliche veränderungen im sozial graph bewerten sollen kam auf. Wurde aber noch nicht abschließend beantwortet.

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.").

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.”).

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?*.

Unser Weg zum Pflichtenheft und zur Spezifikation der Systemanforderungen ist folgend dargestellt.

Von unspezifizierten Anforderungen werden wir immer konkreter und beantworten iterativ die Fragen 

Entwicklung einer Software zur Darstellung von Unternehmenskennzahlen und Verbindungen.

Ermittlung der 100 größten deutschen und europäischen Unternehmen

Die erhobenen Daten müssen visualisiert werden (evtl. durch ein Netz, wenn es Verbindungen sind)

Die erhobenen Daten müssen nach Unternehmen und Personen durchsuchbar sein.

Es werden Datenquellen benötigt, um Unternehmenskennzahlen ermitteln zu können.

Es werden Datenquellen benötigt, um über die öffentliche Darstellung der Unternehmen zu erfahren.

Es werden Werkzeuge benötigt, um Sentimentanalyse über Unternehmen durchzuführen.

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.

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.

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 

Die Gruppe diskutiert die Anforderungen und legt eine Priorisierung fest.

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 Team legt sich mit dem Pflichtenheft auf einen definierten Umfang und konkrete Inhalte der Lösung fest. Es wird in 

Timeseries (deutsch: Zeitreihen) im Kontext des Transparenzregisters Kapitalgesellschaften

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?

Passt die Struktur und Handhabung von Timeseries Daten auf den Use Case?

Wie könnte ein beispielhafter Datensatz (ggf. in Form eines Pandas DataFrames) aussehen?

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 

--<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:

`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.

`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.

`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.

`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/)

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.

Die im Rahmen der vorher durchgeführten Analyse von für den Use Case 

 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.

In Folge dessen eignet sich eine Zeitreihen basierte Modellierung nicht für die zentralen Unternehmenskennzahlen.

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.

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 

 (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.

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.

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.

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 

 sinnvoll. Dies ermöglicht dem Client die gesamte Datenbasis zu durchforsten und den benötigten Datenbestand abzufragen. Der 

 Struktur problemlos mehrere Datenquellen (siehe oben angesprochene 

erDiagram
    Kapitalgesellschaft ||--o{ Jahresabschluss : veroeffentlicht
    Wirtschaftspruefer ||--o{ Jahresabschluss : prueft
    Jahresabschluss ||--o{ Metriken : beinhaltet
    Kapitalgesellschaft ||--o{ Branche : operiert_in
    Person ||--o{ Vorstand : agiert_als
    Person ||--o{ Wirtschaftspruefer : agiert_als
    Vorstand ||--o{ Kapitalgesellschaft: leitet

    Kapitalgesellschaft {
    }
    Branche {
    }
    Jahresabschluss {
    }

timeseries (deutsch: zeitreihen) im kontext des transparenzregisters kapitalgesellschaften

Rechtsform bzw. Art der Kapitalgesellschaft (AG, KGaA, GmbH, UG)

Geschäftsführung bzw. Vorstand (Vorsitzende/r, Stellvertretung, weitere)

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.

*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.)

*Angelehnt an https://www.tagesschau.de/wirtschaft/boersenkurse/ und https://boerse.de*

Angelehnt an https://www.tagesschau.de/wirtschaft/boersenkurse/ und https://boerse.de

Kurs-Gewinn-Wachstumsverhältnis (PEG) = KGV / erwarteter Gewinnwachstum im kommenden Geschäftsjahr

*Handbuch Aktien- und Unternehmensbewertung - Peter Seppelfricke*

Gewinn vor Steuern und Zinsen (EBIT/Betriebsergebnis): Bei Gesamtkostenverfahren Summe 1-8, bei Umsatzkostenverfahren Summe 1-7

Eigenkapitalrentabilität = Jahresüberschuss / Eigenkapital * 100

Wert aller Produkte und Dienstleistungen, die in einem bestimmten Zeitraum abgesetzt wurden

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)

Kennzahl, die den Unternehmensgewinn angibt, der aus der gewöhnlichen Geschäftstätigkeit entsteht

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

ebit (earnings before interest and taxes/gewinn vor zinsen und steuern/betriebsergebnis/operativer gewinn)

Eignet sich zum Vergleich von verschiedenen Unternehmen, zur Messung der operativen Veränderung und gibt Rückschlüsse auf die zukünftige Rentabilität

Eine EBIT-Marge in Höhe von 10% und mehr ist als positiv zu bewerten

Summe des Vermögens bzw. der Aktiva und des Kapitals bzw. der Passiva eines Unternehmens

Liefert Anhaltspunkte dafür, ob und wie schnell ein Unternehmen wächst

Je größer der Abstand zwischen eigenen und fremden Mittel, umso freier kann die Unternehmensleitung agieren

Je höher die Quote, desto unabhängiger ist das Unternehmen von Fremdkapitalgebern

Je höher die Quote, desto abhängiger ist das Unternehmen von Fremdkapitalgebern, die Kreditwürdigkeit sinkt

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 niedrigen Verschuldungsgrad ist die Eigenkapitalfinanzierung höher

Informiert über die Wirtschaftlichkeit des Unternehmens und die Sinnhaftigkeit des Kapitaleinsatzes

Gewünschte Höhe der Eigenkapitalrentabilität differiert je nach Branche

Eine doppelt so hohe Eigenkapitalrendite wie der durchschnittliche Zins gilt als wünschenswert

Ist der Kapitalzins höher, sollten Unternehmen das Kapital aus dem Kapitalmarkt anlegen

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)

Eine steigende Umsatzrendite deutet darauf hin, dass die Produktivität des Unternehmens steigt

Eine Umsatzrentabilität in Höhe von 5% und mehr gilt als Richtwert

Gesamtkapitalrentabilität (Return on Investment ROI, Kapitalrendite)

gesamtkapitalrentabilität (return on investment roi, kapitalrendite)

Insgesamt sollen folgende Größen bzw. Kennzahlen betrachtet werden:

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

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.
Doku: https://newsapi.org/docs/get-started

**Hinweis**: *Bietet die Möglichkeit nach Artikel mit einem bestimmten Wort zu suchen*

Bietet die Möglichkeit nach Artikel mit einem bestimmten Wort zu suchen

generell kostenlos, bei starker Nutzung muss ein Preis angefragt werden

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.

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.

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.

[FinBert Jupyter](../../Jupyter/AI-models/"Sentiment Analysis"/FinBert.ipynb)

[FinBert Jupyter](../../Jupyter/AI-models/”Sentiment Analysis”/FinBert.ipynb)

Aufgabe: Inhaltliche Skizze für die Seminararbeit zur Thematik Datenspeicherung

aufgabe: inhaltliche skizze für die seminararbeit zur thematik datenspeicherung

**Speicherung** von strukturierten Daten, wie Kennzahlen, Stammdaten

**Skalierbarkeit:** Datenbank sollte skalierbar sein, um zukünftige Daten weiterhin zu speichern und weitere Unternehmen hinzuzufügen

 Datenbank sollte skalierbar sein, um zukünftige Daten weiterhin zu speichern und weitere Unternehmen hinzuzufügen

**Sicherheit:** Die Datenbank muss Funktionen unterstützen, um die Datenvor unbefugtem Zugriff zu schützen.

 Die Datenbank muss Funktionen unterstützen, um die Datenvor unbefugtem Zugriff zu schützen.

**Datensicherung- und Wiederherstellung: ** Die Datenbank muss Funktionen zur Sicherung und Wiederherstellung unterstützen.

**Leistung:** Die Performance der Datenbank ist eher zweitrangig, da die Abfrage nicht hochdynamisch sein muss. Ausserdem werden nicht viele Anfragen erwartet.

 Die Performance der Datenbank ist eher zweitrangig, da die Abfrage nicht hochdynamisch sein muss. Ausserdem werden nicht viele Anfragen erwartet.

**Integration:** Die Datenbank muss sich in ein Python Framework einbinden lassen und mit dem bevorzugten Frontend Daten austauschen können.

 Die Datenbank muss sich in ein Python Framework einbinden lassen und mit dem bevorzugten Frontend Daten austauschen können.

Welche Daten erwarten wir im Projekt? \
Cluster, wie z.B. Stammdaten, Stimmungsdaten, Social Graph, Zeitseriendaten/Historien

Abstimmung mit den Bereichen Textmining und Datenbeschaffung über verwendete Daten und Formulierung von Anforderungen an Daten.

Was ist eine reltionale Datenbank?
Wie werden Daten gespeichert?
Beispiel für relationale Datenbank

Was ist eine Graph Datenbank?
Beispiel für Graph Datenbank

Was ist eine Zeitserien Datenbank?
Beispiel für Zeitserien Datenbank

Modell zur Abbildung der Relationen im Projekt Transparenzregister

Ein DBS: Wenn nur ein Datenbanksystem verwendet wird, muss nur ein System gepflegt und integriert werden.

Vorteil: einfache Verwaltung und schnelle Abfrage von Datenbeziehungen

verteiltes System: spezialisierte Datenbank für jeden Datenytp, wie z.B. Zeitseriendaten oder Graph Daten

Definiere eine Empfehlung/Anforderung für das Projekt Transparenzregister.

Was sollte bei der Auswahl eines Datenbanksystems beachtet werden?

Wie können Unternehmensdaten abgefragt werden?
Wie können Verflechtungen abgefragt werden?

/home/runner/work/aki_prj23_transparenzregister/aki_prj23_transparenzregister/documentations/seminararbeiten/Abstract Planung Seminararbeit zu Text Mining Sascha Zhu.md

4.2 Generierung von Ontologien mittels Text Mining ("ontology generation"/"ontology learning" )

4.2 Generierung von Ontologien mittels Text Mining (“ontology generation”/”ontology learning” )

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 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.

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.

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.

Abstract: Automatisierte Daten Extraktion aus Internetquellen als Grundlage für die Analyse von Kapitalgesellschaften

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.

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.

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.

abstract: automatisierte daten extraktion aus internetquellen als grundlage für die analyse von kapitalgesellschaften

Welche Diagrammarten eignen sich für unsere drei Anwendungsbereiche Time Series Daten, Netzwerke und Stimmungen?

Betrachtung verschiedener Bibliotheken (z.B. D3Blocks, pyvis, plotly)

Zweck der Bibliothek, unterstützte Visualisierungen, Vor- und Nachteile

Vergleich der Bibliotheken mit Blick auf unsere drei Anwendungsbereiche

Welche Ideen/Anforderungen ergeben sich an die anderen Themenbereiche?

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 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.

My plan for this coursework is to explore the dev ops thema and how it applies to the AI theme and this project in specific.

There are the following things in the theme of dev ops I want to explore:

Write a documentation around pre-commit hooks and how they can be used for this project with arguments for and against each of the hooks.

Add a GitHub Runner on my own hardware to the repository and build a pipline with GitHub actions.

Explore the ability of GitHub to summaries the linting and testing results.

Add SonarQube to the project if the test and lint summaries in GitHub does not suffice.

Build the artifacts. Something like python wheels, Docker container and deployment files.

Startup to new build and see if it crashes in the first 60s if a framework is shown.

Build the documentation via sphinx for this project via the pipline.

How to deploy the collection of Docker containers via docker-compose and/or kubernetes.

Evaluate the use of dependabot to upgrade the poetry dependency groups.

sociometry: quantitatives Methode um soziale Beziehungen zu messen.

Social Network Analysis (SNA): Untersuchen von Sozialen Strukturen anhand von Netzwerken und Graphtheorie.

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 Projektess 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.

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.

Abgeschlossen wird das Werk mit einer kritischen Reflexion, gefolgt von einem Fazit und einem Ausblick.

    gantt

        title Timeline PG Transparenzregister
        dateFormat  YYYY-MM-DD
        section Organisation
        Kennenlernen des Projektteams : done, a1, 2023-03-30, 1d
        Erstellen des Organigramms : done, after a1  , 1d
        GitHub : done, 2023-04-06, 7d
        Zeitplanung SoSe : active , 2023-04-06, 7d

        section Dokumentation
        Meeting Notes: active, 2023-03-30, 10w
        Seminarthemen: active, 2023-04-13, 8w
        Lastenheft: active, 2023-04-06, 5w
        Pflichtenheft: milestone, 2023-05-11
        Reserve: crit, 2023-06-08, 1w

        section Meeting
        Weekly 1 : done, 2023-03-30, 0.5h
        Statustermin 1 : done ,2023-03-30  , 1h
        Weekly 2 : done, 2023-04-06, 2h

        Statustermin 2 : active, 2023-04-13, 1h
        Weekly 3 : active, 2023-04-13, 0.5h
        Weekly 4 : active, 2023-04-20, 2h

        Weekly 5 : active, 2023-04-27, 0.5h
        Statustermin 3 : active, 2023-04-27, 1h

        Weekly 6 : active, 2023-05-04, 2h

        Weekly 7 : active, 2023-05-11, 0.5h
        Statustermin 4 : active, 2023-05-11, 1h

        Weekly 8 : active, 2023-05-18, 2h
        Weekly 9 : active, 2023-05-25, 0.9h
        Statustermin 5 : active, 2023-05-25, 1h

        Weekly 10 : active, 2023-06-01, 2h
        Weekly 11 : active, 2023-06-01, 0.9h
        Statustermin 6 : active, 2023-06-08, 1h

        section Recherche
        Unternehmensformen : active, 2023-04-06, 14d
        Kennzahlen : active, 2023-04-10, 14d
        Datenquellen : active, 2023-04-10, 14d
        rechtliche Verwendbarkeit: active, 2023-04-06, 18d
        Verwendete Metriken, Datenquellen, Rechtmäßigkeit: milestone, 2023-04-24
        Reserve: crit, 2023-04-24, 3d

        section Definition
        fachl. Aufgabe : active, 2023-04-27, 1d
        techn. Aufgabe : active, 2023-04-27, 1d
        Funktionelle Anf.  : active, 2023-04-27, 7d
        Qualitative Anf. : active, 2023-04-27, 7d
        Modell: active, 2023-05-04, 7d
        Hierarchie: active, 2023-05-04, 7d
        Definition der Anforderungen : milestone, 2023-05-11
        Reserve: crit, 2023-05-11, 1w

        section Proof of concept
        Project Proposal : active, 2023-05-18, 10d
        Vorstellung Project Proposal: milestone, 2023-05-28
        Implementierung des Proposals: active, 2023-05-25, 14d
        Vorstellung Proof of Concept: milestone, 2023-06-08

Automatisierte Daten Extraktion aus Internetquellen als Grundlage für die Analyse von Kapitalgesellschaften

schnittstellen/ bezug zu anderen dokumenten <a name="schnittstellen"></a>

konzept und rahmenbedingungen <a name="konzept_und_rahmenbedingung"></a>

systemvoraussetzungen (optional) <a name="systemvoraussetzungen"></a>

anforderungsverfolgung zu den spezifikationen <a name="verfolgung_spezifikation"></a>

abnahmekriterien und vorgehen zur ausgangsprüfung <a name="abnahmekriterien"></a>

f-strings support = for self-documenting expressions and debugging

ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON 3.11.4 DOCUMENTATION

email.message.Message: Representing an email message using the compat32 API

What is the most efficient way to concatenate many strings together?

Why does a_tuple[i] += [‘item’] raise an exception when the addition works?

What does the slash(/) in the parameter list of a function mean?

Why am I getting an UnboundLocalError when the variable has a value?

PEP 3118: New memoryview implementation and buffer protocol documentation

PEP 476: Enabling certificate verification by default for stdlib http clients

PEP 471 - os.scandir() function – a better and faster directory iterator

PEP 655: Marking individual TypedDict items as required or not-required

Why must ‘self’ be used explicitly in method definitions and calls?

argparse — Parser for command-line options, arguments and sub-commands

functools — Higher-order functions and operations on callable objects

multiprocessing.shared_memory — Shared memory for direct access across processes

sysconfig — Provide access to Python’s configuration information

Creating artists specifically for adding to the legend (aka. Proxy artists)

MEP15: Fix axis autoscaling when limits are specified for one axis only

Will you add graphical models or sequence prediction to scikit-learn?

Decomposing signals in components (matrix factorization problems)

Truncated singular value decomposition and latent semantic analysis

Polynomial regression: extending linear models with basis functions

Why are you so selective on what algorithms you include in scikit-learn?

Sparse principal components analysis (SparsePCA and MiniBatchSparsePCA)

Compressive sensing: tomography reconstruction with L1 prior (Lasso)

Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation

Biclustering documents with the Spectral Co-clustering algorithm

Normal, Ledoit-Wolf and OAS Linear Discriminant Analysis for classification

Linear and Quadratic Discriminant Analysis with covariance ellipsoid

A demo of structured Ward hierarchical clustering on an image of coins

Selecting the number of clusters with silhouette analysis on KMeans clustering

Comparing different hierarchical linkage methods on toy datasets

Comparison of the K-Means and MiniBatchKMeans clustering algorithms

Selecting dimensionality reduction with Pipeline and GridSearchCV

Shrinkage covariance estimation: LedoitWolf vs OAS and max-likelihood

Robust covariance estimation and Mahalanobis distances relevance

Principal Component Regression vs Partial Least Squares Regression

Plot the decision surfaces of ensembles of trees on the iris dataset

Probabilistic predictions with Gaussian process classification (GPC)

Iso-probability lines for Gaussian Processes classification (GPC)

Illustration of Gaussian process classification (GPC) on the XOR dataset

Illustration of prior and posterior Gaussian process for different kernels

Common pitfalls in the interpretation of coefficients of linear models

Permutation Importance vs Random Forest Feature Importance (MDI)

Permutation Importance with Multicollinear or Correlated Features

Fitting an Elastic Net with a precomputed Gram Matrix and Weighted Samples

One-Class SVM versus One-Class SVM using Stochastic Gradient Descent

Manifold learning on handwritten digits: Locally Linear Embedding, Isomap…

Comparing anomaly detection algorithms for outlier detection on toy datasets

The Johnson-Lindenstrauss bound for embedding with random projections

Concentration Prior Type Analysis of Variation Bayesian Gaussian Mixture

Demonstration of multi-metric evaluation on cross_val_score and GridSearchCV

Test with permutations the significance of a classification score

Comparing randomized search and grid search for hyperparameter estimation

Comparing Nearest Neighbors with and without Neighborhood Components Analysis

Decision boundary of semi-supervised classifiers versus SVM on the Iris dataset

Support Vector Regression (SVR) using linear and non-linear kernels

Plot the decision surface of decision trees trained on the iris dataset

A tutorial on statistical-learning for scientific data processing

Cross-validation iterators with stratification based on class labels.

Supervised learning: predicting an output variable from high-dimensional observations

Statistical learning: the setting and the estimator object in scikit-learn

Modules sympy.tensor.array.expressions.conv_* renamed to sympy.tensor.array.expressions.from_*

Calling sympy.stats.StochasticProcess.distribution with RandomIndexedSymbol

The max_degree and get_upper_degree properties of sympy.polys.multivariate_resultants.DixonResultant

The unicode argument and attribute to sympy.printing.pretty.stringpict.prettyForm and the sympy.printing.pretty.pretty_symbology.xstr function

The get_kronecker_delta() and get_epsilon() methods of TensorIndexType

Masses, Inertias, Particles and Rigid Bodies in Physics/Mechanics

Reduce One or a System of Inequalities for a Single Variable Algebraically

Potential Issues/Advanced Topics/Future Features in Physics/Mechanics

Potential Issues/Advanced Topics/Future Features in Physics/Vector Module

I authenticated through GitHub but I still cannot commit to the repository through Gitpod.

I registered on Gitpod but I still cannot see a Gitpod button in my repositories.

My terminal is blank - there is no cursor and it's completely unresponsive

pandas equivalents for some SQL analytic and aggregate functions

Concatenating a Series and an indexed object into a Series, with alignment

Partial string indexing on DatetimeIndex when part of a MultiIndex

MultiIndex constructors, groupby and set_index preserve categorical dtypes

Index.intersection and inner join now preserve the order of the left Index

Possible incompatibility for HDF5 formats created with pandas < 0.13.0

Sum/prod of all-NaN or empty Series/DataFrames is now consistently NaN

Instantiation from dicts preserves dict insertion order for Python 3.6+

New observed keyword for excluding unobserved categories in GroupBy

Rolling/Expanding.apply() accepts raw=False to pass a Series to the function

Integer addition/subtraction with datetimes and timedeltas is deprecated

Proper handling of np.NaN in a string data-typed column with the Python engine

Column order is preserved when passing a list of dicts to DataFrame

DataFrame describe on an empty Categorical / object column will return top and freq

By default Categorical.min() now returns the minimum instead of np.nan

Added check_freq argument to testing.assert_frame_equal and testing.assert_series_equal

apply and applymap on DataFrame evaluates first row/column only once

Assignment to multiple columns of a DataFrame when some columns do not exist

Comparing two DataFrame or two Series and summarizing the differences

Grouper and resample now supports the arguments origin and offset

Parsing timezone-aware format with different timezones in to_datetime

Change in default floating precision for read_csv and read_table

DataFrameGroupBy.rolling and SeriesGroupBy.rolling no longer return grouped-by column in values

DataFrameGroupBy.rolling and SeriesGroupBy.rolling with MultiIndex no longer drop levels in the result

Deprecated dropping nuisance columns in DataFrame reductions and DataFrameGroupBy operations

float result for DataFrameGroupBy.mean(), DataFrameGroupBy.median(), and GDataFrameGroupBy.var(), SeriesGroupBy.mean(), SeriesGroupBy.median(), and SeriesGroupBy.var()

Groupby methods agg and transform no longer changes return dtype for callables

Removed artificial truncation in rolling variance and standard deviation

DataFrame.from_dict and DataFrame.to_dict have new 'tight' option

mangle_dupe_cols in read_csv no longer renames unique columns conflicting with target names

Multi-threaded CSV reading with a new CSV Engine based on pyarrow

Null-values are no longer coerced to NaN-value in value_counts and mode

unstack and pivot_table no longer raises ValueError for result that would exceed int32 limit

DataFrameGroupBy.value_counts with non-grouping categorical columns and observed=True

Label-based integer slicing on a Series with an Int64Index or RangeIndex

Serializing tz-naive Timestamps with to_json() with iso_dates=True

Using group_keys with transformers in DataFrameGroupBy.apply() and SeriesGroupBy.apply()

Argument dtype_backend, to return pyarrow-backed or numpy-backed nullable dtypes

Construction with datetime64 or timedelta64 dtype with unsupported resolution

DataFrameGroupBy.cumsum() and DataFrameGroupBy.cumprod() overflow instead of lossy casting to float

DataFrameGroupBy.nth() and SeriesGroupBy.nth() now behave as filtrations

Disallow astype conversion to non-supported datetime64/timedelta64 dtypes

UTC and fixed-offset timezones default to standard-library tzinfo objects