8.1. 🚀 Ausblick: Die Auswirkung der LLM-Nachkorrektur auf die Suche nach Textspuren der Spanischen Grippe #

Nachdem wir unsere Analyse abgeschlossen haben, kommen wir nun zurück zur Frage der LLM-Nachkorrektur. Was würde passieren, wenn wir unser Korpus mit LLMs nachkorrigieren würden? Wir haben es an einer Datei (SNP2719372X-19181012-0-0-0-0.pdf) getestet und die gesamte OCR-Datei über die GPT-4-API laufen lassen. Hier sind die beiden Segmente derselben Seite dargestellt, die den Unterschied vor (links) und nach (rechts) der LLM-Nachkorrektur veranschaulichen:

llm_vs_original

Sehen wir uns nun an, ob sich dies auf die Anzahl der Grippe-bezogenen Wörter in dieser Datei auswirkt:

8.1.1. Definieren der Wortliste (erneut):#

grippe_list = ['Influenza',
'Grippe',
'Grippeepidemie',
'Grippewelle',
'Grippekranke',              
'Grippepandemie',
'Lungenentzündung',
'Krankheitswelle',
'Seuchenzug',
'Krankheitsausbruch',
'Fieberanfall',
'Schüttelfrost',
'Atemnot',
'Körpererschöpfung',
'Genesungszeit',
'Ansteckungsgefahr',
'Seuchenschutz',
'Desinfektionsmittel',
'Schutzmaske',
'Krankenstation',
'Isolationsstation',
'Sanitätsdienst',
'Krankheitsverlauf',
'Todesopfer',
'Krankheitssymptom',
'Erkrankungsfall',
'Lungeninfektion']

8.1.2. Lesen der Anmerkungen der beiden Dateien (Original und nachträglich korrigiert) #

!pip install requests

import pandas as pd
import requests
import sys
Requirement already satisfied: requests in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (2.31.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests) (3.6)
Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests) (2.2.1)
Requirement already satisfied: certifi>=2017.4.17 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests) (2024.2.2)

Bevor wir Daten herunterladen, definieren wir eine kleine Hilfsfunktion download_file. Sie lädt eine Datei plattformunabhängig – also auch unter Windows – aus dem Internet in einen Zielordner herunter und ersetzt damit das Kommando wget, das nicht auf allen Systemen (z.B. Windows) nativ verfügbar ist.

# helper: download a single file (cross-platform replacement for `! wget -P`)
from pathlib import Path

def download_file(url, target_dir):
    """Download the file at `url` into `target_dir`, keeping its original name."""
    target_dir = Path(target_dir)
    target_dir.mkdir(parents=True, exist_ok=True)
    target_path = target_dir / url.split("/")[-1]
    response = requests.get(url)
    response.raise_for_status()
    target_path.write_bytes(response.content)
    return target_path
if not Path("../data/csv/SNP2719372X-19181012-0-0-0-0.csv").exists():
    download_file("https://raw.githubusercontent.com/quadriga-dk/Text-Fallstudie-1/main/data/csv/SNP2719372X-19181012-0-0-0-0.csv", "../data/csv")
if not Path("../data/csv/SNP2719372X-19181012-0-0-0-0_llm_postcorr.csv").exists():
    download_file("https://raw.githubusercontent.com/quadriga-dk/Text-Fallstudie-1/main/data/csv/SNP2719372X-19181012-0-0-0-0_llm_postcorr.csv", "../data/csv")
original = pd.read_csv('../data/csv/SNP2719372X-19181012-0-0-0-0.csv')
post_llm = pd.read_csv('../data/csv/SNP2719372X-19181012-0-0-0-0_llm_postcorr.csv')

8.1.3. Zählen der Wörter der Liste für jede Datei #

def count_words(annotation, wordlist):
    result = annotation.query(f'Lemma.isin({wordlist})')
    return result.shape[0]
count_words(original, grippe_list)
13
count_words(post_llm, grippe_list)
16

LLM verbessert in diesem Fall also nicht nur das Erscheinungsbild der Texte, sondern hilft auch dabei, einige Erwähnungen von Grippe-bezogenen Wörtern wiederherzustellen.