spaCy'de PhraseMatcher
Yapılandırılmamış metni işlerken, çoğu zaman taramak ve verilen metinlerde eşleştirmek istediğin uzun listeler ve sözlükler olur. Matcher kalıpları elle hazırlanır ve her bir belirtecin (token) tek tek kodlanması gerekir. Uzun bir ifade listen varsa, Matcher artık en iyi seçenek değildir. Bu durumda, PhraseMatcher sınıfı uzun sözlükleri eşleştirmemize yardımcı olur. Bu egzersizde, PhraseMatcher sınıfını kullanarak birden fazla terimle aynı şekle sahip kalıpları yakalamayı pratik edeceksin.
en_core_web_sm modeli halihazırda yüklü ve nlp olarak kullanıma hazır. PhraseMatcher sınıfı içe aktarılmış durumda. Kullanman için bir text dizgesi ve bir terms listesi mevcut.
Bu egzersiz
spaCy ile Natural Language Processing
kursunun bir parçasıdırEgzersiz talimatları
- Verilen
termsöğelerinin şekliyle eşleşecek şekilde birattrilePhraseMatchersınıfını başlat. PhraseMatchernesnesine eklenecekpatternslistesini oluştur.- Verilen kalıplar için eşleşmeleri bul ve başlangıç ve bitiş belirteç indekslerini ve
textiçindeki eşleşen bölümü yazdır.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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)