https://szkolazpieklarodem.pl/
Analiza zależności jest jedną z piękniejszych i najpotężniejszych funkcji spaCy, która jest szybka i dokładna. Parser może być również używany do wykrywania granic zdań i umożliwia iterację po podstawowych frazach rzeczownikowych, czyli „fragmentach”. Ta funkcja spaCy zapewnia przeanalizowane drzewo, które wyjaśnia relację rodzic-dziecko między słowami lub frazami i jest niezależne od kolejności występowania słów. Weźmy przykład, w którym musisz przeanalizować następujące zdanie:
Zarezerwuj mi lot z Bangalore do Goa
Przykład 1:
doc = nlp(u’Book me a flight from Bangalore to Goa’)
blr, goa = doc[5], doc[7]
list(blr.ancestors)
Wyjście:
[from, flight, Book]
Powyższe dane wyjściowe mogą nam powiedzieć, że użytkownik chce zarezerwować lot z Bangalore. Spróbujmy wypisać przodków obiektu goa.ancestors:
list(goa.ancestors)
Wyjście:
[to, flight, Book]
Dane wyjściowe mogą nam powiedzieć, że użytkownik chce zarezerwować lot do Goa.
Czym są przodkowie w analizie zależności?
Przodkowie są skrajnym prawym symbolem syntaktycznych potomków tego tokenu. Podobnie jak w powyższym przykładzie dla obiektu br przodkowie pochodzili z, lotu i Księgi. Pamiętaj, że zawsze możesz wyświetlić listę przodków elementu obiektu dokumentu, używając atrybutu przodków.
list(doc[4].ancestors) #doc[4]==flight
Powyższy kod wyświetli:
[flight, Book]
Aby programowo sprawdzić, czy element obiektu dokumentu jest przodkiem innego elementu obiektu dokumentu, możemy wykonać następujące czynności:
doc[3].is_ancestor(doc[5])
Powyższe zwraca True, ponieważ dokument [3] (tj. lot) jest przodkiem dokumentu [5] (tj. Bangalore). Możesz wypróbować więcej takich przykładów, aby lepiej zrozumieć analizę zależności i koncepcję przodków. Jeśli spróbujemy pomyśleć o scenariuszu ze świata rzeczywistego, z którym możemy się spotkać, próbując zbudować chatbota, możemy natknąć się na zdanie w rodzaju: Chcę zarezerwować taksówkę do hotelu i stolik w restauracji. W tym zdaniu ważne jest, aby wiedzieć, jakie zadania są zlecane i dokąd są kierowane (tj. czy użytkownik chce zarezerwować taksówkę do hotelu lub restauracji). Spróbujmy to zrobić za pomocą następującego kodu:
Przykład 1:
doc = nlp(u’Book a table at the restaurant and the taxi to the hotel’)
tasks = doc[2], doc[8] #(table, taxi)
tasks_target = doc[5], doc[11] #(restaurant, hotel)
for task in tasks_target:
for tok in task.ancestors:
if tok in tasks:
print(“Booking of {} belongs to {}”.format(tok, task))
break
Wyjście:
Booking of table belongs to restaurant
Booking of taxi belongs to hotel
Czym są dzieci w analizie zależności?
Dzieci są bezpośrednimi syntaktycznymi zależnymi tokena. Możemy zobaczyć dzieci słowa, używając atrybutu dzieci, tak jak używaliśmy przodków.
list(doc[3].children)
wyjściewyprowadzi
[a, from, to]