mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-06-21 19:03:55 +02:00
Last fixes
This commit is contained in:
@ -3,7 +3,7 @@ In diesem Kapitel werden die Prämissen behandelt welche zu Beginn des Projektes
|
||||
|
||||
Die im Folgenden genannten Werkzeuge und Technologien werden an den entsprechenden Stellen später detaillierter behandelt. Dieses Kapitel dient daher als Zusammenfassung der Anforderungen mit nachfolgender Auswahl der Technologien. Diese Auswahl wird im anschließenden Kapitel 3, das die Zwischenberichte des Projekts umfasst, eingehender und ausführlicher behandelt.
|
||||
|
||||
Bei der Auswahl der Technologien für das Projekt wurden verschiedene Gesichtspunkte berücksichtigt. Insbesondere wurden folgende Fragen im Fokus betrachtet:
|
||||
Bei der Auswahl der Technologien für das Projekt werden verschiedene Gesichtspunkte berücksichtigt. Insbesondere stehen folgende Fragen im Fokus:
|
||||
|
||||
- Welches Tool zur Visualisierung soll verwendet werden?
|
||||
- Auf welche Weise erfolgt die Berechnung und Visualisierung von Graphen und Netzwerken?
|
||||
@ -13,9 +13,9 @@ Bei der Auswahl der Technologien für das Projekt wurden verschiedene Gesichtspu
|
||||
|
||||
Auf die Fragestellung wie in der Projektgruppe zusammengearbeitet wird und welche Werkzeuge dafür zum tragen kommen - Stichwort: Git - wurde bereits im vorherigen Kapitel behandelt und wir hier nicht weiter betrachtet.
|
||||
|
||||
Für die aufgelisteten Fragestellungen hat sich jeweils ein Gruppenmitglied intensiv mit der Thematik auseinandergesetzt und eine Auswahl an möglichen Technologien der Projektgruppe vorgestellt. Nach mehreren iterationen der evaluation ist eine Asuwahl an Werkzeugen gesetzt worden.
|
||||
Für die aufgelisteten Fragestellungen setzt sich jeweils ein Gruppenmitglied intensiv mit der Thematik auseinander und stellt eine Auswahl an möglichen Technologien der Projektgruppe vor. Nach mehreren Iterationen der Evaluation wird eine Auswahl an Werkzeugen getroffen.
|
||||
|
||||
Generell wurden für sämtliche Aspekte die allgemeinen Leitlinien berücksichtigt, dass die eingesetzten Werkzeuge und Technologien Open Source sein sollten, also frei verfügbar und ohne zusätzliche Kosten. Die Programmiersprache sollte auf Python basieren, da sie von allen Gruppenmitgliedern beherrscht wird und die Verwendung mehrerer Sprachen das Projekt unnötig komplex machen würde. Die gewählten Technologien sollten nahtlos in die Arbeitsweise mit DevOps und Git integrierbar sein, und durch automatisierte Tests überprüfbar sein, um eine einheitliche Arbeitsweise zu gewährleisten und Engpässe durch isolierte Anwendungen zu vermeiden. Schließlich wurde für alle zu berücksichtigenden Werkzeuge auf eine einfache Bedienbarkeit Wert gelegt, um einen reibungslosen Einstieg in die Technologie zu ermöglichen und die Beteiligung aller Teammitglieder zu erleichtern.
|
||||
Generell werden für sämtliche Aspekte die allgemeinen Leitlinien berücksichtigt. Die eingesetzten Werkzeuge und Technologien sollen Open Source sein, also frei verfügbar und ohne zusätzliche Kosten. Die Programmiersprache basiert auf Python, da sie von allen Gruppenmitgliedern beherrscht wird und die Verwendung mehrerer Sprachen das Projekt unnötig komplex machen würde. Die gewählten Technologien integrieren sich nahtlos in die Arbeitsweise mit DevOps und Git und sind durch automatisierte Tests überprüfbar. Dadurch wird eine einheitliche Arbeitsweise gewährleistet, und Engpässe durch isolierte Anwendungen werden vermieden. Schließlich legen wir Wert darauf, dass alle zu berücksichtigenden Werkzeuge einfach bedienbar sind, um einen reibungslosen Einstieg in die Technologie zu ermöglichen und die Beteiligung aller Teammitglieder zu erleichtern.
|
||||
|
||||
## Technische Anforderungen
|
||||
Neben den allgemein geltenden Anforderungen wird in diesem Unterkapitel auf die technischen Anforderungen je Kategorie eingegangen. Die Kategorien wurden aus den oben ganannten Fragestellungen abgeleitet und entsprechen den Arbeitsbereichen der einzelnen Gruppenmitglieder sowie die Kernelemente des Projektes. Die Gruppen/Kategorien lauten:
|
||||
@ -30,9 +30,9 @@ Diese Einteilung findet sich im Verlauf der Dokumentation immer wieder. Zusätzl
|
||||
Im folgenden wird auf kurz auf die Kategorien eingegangen und die speziellen Anforderungen für die jeweiligen Bereich dargelegt, welche es bei der Rechereche zu betrachten galt.
|
||||
|
||||
### DevOps
|
||||
Dieser Abschnitt befasst sich mit der Versionskontrolle des Quellcodes, automatisierten Tests und der automatisierten Bereitstellung der Anwendung auf einem Server. Im Kapitel 3.1 wurde dieses Thema theoretisch und in Kapitel 4.2 praktisch behandelt, weshalb sich dieser Abschnitt auf die Anforderungen auf höchster Ebene konzentriert.
|
||||
Dieser Abschnitt befasst sich mit der Versionskontrolle des Quellcodes, automatisierten Tests und der automatisierten Bereitstellung der Anwendung auf einem Server. Im Kapitel 3.1 wird dieses Thema theoretisch und in Kapitel 4.2 praktisch behandelt, weshalb sich dieser Abschnitt auf die Anforderungen auf höchster Ebene konzentriert.
|
||||
|
||||
Bei der Implementierung von DevOps war es entscheidend herauszufinden, welche Versionskontrollsoftware genutzt werden sollte, wie DevOps darin integriert werden kann und für welche Aspekte des Projekts DevOps sinnvoll eingesetzt werden kann.
|
||||
Bei der Implementierung von DevOps ist es entscheidend herauszufinden, welche Versionskontrollsoftware genutzt werden soll, wie DevOps darin integriert werden kann und für welche Aspekte des Projekts DevOps sinnvoll eingesetzt wird.
|
||||
|
||||
Die Versionskontrollsoftware muss für alle Beteiligten leicht zugänglich sein und keine zusätzlichen Konten erfordern. Sie sollte die Zusammenarbeit im Team ermöglichen, indem mehrere Personen an denselben Dateien arbeiten können, die dann von der Versionskontrollsoftware zusammengeführt werden.
|
||||
|
||||
@ -75,7 +75,7 @@ Es wird also nach einer oder mehreren Datenbanken gesucht, die folgende Anforder
|
||||
|
||||
Die Sentimentanalyse beinhaltet die Bewertung von Nachrichten im Hinblick auf die darin erwähnten Unternehmen. Es wird untersucht, ob die betreffenden Unternehmen positiv oder negativ dargestellt werden. Diese Information wird, bei ausreichender Datenlage, im Transparenzregister als Stimmung angegeben.
|
||||
|
||||
Da eine manuelle Analyse aufgrund der großen Menge täglicher Nachrichten nicht durchführbar ist, wird nach einer Technologie gesucht, die automatisch die Daten analysiert, die Unternehmensnamen identifiziert, die Stimmung des Textes gegenüber dem Unternehmen bewertet und diese Informationen dann für die Speicherung weiterleitet. Eine weitere Schwierigkeit bestand in der Übersetzung der deutschen Nachrichten ins Englische, da für die Analyse KI-Modelle zum Einsatz kommen, die oft auf englische Texte ausgerichtet sind.
|
||||
Da eine manuelle Analyse aufgrund der großen Menge täglicher Nachrichten nicht durchführbar ist, wird nach einer Technologie gesucht, die automatisch die Daten analysiert, die Unternehmensnamen identifiziert, die Stimmung des Textes gegenüber dem Unternehmen bewertet und diese Informationen dann für die Speicherung weiterleitet. Eine weitere Schwierigkeit besteht in der Übersetzung der deutschen Nachrichten ins Englische, da für die Analyse KI-Modelle zum Einsatz kommen, die oft auf englische Texte ausgerichtet sind.
|
||||
|
||||
Zusätzlich muss der Unternehmensname standardisiert werden, sodass bei unterschiedlichen Schreibweisen dennoch dasselbe Unternehmen erkannt wird und die gewonnenen Informationen zu diesem Unternehmen angezeigt werden können. Beispielsweise wird in Artikeln häufig von VW, Volkswagen, Volkswagen AG oder dem Volkswagen Konzern gesprochen, was alles dasselbe Unternehmen repräsentiert.
|
||||
|
||||
@ -116,7 +116,7 @@ Die formulierten Anforderungen sind demnach:
|
||||
- Die Technologie sollte kostenlos und frei verfügbar sein.
|
||||
|
||||
### Provisionierung
|
||||
Die Provisionierung befasst sich mit der Bereitstellung der entstehenden Anwendung für die Benutzer. Dabei soll die Anwendung über das Internet erreichbar sein, jedoch durch ein Passwort geschützt werden. Aus Kostengründen ist das Hosting kostenfrei und erfolgt über Container. Das Projektteam hat sich für den Container-Ansatz entschieden, um die Anwendung auf mehrere kleine Teilanwendungen zu verteilen. Diese können separat getestet und von einzelnen Projektentwicklern auch lokal ausgeführt werden.
|
||||
Die Provisionierung befasst sich mit der Bereitstellung der entstehenden Anwendung für die Benutzer. Dabei soll die Anwendung über das Internet erreichbar sein, jedoch durch ein Passwort geschützt werden. Aus finanziellen Gründen ist das Hosting kostenfrei und erfolgt über Container. Das Projektteam hat sich für den Container-Ansatz entschieden, um die Anwendung auf mehrere kleine Teilanwendungen zu verteilen. Diese können separat getestet und von einzelnen Projektentwicklern auch lokal ausgeführt werden.
|
||||
|
||||
Daraus ergeben sich die folgenden Prämissen:
|
||||
|
||||
@ -128,48 +128,48 @@ Daraus ergeben sich die folgenden Prämissen:
|
||||
Auf Basis der im vorherigen Kapitel festgelegten Prämissen erfolgt in diesem Abschnitt eine kurze Beschreibung der verfügbaren Technologien, gefolgt von der Auswahl der für dieses Projekt geeigneten Technologien. Wie bereits erwähnt, können detailliertere Informationen den Zwischenberichten im folgenden Kapitel 3 entnommen werden.
|
||||
|
||||
### DevOps
|
||||
Basierend auf den oben beschriebenen Anforderungen bestand die Wahl zwischen GitHub und GitLab als Versionsverwaltungstool. Es musste auch entschieden werden, ob eine öffentliche Instanz verwendet wird, die Fachhochschule das Tool hostet oder ob es über einen Home Server erfolgt.
|
||||
Basierend auf den oben beschriebenen Anforderungen besteht die Wahl zwischen GitHub und GitLab als Versionsverwaltungstool. Es wird auch entschieden , ob eine öffentliche Instanz verwendet wird, die Fachhochschule das Tool hostet oder ob es über einen Home Server erfolgt.
|
||||
|
||||
Nach sorgfältiger Prüfung der vorhandenen Optionen wurde die Entscheidung für die Lösung mit GitHub über die GitHub-Instanz der Fachhochschule getroffen. Diese Lösung ist naheliegend, da bereits alle Projektteilnehmenden einen GitHub-Account besitzen und gleichzeitig den Professoren und der Fachhochschule Zugriff auf den Quellcode gewährt werden kann. Darüber hinaus bleibt der Quellcode in der Verwaltung der Fachhochschule und kann späteren Studierenden zur Verfügung gestellt werden.
|
||||
|
||||
Diese Entscheidung bringt für das Projekt weitere Vorteile mit sich, da keine zusätzlichen Kosten entstehen. Im Hinblick auf DevOps bietet GitHub mit GitHub Actions eine ausgezeichnete Möglichkeit, eigene Pipelines zu erstellen, diese automatisch auszuführen und über bestimmte Hooks zu triggern. So kann beispielsweise beim Push auf einen Branch die Pipeline gestartet werden.
|
||||
|
||||
GitLab stand über die Fachhochschule nicht zur Verfügung und hätte somit einen größeren mehraufwand für das Projekt bedeutet.
|
||||
GitLab steht über die Fachhochschule nicht zur Verfügung und bedeutet somit einen größeren Mehraufwand für das Projekt.
|
||||
|
||||
### Text Mining
|
||||
Für das Text Mining konnte kein einsatzbereites, kostenloses Tool gefunden werden, das alle Anforderungen erfüllt. Daher wurde die Entscheidung getroffen, einen eigenen Algorithmus zu entwickeln, der die erforderlichen APIs abfragt und die Daten entsprechend aufbereitet. Der Quellcode wurde in Python verfasst, und die genaue Vorgehensweise wird ausführlich im Kapitel 3.2 beschrieben.
|
||||
|
||||
### Datenspeicherung
|
||||
Für die Datenspeicherung stand die gesamte Palette an SQL- und NoSQL-Datenbanken zur Verfügung. Basierend auf dem Kenntnisstand der Projektteilnehmer wurde die Entscheidung getroffen, für den Data Lake die NoSQL-Datenbank MongoDB zu verwenden. Diese steht kostenfrei zur Verfügung, kann in Docker-Containern gehostet werden und eignet sich aufgrund ihres schemenlosen Designs gut für die unstrukturierte Speicherung von zahlreichen Daten.
|
||||
Für die Datenspeicherung steht die gesamte Palette an SQL- und NoSQL-Datenbanken zur Verfügung. Basierend auf dem Kenntnisstand der Projektteilnehmer wird die Entscheidung getroffen, für den Data Lake die NoSQL-Datenbank MongoDB zu verwenden. Diese steht kostenfrei zur Verfügung, kann in Docker-Containern gehostet werden und eignet sich aufgrund ihres schemenlosen Designs gut für die unstrukturierte Speicherung von zahlreichen Daten.
|
||||
|
||||
Für die aufbereiteten Daten wurde ebenfalls aufgrund des Kenntnisstands der Studierenden PostgreSQL ausgewählt. Dies ist eine SQL-Datenbank, die ebenfalls in einem Docker-Container gehostet werden kann und einfach zu bedienen ist. Das Schema sowie weitere Details sind im Kapitel 3.3 nachzulesen.
|
||||
Für die aufbereiteten Daten wird, ebenfalls aufgrund des Kenntnisstands der Studierenden, PostgreSQL ausgewählt. Dies ist eine SQL-Datenbank, die ebenfalls in einem Docker-Container gehostet werden kann und einfach zu bedienen ist. Das Schema sowie weitere Details sind im Kapitel 3.3 nachzulesen.
|
||||
|
||||
Beide Technologien sind kostenfrei zugänglich und können mithilfe verfügbarer Bibliotheken leicht über Python angesprochen werden.
|
||||
|
||||
### Sentimentanalyse
|
||||
Bei der Sentimentanalyse bestand eine kleinere Auswahl an möglichen Ansätzen bereit. Diese stellt unter anderem den KI Anteil des Projektes da, weshalb hier die Analyse mithilfe eines Modell stattfinden sollte.
|
||||
Bei der Sentimentanalyse besteht eine kleinere Auswahl an möglichen Ansätzen bereit. Diese stellt unter anderem den KI Anteil des Projektes da, weshalb hier die Analyse mithilfe eines Modells stattfindet.
|
||||
|
||||
### Verflechtungsanalyse
|
||||
Für das Netzwerktool der Verflechtungsanalyse standen mehrere Optionen zur Auswahl, darunter NetworkX, Scatter Graphen, NetworkX mit Pyvis, Graphviz und Cytoscape. Jedes dieser Frameworks hat seine Vor- und Nachteile. Cytoscape bietet beispielsweise ansprechende Visualisierungen, während Graphviz eine benutzerfreundliche Schnittstelle zur Erstellung von Graphen und Netzwerken bietet. Dennoch ließ sich NetworkX am besten integrieren. Es zeichnet sich durch eine einfache Bedienung aus und kann Metriken direkt berechnen. Im Vergleich dazu erfordert Graphviz, dass der Graph zuerst durch eine Methode in einen NetworkX-Graphen konvertiert wird, was zusätzliche Arbeit bedeutet.
|
||||
Für das Netzwerktool der Verflechtungsanalyse stehen mehrere Optionen zur Auswahl, darunter NetworkX, Scatter Graphen, NetworkX mit Pyvis, Graphviz und Cytoscape. Jedes dieser Frameworks hat seine Vor- und Nachteile. Cytoscape bietet beispielsweise ansprechende Visualisierungen, während Graphviz eine benutzerfreundliche Schnittstelle zur Erstellung von Graphen und Netzwerken bietet. Dennoch ließ sich NetworkX am besten integrieren. Es zeichnet sich durch eine einfache Bedienung aus und kann Metriken direkt berechnen. Im Vergleich dazu erfordert Graphviz, dass der Graph zuerst durch eine Methode in einen NetworkX-Graphen konvertiert wird, was zusätzliche Arbeit bedeutet.
|
||||
|
||||
Die Visualisierung mit Pyvis stellt die schönste Darstellung dar, da dem Nutzer direkte Interaktionen ermöglicht werden. Dieser kann die Nodes weiter auseinander ziehen oder in einzelne Bereiche hineinzoomen. Die Herausforderung besteht jedoch darin, dass bei großen Datenmengen die Generierung erheblich verlangsamt wird und teilweise Minuten dauert. Ein weiterer Nachteil besteht darin, dass Pyvis eine HTML-Seite mit JavaScript erstellt, die nicht nahtlos in das gewählte Visualisierungstool eingebunden werden kann. Es kann lediglich über ein IFrame eingefügt werden, was die Performance erheblich beeinträchtigt.
|
||||
|
||||
Daher wurde die Entscheidung getroffen, auf das native NetworkX zurückzugreifen, das mithilfe eines Plotly Scatter Graphen visualisiert wird. Hierbei werden die Positionen aus dem NetworkX-Graphen ausgelesen und in Punkte für einen Scatter Graphen transformiert.
|
||||
|
||||
### Visualisierung
|
||||
Für das Visualisierungstool standen verschiedene Optionen zur Auswahl, darunter Plotly Dash, Django sowie Webframeworks auf JavaScript-Basis wie Angular oder Vue.js. Da die Kenntnisse im Team hauptsächlich auf Python basieren, wurde sich trotz der vielen Vorteile von JavaScript-Frameworks gegen diese entschieden.
|
||||
Für das Visualisierungstool stehen verschiedene Optionen zur Auswahl, darunter Plotly Dash, Django sowie Webframeworks auf JavaScript-Basis wie Angular oder Vue.js. Da die Kenntnisse im Team hauptsächlich auf Python basieren, wurde sich trotz der vielen Vorteile von JavaScript-Frameworks gegen diese entschieden.
|
||||
|
||||
Schließlich wurde aufgrund des vorhandenen Kenntnisstands und der geringeren Komplexität die Wahl auf Plotly Dash getroffen. Dieses Tool ist darauf ausgelegt, einfache Anwendungen für die Visualisierung von Graphen und Daten zu erstellen. Es kann zudem in einem Container gehostet werden und verwendet Python als Programmiersprache.
|
||||
Schließlich wird aufgrund des vorhandenen Kenntnisstands und der geringeren Komplexität die Wahl auf Plotly Dash getroffen. Dieses Tool ist darauf ausgelegt, einfache Anwendungen für die Visualisierung von Graphen und Daten zu erstellen. Es kann zudem in einem Container gehostet werden und verwendet Python als Programmiersprache.
|
||||
|
||||
Die Einarbeitung in Django wäre erheblich umfangreicher und wurde daher zugunsten von Plotly Dash verworfen.
|
||||
|
||||
### Provisionierung
|
||||
Bei der Provisionierung galt es, zwischen der Nutzung eines der Hyperscaler (AWS, GCP oder Azure) mit ihren kostenfreien Kontingenten oder der Eignung der Server der Universität Südwestfalen zu unterscheiden. Als letzte Alternative bestand die Möglichkeit des Selbsthostings, wobei dies aufgrund des Aufwands, einen eigenen Server einzurichten und abzusichern, wirklich nur als allerletzte Option betrachtet wurde.
|
||||
Bei der Provisionierung gilt es, zwischen der Nutzung eines der Hyperscaler (AWS, GCP oder Azure) mit ihren kostenfreien Kontingenten oder der Eignung der Server der Universität Südwestfalen zu unterscheiden. Als letzte Alternative besteht die Möglichkeit des Selbsthostings, wobei dies aufgrund des Aufwands, einen eigenen Server einzurichten und abzusichern, wirklich nur als allerletzte Option betrachtet wird.
|
||||
|
||||
Nach mehreren Gesprächen ergab sich die Möglichkeit, den Container-Cluster der Fachhochschule zu nutzen, was sich als kostengünstige Option für das Projekt herausstellte. Die Entscheidung fiel daher schnell. Obwohl das Hosting über einen Public Cloud Provider ebenfalls die Anforderungen erfüllt, birgt es das Risiko, dass eine Kreditkarte angegeben wird und bei Fehlverhalten oder falschen Einstellungen in der Cloud erhebliche Kosten verursacht werden können. Zudem ist das Team in Bezug auf Cloud-Ressourcen begrenzt geschult. Daher wurde eindeutig die Lösung des FH-Clusters bevorzugt.
|
||||
|
||||
## Proof-of-Concept mit Jupyter Notebooks
|
||||
Die in diesem Abschnitt beschriebene Recherche wurde am Projektbeginn durchgeführt in dem auf Basis der Prämissen für die einzelnen kategorien Jupyternotebooks erstellt wurden um die Technologien zu evaluieren und einen Eindruck für den Aufwand des Prjektes zu erhalten.
|
||||
Die in diesem Abschnitt beschriebene Recherche ist am Projektbeginn durchgeführt worden in dem auf Basis der Prämissen für die einzelnen kategorien Jupyternotebooks erstellt wurden um die Technologien zu evaluieren und einen Eindruck für den Aufwand des Prjektes zu erhalten.
|
||||
|
||||
Dieses vorgehen bezeichnet man als Proof-of-Concept (POC) und reduziert spätere Arbeitsaufwände die entstehen, wenn sich durch fehlende evaluation für Falschen Technologien oder Konzepte entschieden wurde.
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
# Netzwerkanalyse (Tim Ronneburg)
|
||||
In diesem Abschnitt wird die Umsetzung der Netzwerkanalyse behandelt, die den Aufbau und die Analyse eines Netzwerks gemäß den im Kapitel 3.5 erwähnten Verflechtungsanalysen betrifft.
|
||||
|
||||
Wie bereits im vorherigen Abschnitt erläutert, kam im Rahmen des Projekts Plotly Dash zum Einsatz, ein Tool, das für die Erstellung von Dashboards mit Python entwickelt wurde. Zusätzlich wurde dieses Tool um die Bibliothek NetworkX erweitert, um Netzwerkgraphen darzustellen.
|
||||
Wie bereits im vorherigen Abschnitt erläutert, kommt im Rahmen des Projekts Plotly Dash zum Einsatz, ein Tool, das für die Erstellung von Dashboards mit Python entwickelt wurde. Zusätzlich wird dieses Tool um die Bibliothek NetworkX erweitert, um Netzwerkgraphen darzustellen.
|
||||
|
||||
Die Netzwerkanalyse wurde an verschiedenen Stellen im Projekt integriert. Zunächst auf der Hauptseite, wo der gesamte Graph dargestellt wird, dann auf der Unternehmensdetailseite zur Untersuchung der Verflechtungen aus der Perspektive des ausgewählten Unternehmens, sowie auf der Personendetailseite aus dem gleichen Grund wie auf der Unternehmensseite.
|
||||
Die Netzwerkanalyse wird an verschiedenen Stellen im Projekt integriert. Zunächst auf der Hauptseite, wo der gesamte Graph dargestellt wird, dann auf der Unternehmensdetailseite zur Untersuchung der Verflechtungen aus der Perspektive des ausgewählten Unternehmens, sowie auf der Personendetailseite aus dem gleichen Grund wie auf der Unternehmensseite.
|
||||
|
||||
Quellcode-seitig wurden mehrere Dateien für die Erstellung des Netzwerks erstellt. Im Verzeichnis "UI" befindet sich ein Unterordner "utils" mit dem weiteren Unterordner "networkx", in dem die Dateien zu finden sind:
|
||||
Quellcode-seitig werden mehrere Dateien für die Erstellung des Netzwerks erzeugt. Im Verzeichnis "UI" befindet sich ein Unterordner "utils" mit dem weiteren Unterordner "networkx", in dem die Dateien zu finden sind:
|
||||
- network_2d.py
|
||||
- network_3d.py
|
||||
- network_base.py
|
||||
@ -13,7 +13,7 @@ Quellcode-seitig wurden mehrere Dateien für die Erstellung des Netzwerks erstel
|
||||
|
||||
Die ersten beiden Dateien enthalten den Quellcode für die Visualisierung des Netzwerks mithilfe eines Scatterplots in 2D oder 3D. Die Datei "base" umfasst die Initialisierung des Netzwerks anhand der ausgewählten Daten. Hierbei werden gleichzeitig die relevanten Metriken gebildet. In der Datei "data" sind verschiedene Funktionen enthalten, die dazu dienen, Daten abzurufen, welche anschließend dem Netzwerk zugeführt werden können.
|
||||
|
||||
Die "base"-Datei legt somit den Grundstein für das Netzwerk, indem sie nicht nur die Struktur initialisiert, sondern auch wichtige Metriken generiert. Die "data"-Datei hingegen stellt eine Schnittstelle dar, durch die das Netzwerk mit den benötigten Daten versorgt wird, wobei diverse Funktionen zur Datenabfrage integriert sind
|
||||
Die "base"-Datei legt somit den Grundstein für das Netzwerk, indem sie nicht nur die Struktur initialisiert, sondern auch wichtige Metriken generiert. Die "data"-Datei hingegen stellt eine Schnittstelle dar, durch die das Netzwerk mit den benötigten Daten versorgt wird, wobei diverse Funktionen zur Datenabfrage integriert sind.
|
||||
|
||||
Der Ablauf gestaltet sich unter anderem wie folgt: Wenn ein Nutzer die Startseite aufruft, werden bestimmte Funktionen in "networkx_data" ausgeführt, um die Datenbank nach den voreingestellten Informationen zu durchsuchen. Diese Daten werden aufbereitet und als Pandas DataFrame an "network_base" übergeben, wo mithilfe des Frameworks NetworkX ein Graph erstellt wird. In diesem Graph-Element sind die Positionen der Nodes enthalten. Zusätzlich werden Methoden bereitgestellt, um Standard-Netzwerkanalysemetriken zu berechnen. Für dieses Projekt handelt es sich dabei um die Metriken "degree", "betweenness", "closeness" und "pagerank".
|
||||
|
||||
@ -52,7 +52,7 @@ Ein Unterschied zur Unternehmensseite besteht jedoch: Auf der Personen-Seite wer
|
||||
<!-- Bild Personen Seite -->
|
||||
|
||||
## Ausgelassene Features
|
||||
Im Kapitel 3.5 wurden neben den hier beschriebenen Funktionen auch weitere Aspekte betrachtet und evaluiert, insbesondere im Hinblick auf die Darstellung und Analyse unternehmerischer Kennzahlen wie EBIT, Umsatz, Gewinn, Aktienkurs usw. Leider konnten im Zuge der Datenerfassung die hierfür benötigten Daten nicht zuverlässig und in ausreichender Menge generiert werden. Dies führte dazu, dass diese Funktionen aus dem Verflechtungsscope herausgenommen wurden.
|
||||
Im Kapitel 3.5 wurden neben den hier beschriebenen Funktionen auch weitere Aspekte betrachtet und evaluiert, insbesondere im Hinblick auf die Darstellung und Analyse unternehmerischer Kennzahlen wie EBIT, Umsatz, Gewinn, Aktienkurs usw. . Leider konnten im Zuge der Datenerfassung die hierfür benötigten Daten nicht zuverlässig und in ausreichender Menge generiert werden. Dies führte dazu, dass diese Funktionen aus dem Verflechtungsscope herausgenommen wurden.
|
||||
|
||||
Ein weiterer Herausforderungspunkt war die schwierige und performante Einbindung des Graphen in Plotly Dash. Die Generierung des Graphen bei größeren Datenmengen dauerte mit dem ursprünglich ausgewählten Tool deutlich länger, als es in den Proof-of-Concepts den Anschein erwecken ließ. Daher erfolgte eine Umstellung auf eigens erstellte Scatter Plots, für die ein eigener Algorithmus entwickelt werden musste, der die Positionen aus dem NetworkX ausließt und in Punkte für den Scatter Graphen formatiert. Dies hatte einen deutlichen Einfluss auf die Entwicklung und führte zu Verzögerungen.
|
||||
|
||||
|
Reference in New Issue
Block a user