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])
Esempio n. 2
0
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
Esempio n. 3
0
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")
Esempio n. 5
0
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))