In der heutigen datengesteuerten Welt ist die Fähigkeit, wertvolle Informationen aus unstrukturierten Texten zu extrahieren, von entscheidender Bedeutung. Von Forschungsarbeiten bis hin zu Finanzberichten sind diese Daten oft schwer zugänglich. Hier kommt LangExtract ins Spiel, eine Open-Source-Python-Bibliothek von Google, die die Leistungsfähigkeit von Large Language Models (LLMs) nutzt, um diesen Prozess zu vereinfachen.
Wichtige Erkenntnisse
- LangExtract vereinfacht die Datenextraktion aus unstrukturiertem Text mithilfe von LLMs.
- Es unterstützt lange Dokumente und bietet interaktive Visualisierungen.
- Die Installation ist einfach und erfordert Python 3.10+.
- API-Schlüssel sind für Cloud-LLMs erforderlich, aber nicht für lokale Modelle.
- Die Extraktion wird durch klare Anweisungen und Beispiele definiert.
- Die Ergebnisse können programmatisch abgerufen oder als JSONL und interaktive HTML-Dateien gespeichert werden.
Installation und Einrichtung
Um LangExtract lokal zu installieren, stellen Sie zunächst sicher, dass Sie Python 3.10 oder höher installiert haben. Die Bibliothek ist auf PyPI verfügbar. Führen Sie in einem Terminal oder einer virtuellen Umgebung Folgendes aus:
pip install langextract
Für eine isolierte Umgebung können Sie zunächst eine virtuelle Umgebung erstellen und aktivieren:
python -m venv langextract_env
source langextract_env/bin/activate # Unter Windows: .\langextract_env\Scripts\activate
pip install langextract
Einrichtung von API-Schlüsseln (für Cloud-Modelle)
LangExtract selbst ist kostenlos und Open Source. Wenn Sie jedoch Cloud-basierte LLMs (wie Google Gemini oder OpenAI GPT-Modelle) verwenden, müssen Sie einen API-Schlüssel bereitstellen. Sie können die Umgebungsvariable LANGEXTRACT_API_KEY festlegen oder sie in einer .env-Datei in Ihrem Arbeitsverzeichnis speichern.
export LANGEXTRACT_API_KEY="IHR_API_SCHLÜSSEL_HIER"
Oder in einer .env-Datei:
cat >> .env << 'EOF'
LANGEXTRACT_API_KEY=ihr-api-schlüssel-hier
EOF
echo '.env' >> .gitignore
Lokale LLMs über Ollama oder andere lokale Backends erfordern keinen API-Schlüssel.
Definieren einer Extraktionsaufgabe
LangExtract funktioniert, indem Sie ihm mitteilen, welche Informationen extrahiert werden sollen. Dies geschieht durch das Schreiben einer klaren Prompt-Beschreibung und die Bereitstellung von mindestens einer ExampleData-Annotation, die zeigt, wie eine korrekte Extraktion in Beispieltexten aussieht.
import langextract as lx
prompt = """
Extrahieren Sie Charaktere, Emotionen und Beziehungen in der Reihenfolge ihres Erscheinens.
Verwenden Sie exakten Text für Extraktionen. Paraphrasieren oder überlappen Sie keine Entitäten.
Stellen Sie aussagekräftige Attribute für jede Entität bereit, um Kontext hinzuzufügen.
"""
examples = [
lx.data.ExampleData(
text="ROMEO. Aber halt! Welches Licht bricht durch das Fenster dort?...",
extractions=[
lx.data.Extraction(
extraction_class="character",
extraction_text="ROMEO",
attributes={"emotional_state": "wonder"}
),
lx.data.Extraction(
extraction_class="emotion",
extraction_text="Aber halt!",
attributes={"feeling": "gentle awe"}
)
]
)
]
Ausführen der Extraktion
Sobald Ihr Prompt und Ihre Beispiele definiert sind, rufen Sie einfach die Funktion lx.extract() auf. Die wichtigsten Argumente sind text_or_documents, prompt_description, examples und model_id.
input_text = """
JULIET. O Romeo, Romeo! warum bist du Romeo?
Verleugne deinen Vater und verweigere deinen Namen;
Oder, wenn du nicht willst, schwöre nur meine Liebe,
Und ich werde kein Capulet mehr sein.
ROMEO. Soll ich mehr hören oder soll ich darauf antworten?
JULIET. Es ist nur dein Name, der mein Feind ist;
Du bist du selbst, obwohl kein Montague.
Was ist in einem Namen? Das, was wir Rose nennen
Würde unter jedem anderen Namen ebenso süß duften.
"""
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-flash"
)
Umgang mit Ausgaben und Visualisierung
Die Ausgabe von lx.extract() ist ein Python-Objekt, das die extrahierten Entitäten und Attribute enthält. LangExtract bietet auch Hilfsfunktionen zum Speichern von Ergebnissen, z. B. das Schreiben in eine JSONL-Datei und die Generierung einer interaktiven HTML-Übersicht.
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl", output_dir=".")
html = lx.visualize("extraction_results.jsonl")
with open("viz.html", "w") as f:
f.write(html if isinstance(html, str) else html.data)
Fazit
LangExtract vereinfacht die Umwandlung von unstrukturiertem Text in strukturierte Daten. Mit hoher Genauigkeit, klarer Quellzuordnung und einfacher Anpassung ist es ein starkes Werkzeug für die Extraktion von fundierten Informationen im Jahr 2025.