Skip to content

mullrich192/BA_text_classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Textklassifizierung - Topic Modeling

Bachelorarbeit 2023

Dies ist ein Repository, welches im Rahmen der Bachelorarbeit "Ontologie-basierte Schlagwortextraktion zur Verbesserung des Korpus für die automatische Dokumentklassifizierung des Discovery Services LIVIVO von ZB MED" entwickelt wurde. Es besteht aus mehreren Jupyter-Notebooks auf Basis der Programmiersprache Python, sowie aus PostgreSQL-Befehlen, die im Unterordner "code" zu finden sind. Die Datengrundlage besteht aus einer Datenbank, die mehrere Millionen Publikationen aus LIVIVO enthält und wurde für diese Arbeit zur Verfügung gestellt.

Im Folgenden erfolgt eine Beschreibung der Thematik, sowie der Code-Dateien, um die Ergebnisse und Visualisierungen in der Bachelorarbeit reproduzieren zu können.

  1. Beschreibung Thematik
  2. Ordnerstruktur
  3. Datenquellen
  4. Durchführung
  5. Beschreibung Code
  6. Darstellung Evaluierung LDA


Das Haupthema der Bachelorarbeit ist es, den Datensatz für eine Textklassifizierung aufzubereiten. Das Ziel besteht darin, die Publikationen in ihre Thematiken einzuordnen. Die Aufbereitung besteht aus folgenden Schritten:

  • Spracherkennung der Publikationen
  • Aufbereiten eines Thesaurus im RDF-Format zu einem Nachschlage-Wörterbuch
  • Schlagwortextraktion aus Titel und Abstract der Publikationen mittels der Terme im Nachschlage-Wörterbuch


  • code
    beinhaltet alle Code-Dateien, die mit der run.sh-Datei ausgeführt werden können
  • further analysis
    beinhaltet Code-Dateien für Analysezwecke und Experimente
    • comparison: Vergleiche mit der Benchmark
    • experiments: Klassifizierung LDA mit 5 Klassen, Evaluation der Schlagwortextraktion
    • visualization: Visualisierungen zur Analyse der Ergebnisse




Für die Ausführung der Skripte wird die Einrichtung eines virtual environments empfohlen. Um die requirements.txt innerhalb der virtuellen Umgebung zu installieren, sollte der Paketmanager [pip] (https://pip.pypa.io/en/stable/) verwendet werden.

pip install requirements.txt

Nach Installation der benötigten Bibliotheken kann die run.sh-Datei im Terminal aufgerufen werden, um die Dateien im Unterordner "code" auszuführen. Vorraussetzung für das erfolgreiche Durchführen des Skripts ist eine leere Datenbank mit den Schemen "ke_stage" & "publ". Im Weiteren muss die Datentabelle "Mesh-Mainheadings" in die Datenbank eingepflegt werden. Diese wurde für die Arbeit zu Verfügung gestellt.

sh run.sh


Die folgende Tabelle beschreibt die Funktionen der einzelnen Dateien und die gegebenenfalls erforderlichen Anpassungen im Code.

Dateiname Beschreibung Anpassungen Variablen Input Output
01_create-dataset.ipynb Mit diesem Code wird ein kleinerer Korpus für Testzwecke aus der Datenbank erstellt. Hierzu wird ein ausgewogenes Datenset mit gleicher Anzahl an Einträgen aller Averbis-Klassen definiert und wieder in die Datenbank geschrieben. Mit dieser Variable wird ein Limit der Datensätze gesetzt lim Rohdaten (ba_corpus_2) corpus_small_train
In den Datensätzen kann zwischen einem Trainingsdatenset und ein Datenset, welches die MeSH-Termini von Averbis beinhaltet, unterschieden werden. Hierzu wird die Angabe als Typ mitgegeben. train, key_eval
02_language_detection.ipynb Mit diesem Code wird eine Spracherkennung der Dokumente im Korpus durchgeführt. - - corpus_small_train corpus_language
03_join_language.sql Mit diesem PostqreSQL-Befehl wird die Tabelle der Sprachen-Zuordnung mit dem Trainigskorpus verbunden. - - corpus_small_train, corpus_language join_language
04_get_AGROVOC_data.ipynb Mit diesem Code wird aus dem AGROVOC-Thesaurus ein Dictionary aus Term und zugehöriger ID erstellt. Hier muss vor Ausführung die nt-Datei unter folgendem Link heruntergeladen werden: https://data.apps.fao.org/catalog/dcat/agrovoc-2023-07. Die Pfade, in dem die Datei abliegt, sowie zur Speicherung der Pickle-Dateien müssen angepasst werden. path, save_path nt-Datei AGROVOC Pickle-Datei mit Dictionary für die Sprachen Englisch, Deutsch und Französisch
Im Weiteren muss das Repository keyword_extraction unter folgendem Link https://github.com/klauslippert/keyword_extraction geklont werden und dieses im gleichen Ordner wie der Code abgelegt werden. -
Außerdem wird eine Tabelle für die AGROVOC-Mainheadings erstellt. - - Dataframe mit AGROVOC-Daten agrovoc_mainheadings
05_extract_keywords.ipynb Mit diesem Code wird mithilfe der erstellen Lookup-Dictionaries die Schlagwörter aus den Dokumenten extrahiert und in eine neue Spalte eingefügt. Wenn nicht bereits geschehen muss das Repository keyword_extraction unter folgendem Link https://github.com/klauslippert/keyword_extraction geklont werden und dieses im gleichen Ordner wie der Code abgelegt werden.
Hier muss der Datei-Pfad für die Pickle-Dateien für AGROVOC und Mesh einzeln angepasst werden. files_MeSH join_language corpus_keywords_AGROVOC, corpus_keywords_MeSH
files_agrovoc
06_mesh_mainheadings_title.sql, 07.mesh_mainheadings_abs.sql Mappen der IDs aller Schlagwörter mit den IDs der Mainheadings von MeSH für den Titel und Abstract - - corpus_keywords_MeSH, mesh_mainheadings corpus_mesh_title, corpus_mesh_abs
08_agro_mainheadings_title.sql, 09_agro_mainheadings_abs.sql Mappen der IDs aller Schlagwörter mit den IDs der Mainheadings von AGROVOC für den Titel und Abstract - - corpus_keywords_AGROVOC, agrovoc_mainheadings corpus_agrovoc_title, corpus_agrovoc_abs
10_create_corpus_mesh.sql, 11_create_corpus_agrovoc.sql Zusammenfassen der Daten von MeSH und Agrovoc zu einem Korpus - - corpus_agrovoc_title, corpus_agrovoc_abs, corpus_mesh_title, corpus_mesh_abs corpus_keywords_agro, corpus_keywords_mesh
12.1_classification_LDA Durchführung der Klassifizierung mittels LDA Anpassung Pfad für Speicherung des Dataframes als csv save_path corpus_keywords_agro, corpus_keywords_mesh, Averbis-Klassen Dataframe, welches die vorhergesagten Klassen der Dokumente beinhaltet
12.2_eval_LDA Evaluierung der LDA mittels F1-Score Anpassung Pfad zum Öffnen des Dataframes als csv path Dataframe der vorhergesagten LDA-Klassen Evaluierungswert in Form des F1-Scores
13_classification_SGD Durchführung der Klassifizierung mittels SGDC Anpassung Pfad für Speichern der F1-Matrix als csv path corpus_keywords_agro, corpus_keywords_mesh, Averbis-Klassen Evaluierungswerte in Form der F1-Matrix
flowchart TD

subgraph Kombinationsbeispiele 
class2
class2a
end


averbis-->classa[Klasse <br> Medizin <br> Landwirtschaft <br> Umweltwissenschaften <br> Ernährung]
LDA-->class1[Klasse <br> 0 <br> 1 <br> 2 <br> 3]

class1-->|erste Kombination der beiden Klassen| class2[Klasse <br> 1 -> Medizin <br> 2 -> Landwirtschaft <br> 3 -> Umweltwissenschaften <br> 4 -> Ernährung ]

classa-->error[Fehlerberechnung mittels F1-Score]
class2-->error


class1-->|zweite Kombination der beiden Klassen|class2a[Klasse <br> 1 -> Landwirtschaft <br> 2 -> Medizin <br> 3 -> Ernährung <br> 4 -> Umweltwissenschaften]

classa---> errora[Fehlerberechnung mittels F1-Score]
class2a--->errora[Fehlerberechnung mittels F1-Score]

error -->|Finden der besten Kombination| highest[highest F1-Score]
errora --> |Finden der besten Kombination| highest





Loading

About

Bachelor thesis in the "Data and Information Science" degree programme in Cologne

Resources

Stars

Watchers

Forks

Packages

No packages published