Chapter 2 of the documentation completed.

This commit is contained in:
Tim 2024-01-03 13:10:13 +01:00
parent 3151b5265b
commit 4b800cc523
4 changed files with 112 additions and 31 deletions

View File

@ -1,5 +1,7 @@
# Recherche zu benötigten Techniken (Tim Ronneburg) # Recherche zu benötigten Techniken (Tim Ronneburg)
In diesem Kapitel werden die Prämissen behandelt welche zu Beginn des Projektes festgelegt und anhand deren eine Auswahl an benötigten Techniken getroffen wurde. Auf die hier genannten Werkzeuge und Technologien wird im späteren Verlauf an den jeweiligen Stellen spezifischer eingegangen. In diesem Kapitel werden die Prämissen behandelt welche zu Beginn des Projektes festgelegt und anhand deren eine Auswahl an benötigten Techniken getroffen wurde.
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 wurden verschiedene Gesichtspunkte berücksichtigt. Insbesondere wurden folgende Fragen im Fokus betrachtet:
@ -44,57 +46,133 @@ Unter Berücksichtigung der allgemeinen Vorgaben lauten die Prämissen für die
- Die Technologie sollte mit Python kompatibel sein. - Die Technologie sollte mit Python kompatibel sein.
### Text Mining ### Text Mining
Die Kategorie Text Mining beschäftigt sich mit dem sammeln von Unternehmensinformationen die für das Projekt relevant sind. Diese Daten werden dann im Abschnitt Datenspeicherung gesichert und der Projektgruppe zur Verfügung gestellt. Ähnlich wie im vorangegangenen Kapitel ist die Thematik im Kapitel 3.2 und 4.3 - 4.4 tiefer behandelt. Die Text Mining-Kategorie konzentriert sich auf das Sammeln von relevanten Unternehmensinformationen für das Projekt. Diese Daten werden im Abschnitt zur Datenspeicherung gesichert und der Projektgruppe zur Verfügung gestellt. Ähnlich wie im vorherigen Kapitel wurde dieses Thema in den Kapiteln 3.2 sowie 4.3 bis 4.4 eingehender behandelt.
Für diesen bereich muss ein Werkzeug gefunden werden welches APIs aus dem Internet abfragt und die Daten sichert beziehungsweise Transformiert. Unter anderem die Unternehmensdaten aus dem Unternehmensregister für die Netzwerkanalyse und die Stammdaten, als auch diverse Nachrichten APIs für die Stimmungsanalyse zum jeweiligen Unternehmen. In diesem Bereich ist es erforderlich, ein Werkzeug zu finden, das APIs aus dem Internet abfragt und die Daten entweder sichert oder transformiert. Dies betrifft insbesondere Unternehmensdaten aus dem Unternehmensregister für die Netzwerkanalyse, Stammdaten sowie verschiedene Nachrichten-APIs für die Stimmungsanalyse bezogen auf jedes einzelne Unternehmen.
Besonders bei dem gewinnen der Daten aus dem Unternehmensregister besteht die schwiriegkeit die Daten in ein einheitliches Format zu transferieren, da die Informationen als Jahresbericht der Unternehmen vorliegen die von jedem Unternehmen in eigener Form erstellt werden. Das Tool muss also die die Berichte auswerten können und die gesuchten Daten sammeln auch wenn diese mal in einer Tabelle oder im Fließtext vorkommen. Besonders beim Extrahieren von Daten aus dem Unternehmensregister besteht die Herausforderung darin, die Informationen in ein einheitliches Format zu überführen. Die Schwierigkeit ergibt sich aus der Tatsache, dass die Informationen als Jahresberichte vorliegen, die von jedem Unternehmen in eigener Form erstellt werden. Das Tool muss daher in der Lage sein, die Berichte zu analysieren und die gesuchten Daten zu extrahieren, auch wenn sie in Tabellen oder Fließtexten vorliegen.
Zusammengefasst sind die Kriterien an die Technolgie: Zusammengefasst sind die Kriterien für die Technologie:
- Abfragen und Auswerten vom Unternehmensregister und Nachrichten APIs
- Aufbereiten der Daten in ein einheitliches Format - Abfrage und Auswertung des Unternehmensregisters und von Nachrichten-APIs
- Sichern der Daten in einer Datenbank nach Vorgabe des Datenbankschemas - Aufbereitung der Daten in ein einheitliches Format
- Sicherung der Daten in einer Datenbank gemäß dem vorgegebenen Datenbankschema
- Die Technologie sollte kostenlos und frei verfügbar sein. - Die Technologie sollte kostenlos und frei verfügbar sein.
- Die Technologie sollte mit Python kompatibel sein. - Die Technologie sollte mit Python kompatibel sein.
### Datenspeicherung ### Datenspeicherung
- No SQL DB für den Datalake um alle Infromationen zu sammeln Für die Datenspeicherung ist die Entwicklung eines Schemas erforderlich, das nicht nur die durch Text Mining gewonnenen Daten sichert, sondern auch während der Analyse generierte Daten speichert. Zudem müssen die Daten für die Analyse und die Programm-Aufbereitung abrufbar sein. Dieser Aspekt wird im Kapitel 3.3 genauer behandelt.
- SQL Datenbank um die Daten aus dem Data Lake in eine Struktur zu packen
- Erfahrung der Teilnehmer berücksichtigen Es wird also nach einer oder mehreren Datenbanken gesucht, die folgende Anforderungen abdecken:
- Kostenfrei
- Auswahl einer Datenbank als Data Lake für das Text Mining.
- Auswahl einer Datenbank für die transformierten Daten aus dem Data Lake.
- Abwägung zwischen NoSQL- und SQL-Datenbanken.
- Die Technologie sollte kostenlos und frei verfügbar sein.
- Die Technologie sollte mit Python kompatibel sein
### Sentimentanalyse ### Sentimentanalyse
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.
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.
Die Prämissen für die Lösungstechnologie lauten:
- Auswahl einer Technologie zur automatisierten Auswertung von Unternehmensdaten in Nachrichten.
- Automatisierte Analyse der Stimmung in Bezug auf ein Unternehmen in den Nachrichten.
- Übersetzen der Texte ins Englische
- Standardisierung der Unternehmensnamen.
- Die Technologie sollte kostenlos und frei verfügbar sein.
- Die Technologie sollte mit Python kompatibel sein
### Verflechtungsanalyse ### Verflechtungsanalyse
- Kombinierbar mit dem Visualisierungstool Die Verflechtungsanalyse konzentriert sich auf die Auswertung von Daten in Form eines Netzwerks, in dem Unternehmen und Akteure mit ihren Verbindungen zu anderen dargestellt werden. Ziel ist es, Gruppierungen zu identifizieren, die für weitere Analysen relevant sind. Diese Aspekte werden in den Kapiteln 3.5 und 4.5.2 näher erläutert.
- Einfach zu bedienen
- Python bibliothek Es wird daher nach einem Werkzeug gesucht, das die Akteure mit ihren Beziehungen visualisiert. Dabei ist es wichtig, dass das Tool die Positionen der Knoten und Kanten berechnet, um Überlappungen zu vermeiden. Bei großen Datenmengen können Performanzprobleme auftreten, die zu einer längeren Generierung führen. Das Tool sollte darauf ausgelegt sein, solche Probleme zu minimieren. Darüber hinaus muss es Metriken für die Analyse der Beziehungen berechnen können. Zusätzlich soll die Visualisierung des Tools in die grafische Benutzeroberfläche der Anwendung integrierbar sein.
- performant
- kostenfrei Demnach ergeben sich folgende Anforderungen:
- Integration mit dem Visualisierungstool.
- Performante Berechnung der Positionen der Knoten und Kanten.
- Berechnung der klassischen Metriken für die Netzwerkanalyse.
- Visualisierung des Netzwerkgeflechts.
- Benutzerfreundlichkeit.
- Die Technologie sollte kostenlos und frei verfügbar sein.
- Die Technologie sollte mit Python kompatibel sein
### Visualisierung ### Visualisierung
- möglichst python basierend Nachdem sich die anderen Bereiche um die Zulieferung und Aufbereitung der Daten gekümmert haben, steht in der Visualisierungsphase die Auswahl eines Frameworks für die ansprechende Darstellung der Ergebnisse im Fokus. Dies beinhaltet die Auswahl eines Frontends, das in der Lage ist, Daten in ansprechenden Grafiken zu präsentieren. Das Frontend soll auf Python basieren und webserverfähig sein. Zusätzlich sollte es benutzerfreundlich sein und nahtlos in die Netzwerkanalyse integriert werden können.
- Einfach zu bedienen
- Möglichkeit Diagramme und Netzwerke darzustellen
- kostenfrei
Die formulierten Anforderungen sind demnach:
- Auswahl eines benutzerfreundlichen Frontends.
- Das Framework sollte die Erstellung von Grafiken ermöglichen.
- Das Framework sollte die Darstellung eines Netzwerks unterstützen.
- Das Framework sollte webserverfähig sein.
- Das Framework sollte auf Python basieren.
- Die Technologie sollte kostenlos und frei verfügbar sein.
### Provisionierung ### Provisionierung
- Kombinierbar mit Docker/Container 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.
- Kostenfrei
- Zugriff übers Internet für alle Projektteilnehmer
- Nicht zu Komplex
Daraus ergeben sich die folgenden Prämissen:
- Auswahl einer Technologie für das Hosting mit Docker/Container.
- Kostenfreiheit.
- Zugriff über das Internet für alle Projektteilnehmer mit Passwortschutz.
## Lösungsansätze: Überblick über relevante Technologien und Werkzeuge ## Lösungsansätze: Überblick über relevante Technologien und Werkzeuge
In diesem Abschnitt werden zu den Anforderungen die diskutierten Optionen vorgestellt und betrachtet. 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.
Für Visualisierungs tool standen die Optionen Ploty Dash, Django oder ein Webframework auf Javascript basis wie Angular oder Vue.js zur Auswahl. ### 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.
Für das Netzwerktool gab es die Wahl zwischen NetzwerkX, NetzwerkX mit pyviz, Graphviz und Cytoscape. 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.
Für die Provisionierung galt es unterscheiden ob einer der Hyperscaler AWS, GCP oder Azure mit deren kostenfreien Kontingenten zum Einsatz kommen sol oder ob die Server der Universität Südwestfahlen dafür geeignet sind. 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.
### 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 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.
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.
### 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.
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.
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.
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.
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 ## Proof-of-Concept mit Jupyter Notebooks
Bevor das Projekt startete wurde ein Proof-of-Concept (POC) durchgeführt um die Auswahl der Technologien zu evaluieren und den Aufwand abzuschätzen. 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.
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.
Die Jupyternotebooks finden sich im Projekt unter den Ordnern
- research
- Jupyter

View File

@ -0,0 +1,2 @@
# Grundlagen und Basistechniken (Tim Ronneburg)
In diesem Abschnitt sind die Zwischenberichte des Projekts zu finden. In diesen Berichten wurde die Recherche zu den einzelnen Kategorien durchgeführt und in den entsprechenden Jupyter Notebooks im Git-Repository bewertet. Dieses Kapitel präsentiert eine detaillierte Analyse der zuvor beschriebenen Recherche mit zusätzlichen Begründungen und Erläuterungen, warum bestimmte Technologien, Konzepte und Vorgehensweisen für das Projekt ausgewählt wurden.

View File

@ -1,4 +1,4 @@
# Netzwerkanalyse # Netzwerkanalyse (Tim Ronneburg)
Der Netzwerkanalyse geht das Kapitel 3.5 Verflechtungsanalyse vorraus indem die Grundlagen für den Aufbau eines Netzwerks sowie dessen Analyse vermittelt wurde. in diesem Abschnitt wird sich mit der Realisierung dieses Netzwerks und dem Erkenntnis Gewinn beschäftigt. Der Netzwerkanalyse geht das Kapitel 3.5 Verflechtungsanalyse vorraus indem die Grundlagen für den Aufbau eines Netzwerks sowie dessen Analyse vermittelt wurde. in diesem Abschnitt wird sich mit der Realisierung dieses Netzwerks und dem Erkenntnis Gewinn beschäftigt.
Wie im vorrangegangenen Abschnitt beschrieben kam in dem Projekt Plotly Dash zum Einsatz, ein Tool mit welches für die Erstellung von Dashbord mit Python ausgelegt ist. Zusätzlich wurde diese Tool mit der Bibliothek NetworkX erweitert um die Netzwerkgraphen abzubilden. Wie im vorrangegangenen Abschnitt beschrieben kam in dem Projekt Plotly Dash zum Einsatz, ein Tool mit welches für die Erstellung von Dashbord mit Python ausgelegt ist. Zusätzlich wurde diese Tool mit der Bibliothek NetworkX erweitert um die Netzwerkgraphen abzubilden.

View File

@ -30,6 +30,7 @@ Diese sind, um Industriestandards zu entsprechen, auf Englisch gehalten.
:numbered: :numbered:
Ergebnisse/Abschlussbericht_und_Praesentation/TiRo/S2.md Ergebnisse/Abschlussbericht_und_Praesentation/TiRo/S2.md
Ergebnisse/Abschlussbericht_und_Praesentation/TiRo/S3.md
Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS
Ergebnisse/Abschlussbericht_und_Praesentation/TrNo/S4-2.md Ergebnisse/Abschlussbericht_und_Praesentation/TrNo/S4-2.md
Ergebnisse/Abschlussbericht_und_Praesentation/TrNo/S4-3-1.md Ergebnisse/Abschlussbericht_und_Praesentation/TrNo/S4-3-1.md