NLP avanzato con spaCy
Ines Montani
spaCy core developer
Doc, non solo stringheListe di dizionari, uno per token
Confronta testi dei token esatti
[{'ORTH': 'iPhone'}, {'ORTH': 'X'}]
Confronta attributi lessicali
[{'LOWER': 'iphone'}, {'LOWER': 'x'}]
Confronta qualsiasi attributo dei token
[{'LEMMA': 'buy'}, {'POS': 'NOUN'}]
import spacy # Import the Matcher from spacy.matcher import Matcher# Load a model and create the nlp object nlp = spacy.load('en_core_web_sm')# Initialize the matcher with the shared vocab matcher = Matcher(nlp.vocab)# Add the pattern to the matcher pattern = [{'ORTH': 'iPhone'}, {'ORTH': 'X'}] matcher.add('IPHONE_PATTERN', None, pattern)# Process some text doc = nlp("New iPhone X release date leaked")# Call the matcher on the doc matches = matcher(doc)
# Call the matcher on the doc doc = nlp("New iPhone X release date leaked") matches = matcher(doc)# Iterate over the matches for match_id, start, end in matches:# Get the matched span matched_span = doc[start:end] print(matched_span.text)
iPhone X
match_id: hash del nome del patternstart: indice di inizio dello spanend: indice di fine dello 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': '?'}, # opzionale: corrisponde 0 o 1 volta
{'POS': 'NOUN'}
]
doc = nlp("I bought a smartphone. Now I'm buying apps.")
bought a smartphone
buying apps
| Descrizione | |
|---|---|
{'OP': '!'} |
Negazione: 0 volte |
{'OP': '?'} |
Opzionale: 0 o 1 volta |
{'OP': '+'} |
1 o più volte |
{'OP': '*'} |
0 o più volte |
NLP avanzato con spaCy