SpaCy – fortgeschrittenes NLP für Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in SpaCy

SpaCy ist eine hochmoderne Bibliothek für die Verarbeitung natürlicher Sprache (Natural Language Processing, NLP), die speziell für den produktiven Einsatz entwickelt wurde. Entwickelt vom Team Explosion AI, hat sich diese Bibliothek dank ihrer hohen Leistung, Genauigkeit und Benutzerfreundlichkeit zum De-facto-Standard für industrielle NLP-Lösungen entwickelt.

Hauptvorteile von SpaCy

Architektur und Leistung

SpaCy ist in der Programmiersprache Cython geschrieben, was eine außergewöhnliche Geschwindigkeit bei der Verarbeitung von Textdaten gewährleistet. Die Bibliothek verwendet optimierte Algorithmen und Datenstrukturen, die es ermöglichen, Millionen von Token pro Minute auf Standardhardware zu verarbeiten.

Mehrsprachige Unterstützung

Die Bibliothek unterstützt über 20 Sprachen, darunter Deutsch, Englisch, Chinesisch, Japanisch, Arabisch und viele mehr. Für jede Sprache gibt es spezialisierte, vortrainierte Modelle, die auf die jeweiligen sprachlichen Besonderheiten optimiert sind.

Einsatzbereite Modelle

SpaCy bietet vortrainierte Modelle in verschiedenen Größen (small, medium, large), sodass Sie das optimale Verhältnis zwischen Geschwindigkeit und Genauigkeit für Ihre spezifische Aufgabe wählen können.

Installation und Einrichtung von SpaCy

Installation der Basisbibliothek

pip install spacy

Sprachmodelle herunterladen

Für die englische Sprache:

python -m spacy download en_core_web_sm
python -m spacy download en_core_web_md
python -m spacy download en_core_web_lg

Für die deutsche Sprache:

python -m spacy download de_core_news_sm
python -m spacy download de_core_news_md
python -m spacy download de_core_news_lg

Einbinden und Initialisieren

import spacy

# Modell laden
nlp = spacy.load("de_core_news_sm")

# Text verarbeiten
doc = nlp("Apple überlegt, ein Startup in Großbritannien zu kaufen.")

Hauptkomponenten der Spacy-Pipeline

Tokenisierung

SpaCy zerlegt Text automatisch in Tokens und berücksichtigt dabei sprachspezifische Besonderheiten, Satzzeichen und Sonderzeichen:

doc = nlp("Mach dir keine Sorgen, es funktioniert!")
for token in doc:
    print(token.text, token.is_alpha, token.is_punct, token.like_num)

Morphologische Analyse

Jeder Token enthält umfangreiche morphologische Informationen:

for token in doc:
    print(f"Wort: {token.text}")
    print(f"Lemma: {token.lemma_}")
    print(f"Wortart: {token.pos_}")
    print(f"Tag: {token.tag_}")
    print(f"Morphologische Merkmale: {token.morph}")

Syntaxanalyse

SpaCy erstellt für jeden Satz einen Abhängigkeitsbaum:

for token in doc:
    print(f"{token.text} <- {token.dep_} <- {token.head.text}")
    print(f"Kinder: {[child.text for child in token.children]}")

Lemmatisierung und Stemming

Lemmatisierung in SpaCy

SpaCy bietet eine hochwertige Lemmatisierung direkt aus der Box:

doc = nlp("Die Katzen rennen und springen")
for token in doc:
    print(f"{token.text} -> {token.lemma_}")

Alternativen für Stemming

Obwohl SpaCy kein direktes Stemming beinhaltet, kann es mit anderen Bibliotheken integriert werden:

from nltk.stem import PorterStemmer
stemmer = PorterStemmer()

def add_stemming(doc):
    for token in doc:
        token._.stem = stemmer.stem(token.text)
    return doc

# Als benutzerdefiniertes Attribut hinzufügen
spacy.tokens.Token.set_extension("stem", default=None)

Erkennung von Wortarten

Universelle POS-Tags

SpaCy verwendet ein universelles System

Empfehlungen