Einen einzelnen Begriff in spaCy matchen
RegEx-Muster sind nicht leicht zu lesen, zu schreiben und zu debuggen. Aber du bist nicht aufgeschmissen: spaCy bietet mit der Matcher-Klasse eine gut lesbare, produktionsreife Alternative. Die Matcher-Klasse kann vordefinierte Regeln mit einer Sequenz von Tokens in einem gegebenen Doc-Container abgleichen. In dieser Übung übst du den Einsatz von Matcher, um ein einzelnes Wort zu finden.
Du kannst auf den zugehörigen Text in example_text zugreifen und nlp und doc verwenden, um jeweils auf ein spaCy-Modell und den Doc-Container von example_text zuzugreifen.
Diese Übung ist Teil des Kurses
Natural Language Processing mit spaCy
Anleitung zur Übung
- Initialisiere eine
Matcher-Klasse. - Definiere ein Muster, das das kleingeschriebene
witchinexample_textmatcht. - Füge die Muster zur
Matcher-Klasse hinzu und finde Matches. - Iteriere über die Matches und gib Start- und End-Token-Indizes sowie die Spanne des gematchten Texts aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)
# Initialize a Matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match lower cased word witch
pattern = [{"lower" : ____}]
# Add the pattern to matcher object and find matches
matcher.add("CustomMatcher", [____])
matches = matcher(____)
# Print start and end token indices and span of the matched text
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)