Geavanceerde NLP met spaCy
Ines Montani
spaCy core developer
Doc-objecten, niet alleen stringsLijsten van dictionaries, één per token
Match exacte token-tekst
[{'ORTH': 'iPhone'}, {'ORTH': 'X'}]
Match lexicale attributen
[{'LOWER': 'iphone'}, {'LOWER': 'x'}]
Match willekeurige tokenattributen
[{'LEMMA': 'buy'}, {'POS': 'NOUN'}]
import spacy # Importeer de Matcher from spacy.matcher import Matcher# Laad een model en maak het nlp-object nlp = spacy.load('en_core_web_sm')# Initialiseer de matcher met de gedeelde vocab matcher = Matcher(nlp.vocab)# Voeg het patroon toe aan de matcher pattern = [{'ORTH': 'iPhone'}, {'ORTH': 'X'}] matcher.add('IPHONE_PATTERN', None, pattern)# Verwerk tekst doc = nlp("New iPhone X release date leaked")# Roep de matcher aan op de doc matches = matcher(doc)
# Roep de matcher aan op de doc doc = nlp("New iPhone X release date leaked") matches = matcher(doc)# Itereer over de matches for match_id, start, end in matches:# Haal de gematchte span op matched_span = doc[start:end] print(matched_span.text)
iPhone X
match_id: hashwaarde van de patroonnaamstart: startindex van de gematchte spanend: eindindex van de gematchte spanpattern = [
{'IS_DIGIT': True},
{'LOWER': 'fifa'},
{'LOWER': 'world'},
{'LOWER': 'cup'},
{'IS_PUNCT': True}
]
doc = nlp("2018 FIFA World Cup: France won!")
2018 FIFA World Cup:
pattern = [
{'LEMMA': 'love', 'POS': 'VERB'},
{'POS': 'NOUN'}
]
doc = nlp("I loved dogs but now I love cats more.")
loved dogs
love cats
pattern = [
{'LEMMA': 'buy'},
{'POS': 'DET', 'OP': '?'}, # optioneel: match 0 of 1 keer
{'POS': 'NOUN'}
]
doc = nlp("I bought a smartphone. Now I'm buying apps.")
bought a smartphone
buying apps
| Beschrijving | |
|---|---|
{'OP': '!'} |
Negatie: match 0 keer |
{'OP': '?'} |
Optioneel: match 0 of 1 keer |
{'OP': '+'} |
Match 1 of meer keer |
{'OP': '*'} |
Match 0 of meer keer |
Geavanceerde NLP met spaCy