ComeçarComece de graça

PhraseMatcher no spaCy

Ao processar texto não estruturado, é comum ter listas e dicionários longos que você quer varrer e comparar com textos específicos. Os padrões do Matcher são feitos manualmente e cada token precisa ser codificado individualmente. Se você tiver uma lista grande de expressões, Matcher deixa de ser a melhor opção. Nesses casos, a classe PhraseMatcher ajuda a corresponder dicionários extensos. Neste exercício, você vai praticar como recuperar padrões com as mesmas formas para vários termos usando a classe PhraseMatcher.

O modelo en_core_web_sm já está carregado e disponível como nlp. A classe PhraseMatcher foi importada. Uma string text e uma lista de terms estão disponíveis para você usar.

Este exercício faz parte do curso

Processamento de Linguagem Natural com spaCy

Ver curso

Instruções do exercício

  • Inicialize a classe PhraseMatcher com um attr para corresponder à forma dos terms fornecidos.
  • Crie patterns para adicionar ao objeto PhraseMatcher.
  • Encontre correspondências para os padrões e imprima os índices dos tokens de início e fim e o trecho correspondente do text fornecido.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

text = "There are only a few acceptable IP addresse: (1) 127.100.0.1, (2) 123.4.1.0."
terms = ["110.0.0.0", "101.243.0.0"]

# Initialize a PhraseMatcher class to match to shapes of given terms
matcher = ____(nlp.____, attr = ____)

# Create patterns to add to the PhraseMatcher object
patterns = [nlp.make_doc(____) for term in terms]
matcher.____("IPAddresses", patterns)

# Find matches to the given patterns and print start and end characters and matches texts
doc = ____
matches = ____
for match_id, start, end in matches:
    print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)
Editar e executar o código