Fazendo correspondências com sintaxe estendida no spaCy
A extração de informações baseada em regras é essencial para qualquer pipeline de NLP. A classe Matcher permite que os padrões sejam mais expressivos ao incluir alguns operadores dentro de chaves. Esses operadores servem para comparações estendidas e são semelhantes aos operadores do Python como in, not in e operadores de comparação. Neste exercício, você vai praticar a funcionalidade de correspondência do spaCy, o Matcher, para encontrar ocorrências de termos específicos em um texto de exemplo.
A classe Matcher já foi importada da biblioteca spacy.matcher. Você usará um contêiner Doc de um texto de exemplo neste exercício por meio de doc. Um modelo spaCy pré-carregado também está acessível em nlp.
Este exercício faz parte do curso
Processamento de Linguagem Natural com spaCy
Instruções do exercício
- Defina um objeto de correspondência usando
Matcherenlp. - Use o operador
INpara definir um padrão que corresponda atiny squaresetiny mouthful. - Use esse padrão para encontrar correspondências em
doc. - Imprima os índices inicial e final dos tokens e o trecho de texto das correspondências.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)
# Define a matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match tiny squares and tiny mouthful
pattern = [{"lower": ____}, {"lower": {____: ["squares", "mouthful"]}}]
# Add the pattern to matcher object and find matches
matcher.____("CustomMatcher", [____])
matches = ____(____)
# Print out start and end token indices and the matched text span per match
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)