I would like to label all entities which have not been labeled by a prior pattern as "unknown". Unfortunately the entity ruler seems not to care about the order of patterns which were provided:
import spacy
nlp = spacy.blank("en")
ruler = nlp.add_pipe("entity_ruler")
patterns = [
{'label': 'Country', 'pattern': [{'lower': 'ger'}]},
{'label': 'Unknown', 'pattern': [{'OP': '?'}]}
]
ruler.add_patterns(patterns)
doc = nlp('ger is a country')
print([(ent.text, ent.label_) for ent in doc.ents])
Expected:
[('ger', 'Country'), ('is', 'Unknown'), ('a', 'Unknown'), ('country', 'Unknown')]
Actual:
[('ger', 'Unknown'), ('is', 'Unknown'), ('a', 'Unknown'), ('country', 'Unknown')]
How can I ensure the patterns are matched in order?