Ich aktualisiere das Projekt mal eben, das es auch passt.
Nach viel hin und hier, veröffentliche ich im Moment, bevor das trainingsmodel und das KI Modell an der reihe ist, die Vor-verarbeitungsabläufe.
Es hat einen einfachen Grund.
Die Daten müssen, in bestimmten Schritten vorverarbeitet werden, bevor man ein Gewünschtes KI Model mit den Datensätzen Trainiert.
Im Moment, besteht der Ablauf der vor-verarbeitung noch aus 3 python codes.
Ziel ist es, gewissen Schritte, ggf in einem code zu implementieren. Aber vorangig ist jetzt erst einmal, die abläufe der 3 Schritte so zu optimieren, das es je nach system auch Große Datensätze in vorm von mehreren GB auch auf etwas schwächerer Hardware verarbeitet werden können.
Das Problem ist, das ca. 100 mb an Textdatensätzen beim cleanen im Normalfall 1GB Ram verbrauch haben.
Natürlich je nach Umfang der Vorverarbeitung.
Das ist im moment auch der Grund, warum ich 3 Codes zu Verarbeitung nutzte.
split.py
Die Split.py ist dafür notwendig Große Textdaten in gleichmäßig aufgeteilte Textdatein seiner Wahl aufzuteilen. Da muss man herrausfinden, was die optimale Größe ist, mit der man ohne das der Ram auf seine grenzen stößt mit schritt 2 weiter machen kann.
clear.py
Die clear.py ist der erste clear Durchlauf.
Der Code nimmt nacheinander, alle Textdaten die zuvor mit der split.py erstellt wurden im Verzeichnis und arbeitet sie ab. Am ende Speichert der code 2 neue Text Dateien. 1x die mit denn bereinigten Wörtern und 1x eine Textdatei mit allen entfernten Zeichen.
Die bereinigten Wörter, werden wieder in einer großen Textdatei ausgegeben.
Entfernt werden:
Dafür werden auch erst einmal nur die re und BeautifulSoup Bibliotheken benötigt
Das sollte die Größe ja nach Umfang der Ursprungsdatein noch einmal ordentlich schrumpfen lassen.
Meine Imput Datei, mit der ich denn test gestartet habe, war knapp 46GB Groß und ist jetzt bei 31,8GB
Nach der ersten vor-verarbeitung war das, mein Ergebnis:
Anzahl entfernter Zeichen: 4301434
Gesamtzahl der Zeichen: 31521096824
Die Gesamtzahl der Zeichen definiert, was noch enthalten ist.
Entfernt, erklärt sich von selbst.
Anschließend kann man noch einmal die Split.py nutzen um die Dateien noch einmal in die gewünschte Größen zu teilen. Man kann noch einmal mit clear.py drüber wenn man unbedingt will, oder direkt mit der
final_clear.py starten.
Da empfehle ich UNBEDINGT wenn man keine 100te von GB Ram hat, die Split.py zu nutzen.
Die final_clear.py ist ein wenig umfangreicher.
hier habe ich heute morgen einen kleinen Codefehler behoben.
Und zwar, werden jetzt alle Textdaten nacheinander bearbeitet und in der SQLite datenbank gespeichert.
Zuvor hat der code zwar auch alle Textdatensätze bearbeitet aber auch die gesamten Daten in den Ram geladen.
Hier ist die Ausgangsdatei der SQLite Datenbank, im schnitt doppelt bis 3 mal so Groß wie die Textdatei.
Im Moment ist dies ein Pre-Alpha Projekt
Du kannst dir den/die Codes jederzeit auf der Github Seite downloaden.
Aber beachte, das es im Moment experimentell ist.
Wenn du nicht weißt, was du tust, lass es lieber.
hier gehts zu den Pre-alpha Alpha Daten
https://github.com/danny9212/Alpha-A
Daten für die Verarbeitung gibt es Legal auf vielen verschiedenen Internet seiten.
https://de.wikipedia.org/wiki/Wikip...nload#Herunterladen_aller_Seiten_als_XML-Dump
https://www.gutenberg.org/
um einmal 2 zu Inspiration zu nennen.
Nach viel hin und hier, veröffentliche ich im Moment, bevor das trainingsmodel und das KI Modell an der reihe ist, die Vor-verarbeitungsabläufe.
Es hat einen einfachen Grund.
Die Daten müssen, in bestimmten Schritten vorverarbeitet werden, bevor man ein Gewünschtes KI Model mit den Datensätzen Trainiert.
Im Moment, besteht der Ablauf der vor-verarbeitung noch aus 3 python codes.
Ziel ist es, gewissen Schritte, ggf in einem code zu implementieren. Aber vorangig ist jetzt erst einmal, die abläufe der 3 Schritte so zu optimieren, das es je nach system auch Große Datensätze in vorm von mehreren GB auch auf etwas schwächerer Hardware verarbeitet werden können.
Das Problem ist, das ca. 100 mb an Textdatensätzen beim cleanen im Normalfall 1GB Ram verbrauch haben.
Natürlich je nach Umfang der Vorverarbeitung.
Das ist im moment auch der Grund, warum ich 3 Codes zu Verarbeitung nutzte.
split.py
Die Split.py ist dafür notwendig Große Textdaten in gleichmäßig aufgeteilte Textdatein seiner Wahl aufzuteilen. Da muss man herrausfinden, was die optimale Größe ist, mit der man ohne das der Ram auf seine grenzen stößt mit schritt 2 weiter machen kann.
clear.py
Die clear.py ist der erste clear Durchlauf.
Der Code nimmt nacheinander, alle Textdaten die zuvor mit der split.py erstellt wurden im Verzeichnis und arbeitet sie ab. Am ende Speichert der code 2 neue Text Dateien. 1x die mit denn bereinigten Wörtern und 1x eine Textdatei mit allen entfernten Zeichen.
Die bereinigten Wörter, werden wieder in einer großen Textdatei ausgegeben.
Entfernt werden:
# Rauschen
rauschen_pattern = r'\b(?!http|www|html|xml|https)\w{1,2}\b'
# YouTube-Link-Muster
youtube_link_pattern = r'(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=|embed\/|v\/)?([a-zA-Z0-9_\-]+)'
# Entfernen von unnötigen Leerzeichen, einzelnen Buchstaben und Rauschen innerhalb der Wörter
rauschen_pattern = r'\b(?!http|www|html|xml|https)\w{1,2}\b'
# YouTube-Link-Muster
youtube_link_pattern = r'(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=|embed\/|v\/)?([a-zA-Z0-9_\-]+)'
# Entfernen von unnötigen Leerzeichen, einzelnen Buchstaben und Rauschen innerhalb der Wörter
Dafür werden auch erst einmal nur die re und BeautifulSoup Bibliotheken benötigt
Das sollte die Größe ja nach Umfang der Ursprungsdatein noch einmal ordentlich schrumpfen lassen.
Meine Imput Datei, mit der ich denn test gestartet habe, war knapp 46GB Groß und ist jetzt bei 31,8GB
Nach der ersten vor-verarbeitung war das, mein Ergebnis:
Anzahl entfernter Zeichen: 4301434
Gesamtzahl der Zeichen: 31521096824
Die Gesamtzahl der Zeichen definiert, was noch enthalten ist.
Entfernt, erklärt sich von selbst.
Anschließend kann man noch einmal die Split.py nutzen um die Dateien noch einmal in die gewünschte Größen zu teilen. Man kann noch einmal mit clear.py drüber wenn man unbedingt will, oder direkt mit der
final_clear.py starten.
Da empfehle ich UNBEDINGT wenn man keine 100te von GB Ram hat, die Split.py zu nutzen.
Die final_clear.py ist ein wenig umfangreicher.
1. Importieren der benötigten Module:
- os
- sqlite3
- re
- textblob
- sklearn.feature_extraction.text
- sklearn.cluster
- bs4
2. Festlegen der Dateipfade:
- Verzeichnispfad für die Textdateien
- Ausgabedatei für den kombinierten Text
- Pfad zur SQLite-Datenbank
3. Erstellen einer leeren Liste für den kombinierten Text
4. Durchsuchen des Verzeichnisses und Einlesen des Inhalts jeder Textdatei in die Liste für den kombinierten Text
5. Schreiben des kombinierten Texts in eine Ausgabedatei
6. Herstellen einer Verbindung zur SQLite-Datenbank
7. Erstellen der Tabelle für Wörter und Sentiment-Analyse, falls sie nicht existieren
8. Definieren von Mustern für Rauschen und YouTube-Links
9. Extrahieren der Wörter aus dem kombinierten Text und Einfügen in die Datenbank:
- Analyse und Entfernung von HTML-Tags
- Entfernung von Leerzeichen und Rauschen
- Entfernung von YouTube-Links
- Aufteilen des Texts in einzelne Wörter
- Einfügen der Wörter in die Datenbank
10. Commit der Änderungen in der Datenbank
11. Durchführen der Sentiment-Analyse mit TextBlob:
- Abrufen der Wörter aus der Datenbank
- Durchführen der Sentiment-Analyse für jedes Wort mit TextBlob
- Einfügen der Sentiment-Ergebnisse in die Datenbank
12. Commit der Änderungen in der Datenbank
13. Festlegen der Anzahl der Cluster für K-Means-Clustering
14. Überprüfen, ob genügend Texte vorhanden sind, um die angegebene Anzahl von Clustern zu unterstützen:
- Wenn nicht genügend Texte vorhanden sind:
- Ausgabe einer Fehlermeldung
15. TF-IDF-Vektorisierung der Texte
16. Durchführen des K-Means-Clustering:
- Anwendung des K-Means-Algorithmus auf die TF-IDF-Matrix
- Zuweisung der Cluster-Labels für jeden Text
17. Anzeigen der Ergebnisse:
- Für jeden Text:
- Ausgabe des Texts und des zugewiesenen Clusters
- os
- sqlite3
- re
- textblob
- sklearn.feature_extraction.text
- sklearn.cluster
- bs4
2. Festlegen der Dateipfade:
- Verzeichnispfad für die Textdateien
- Ausgabedatei für den kombinierten Text
- Pfad zur SQLite-Datenbank
3. Erstellen einer leeren Liste für den kombinierten Text
4. Durchsuchen des Verzeichnisses und Einlesen des Inhalts jeder Textdatei in die Liste für den kombinierten Text
5. Schreiben des kombinierten Texts in eine Ausgabedatei
6. Herstellen einer Verbindung zur SQLite-Datenbank
7. Erstellen der Tabelle für Wörter und Sentiment-Analyse, falls sie nicht existieren
8. Definieren von Mustern für Rauschen und YouTube-Links
9. Extrahieren der Wörter aus dem kombinierten Text und Einfügen in die Datenbank:
- Analyse und Entfernung von HTML-Tags
- Entfernung von Leerzeichen und Rauschen
- Entfernung von YouTube-Links
- Aufteilen des Texts in einzelne Wörter
- Einfügen der Wörter in die Datenbank
10. Commit der Änderungen in der Datenbank
11. Durchführen der Sentiment-Analyse mit TextBlob:
- Abrufen der Wörter aus der Datenbank
- Durchführen der Sentiment-Analyse für jedes Wort mit TextBlob
- Einfügen der Sentiment-Ergebnisse in die Datenbank
12. Commit der Änderungen in der Datenbank
13. Festlegen der Anzahl der Cluster für K-Means-Clustering
14. Überprüfen, ob genügend Texte vorhanden sind, um die angegebene Anzahl von Clustern zu unterstützen:
- Wenn nicht genügend Texte vorhanden sind:
- Ausgabe einer Fehlermeldung
15. TF-IDF-Vektorisierung der Texte
16. Durchführen des K-Means-Clustering:
- Anwendung des K-Means-Algorithmus auf die TF-IDF-Matrix
- Zuweisung der Cluster-Labels für jeden Text
17. Anzeigen der Ergebnisse:
- Für jeden Text:
- Ausgabe des Texts und des zugewiesenen Clusters
hier habe ich heute morgen einen kleinen Codefehler behoben.
Und zwar, werden jetzt alle Textdaten nacheinander bearbeitet und in der SQLite datenbank gespeichert.
Zuvor hat der code zwar auch alle Textdatensätze bearbeitet aber auch die gesamten Daten in den Ram geladen.
Hier ist die Ausgangsdatei der SQLite Datenbank, im schnitt doppelt bis 3 mal so Groß wie die Textdatei.
Im Moment ist dies ein Pre-Alpha Projekt
Du kannst dir den/die Codes jederzeit auf der Github Seite downloaden.
Aber beachte, das es im Moment experimentell ist.
Wenn du nicht weißt, was du tust, lass es lieber.
hier gehts zu den Pre-alpha Alpha Daten
https://github.com/danny9212/Alpha-A
Daten für die Verarbeitung gibt es Legal auf vielen verschiedenen Internet seiten.
https://de.wikipedia.org/wiki/Wikip...nload#Herunterladen_aller_Seiten_als_XML-Dump
https://www.gutenberg.org/
um einmal 2 zu Inspiration zu nennen.
Anhänge
Zuletzt bearbeitet: