RegEx med EntityRuler i spaCy
Reguljära uttryck, eller RegEx, används för regelbaserad informationsextraktion med komplexa strängmatchningsmönster. RegEx kan användas för att hitta mönster eller ersätta matchande mönster i en sträng med andra mönster. I den här övningen tränar du på att använda EntityRuler i spaCy för att hitta e-postadresser i en given text.
Paketet spaCy är redan importerat. Du kan använda \d för att matcha strängmönster som representerar ett metategn som matchar valfri siffra från 0 till 9.
Ett spaCy-mönster kan använda REGEX som attribut. I så fall har mönstret formen [{"TEXT": {"REGEX": "<ett givet mönster>"}}].
Den här övningen är en del av kursen
Naturlig språkbehandling med spaCy
Övningsinstruktioner
- Definiera ett mönster för att matcha telefonnummer på formen
8888888888som ska användas avEntityRuler. - Läs in en tom engelsk
spaCy-modell och lägg till enEntityRuler-komponent i pipelinen. - Lägg till det kompilerade mönstret i
EntityRuler-komponenten. - Kör modellen och skriv ut tupeln med text och entitetstyp för den givna
texten.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
text = "Our phone number is 4251234567."
# Define a pattern to match phone numbers
patterns = [{"label": "PHONE_NUMBERS", "pattern": [{"TEXT": {"REGEX": "(____){____}"}}]}]
# Load a blank model and add an EntityRuler
nlp = spacy.____("en")
ruler = nlp.____("entity_ruler")
# Add the compiled patterns to the EntityRuler
ruler.____(patterns)
# Print the tuple of entities texts and types for the given text
doc = ____(____)
print([(ent.____, ent.____) for ent in doc.____])