import json from spacy.lang.de import German with open("exercises/de/countries.json", encoding="utf8") as f: COUNTRIES = json.loads(f.read()) nlp = German() doc = nlp("Tschechien könnte der Slowakei dabei helfen, ihren Luftraum zu schützen") # Importiere den PhraseMatcher und initialisiere ihn from spacy.matcher import PhraseMatcher matcher = PhraseMatcher(nlp.vocab) # Erstelle Pattern-Doc-Objekte und füge sie zum Matcher hinzu # Dies ist die schnellere Version von: [nlp(country) for country in COUNTRIES] patterns = list(nlp.pipe(COUNTRIES)) matcher.add("COUNTRY", None, *patterns) # Wende den Matcher auf das Test-Dokument an und drucke das Resultat matches = matcher(doc) print([doc[start:end] for match_id, start, end in matches])
import json from spacy.lang.de import German from spacy.tokens import Span from spacy.matcher import PhraseMatcher with open("exercises/de/countries.json") as f: COUNTRIES = json.loads(f.read()) with open("exercises/en/capitals.json") as f: CAPITALS = json.loads(f.read()) nlp = German() matcher = PhraseMatcher(nlp.vocab) matcher.add("COUNTRY", None, *list(nlp.pipe(COUNTRIES))) def countries_component(doc): # Erstelle eine Entitäts-Span mit dem Label "LOC" für alle Resultate matches = matcher(doc) doc.ents = [____(____, ____, ____, label=____) for match_id, start, end in matches] return doc # Füge die Komponente zur Pipeline hinzu ____.____(____) print(nlp.pipe_names) # Getter-Funktion, die den Text der Span im Lexikon der Hauptstädte nachschlägt get_capital = lambda span: CAPITALS.get(span.text) # Registriere die Span-Erweiterung "capital" mit Getter-Funktion get_capital
import json from spacy.matcher import Matcher from spacy.lang.de import German with open("exercises/de/iphone.json", encoding="utf8") as f: TEXTS = json.loads(f.read()) nlp = German() matcher = Matcher(nlp.vocab) # Zwei Tokens, deren kleingeschriebene Formen "iphone" und "x" sind pattern1 = [{"LOWER": "iphone"}, {"LOWER": "x"}] # Token mit der kleingeschriebenen Form "iphone" und eine Ziffer pattern2 = [{"LOWER": "iphone"}, {"IS_DIGIT": True}] # Füge Patterns zum Matcher hinzu und überprüfe die Resultate matcher.add("GADGET", None, pattern1, pattern2) for doc in nlp.pipe(TEXTS): print([doc[start:end] for match_id, start, end in matcher(doc)])
import json from spacy.lang.de import German from spacy.tokens import Doc with open("exercises/de/bookquotes.json", encoding="utf8") as f: DATA = json.loads(f.read()) nlp = German() # Registriere die Doc-Erweiterung "autor" (default: None) Doc.set_extension("autor", default=None) # Registriere die Doc-Erweiterung "buch" (default: None) Doc.set_extension("buch", default=None) for doc, context in nlp.pipe(DATA, as_tuples=True): # Überschreibe die Attribute doc._.buch und doc._.autor basierend auf dem Kontext doc._.buch = context["buch"] doc._.autor = context["autor"] # Drucke den Text und die Daten der benutzerdefinierten Attribute print(f"{doc.text}\n — '{doc._.buch}' von {doc._.autor}\n")
import spacy from spacy.attrs import * from spacy.lang.de import German txt = """ Ihr naht euch wieder, schwankende Gestalten, Die früh sich einst dem trüben Blick gezeigt. Versuch ich wohl, euch diesmal festzuhalten? Fühl ich mein Herz noch jenem Wahn geneigt? Ihr drängt euch zu! nun gut, so mögt ihr walten, Wie ihr aus Dunst und Nebel um mich steigt; Mein Busen fühlt sich jugendlich erschüttert Vom Zauberhauch, der euren Zug umwittert. """ print(txt) _nlp = spacy.load('de_core_news_sm') tokenizer = German().Defaults.create_tokenizer(_nlp) docs = tokenizer.pipe(txt) for d in docs: for t in d.to_array([PROB, TAG, LENGTH, POS, ENT_TYPE, IS_ALPHA]): print(t)
from spacy.lang.de import German nlp = German() people = ["David Bowie", "Angela Merkel", "Lady Gaga"] # Erstelle eine Liste von Patterns für den PhraseMatcher patterns = list(nlp.pipe(people))