DBpedia - niedowiarkom gwóźdź do trumny
Komuś, kto by próbował jeszcze sugerować, że Sieć Semantyczna „się nie uda” lub „nie ma sensu”, proponuję przeprowadzić następujący eksperyment:
- Wymyśl jakieś absurdalne pytanie, na które odpowiedź jest „chyba na pewno” dostępna gdzieś w Internecie. Np.: „Jak brzmi nazwa polskiego zespołu heavy metalowego, który wywodzi się z miasta, w którym jest wyższa uczelnia mająca adres na ulicy Mikołajczyka”.
Poszukaj odpowiedzi na stronach WWW wykorzystując najlepsze mechanizmy jakie znasz, typu Google, czy co tam lubisz.
Zmierz czas.
Zakładam, że wynik będzie brzmiał „dużo” lub nawet „nieopłacalnie dużo”...
Teraz ułóż odpowiednie zapytanie SPARQL, np. takie:
PREFIX dbpedia: <http://dbpedia.org/property/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?nazwa WHERE {
?b dbpedia:name ?nazwa .
?b skos:subject <http://dbpedia.org/resource/Category:Polish_musical_groups> .
?b dbpedia:genre <http://dbpedia.org/resource/Heavy_metal_music> .
?b dbpedia:origin ?m .
?u dbpedia:city ?m .
?u skos:subject <http://dbpedia.org/resource/Category:Universities_and_colleges_in_Poland> .
?u dbpedia:address ?a .
FILTER(regex(?a, "Mikołajczyka"))
}I zgłoś się z nim do DBpedii, np. poprzez SPARQL endpoint.
Zmierz czas.
Choćbyś nie wiem jak się starał(a) wynik będzie brzmiał „krócej”.
Przyznaję (zanim się przyczepią ludzie zasadniczy), że odpowiedź DBpedii jest aktualnie mocno niekompletna, ponieważ wersja dostępna przez wspomniany SPARQL endpoint oparta jest „jedynie” na angielskiej wersji Wikipedii, a zapytanie dotyczyło spraw typowo polskich i przez to pewnie mało interesujących z punktu widzenia „szerokiego świata”. Jednak jest to szczegół jedynie, łatwy do nadrobienia...
Przyznaję również (zanim się przyczepią ludzie małostkowi), że klepanie zapytania SPARQL „z palca” jest rozwiązaniem zwyczajnie niemożliwym do zaakceptowania z punktu widzenia „użytkownika końcowego”. Jednak kwestia dopisania ładnego interfejsu czy zgrabnego agenta układającego tego typu pytania np. na podstawie „swobodnej konwersacji” z użytkownikiem jest w tym momencie zupełnie drugoplanowa.
dodatek sprowokowany reakcją blogosfery
Po publikacji powyższego tekstu doszły do mnie z różnych stron głosy, że wyszukanie takiej informacji za pomocą np. Google jest szybsze, prostsze i w ogóle to „dwa proste zapytania” i sekunda roboty. Myślę, że to nieporozumienie wynikające z użytego przeze mnie (być może trochę lekkomyślnie bez wyjaśnienia) słowa „poszukaj” i dosyć powszechnego jak się okazuje niezrozumienia jego znaczenia. Otóż „poszukaj odpowiedzi” to nie to samo co „zgadnij”.
Dobrze jednak, sprawdźmy jak poszukiwanie odpowiedzi na zadane pytanie wygląda przy użyciu wyszukiwarki Google.
Ktoś zasugerował pierwsze zapytanie (sam fakt, że pierwsze nie jest tutaj równocześnie ostatnim i że zakłada się, iż będzie to proces wieloetapowy już jest kompromitacją całej metody, ale mniejsza o to) w postaci: „"ul. Mikołajczyka" uczelnia
”. Już pierwsze wyniki zawierają słowa „Opole” i nawet „Politechnika Opolska”. Fajnie, ale...
Zadanie brzmiało „poszukaj”, nie „zgadnij”.
Czy „Opole” jest fragmentem adresu? Czy to fragment tego samego adresu co słowa „ul. Mikołajczyka”? Czy jest to adres uczelni wyższej? A może to jakaś lista sponsorów uczelni, albo przypadkowa strona jakiejś książki telefonicznej? Czy w ogóle słowo „Opole” oznacza miasto?
Szukaj, nie zgaduj. A czas biegnie...
No ale dobra, załóżmy że faktycznie chodziło o Opole. Odpalamy teraz drugie zapytanie, np. takie: „opole zespół "heavy metal"
”. No i fajnie — TSA na pierwszej pozycji.
Ale moment — „poszukaj”, nie „zgadnij”.
Czy występujące tu litery „TSA” to nazwa tego właśnie zespołu? Czy wspomnienie na jednej stronie słów „TSA” i „Opole” oznacza, że zespół ten (o ile w ogóle zespół) stamtąd pochodzi czy może akurat koncertuje? Czy „Opole” oznacza to samo miasto co poprzednio; może to „Opole Lubelskie”? I tak dalej i tak dalej — pytania i wątpliwości można mnożyć niemalże w nieskończoność...
Szukaj, nie zgaduj. A czas biegnie...
Myślę, że wniosek jest prosty — znalezienie (nie zgadnięcie) takiej informacji na WWW przy użyciu „klasycznych” technik wymaga dwóch rzeczy, które są wbrew pozorom bardzo trudne.
- Po pierwsze wymaga skomplikowanego procesu iteracyjnego — zwyczajnie nie da się tego załatwić jednym pytaniem, nawet dwoma nie za bardzo. Koszt wykonania tego żmudnego procesu szybko przewyższa ewentualne zyski z uzyskanej odpowiedzi — pytamy o jakąś pierdołę przecież.
- Po drugie wymaga zaangażowania ogromnej wręcz ilości inteligencji ludzkiej — zwyczajnie nie da się wyeliminować wszystkich wspomnianych wątpliwości i miliona innych podobnych, jeśli nie posiada się mózgu ludzkiego. Każda odpowiedź w stylu „przecież wiadomo, że o to chodzi” wymaga posiadania ogromnej bazy skojarzeń i zaangażowania ogromnej mocy obliczeniowej — maszyna czy agent programowy nie ma właściwie żadnych szans.
2007.10.11 | 11 komentarzy |
tagi » semantic web, linked data, sparql
Komentarze
#1 | 2007.10.12 09:34 | Bellois
Dlaczego uważasz, że jest to kwestia drugoplanowa? Chyba tylko z punktu widzenia programisty :) To, jak się tego będzie używać, ma zasadnicze znaczenie dla sukcesu rozwiązania.
#2 | 2007.10.12 10:02 | MiMaS
Powiem tak — Tobie chodzi o opakowanie, mi o zawartość.
Opakowanie można zrobić później, kiedy już będzie wiadomo, co włożyć do środka. Nie twierdzę, że produkt bez opakowania w ogóle da się sprzedać — często faktycznie się nie da. Ale opakowanie bez produktu to w ogóle nieporozumienie.
Dlatego taka kolejność właśnie — najpierw sedno, potem fasada.
Innymi słowy — to ta sama różnica w Twoim i moim podejściu do szeroko rozumianej informatyki, którą już wielokrotnie zauważaliśmy... :-)
Mnie cieszy, że jest technologia, która działa. I dla mnie tutaj jest sukces. Dopiero potem przychodzą ludzie tacy jak Ty, robią za przeproszeniem marketing i twierdzą, że dopiero wtedy jest sukces. Wniosek — sukcesy są dwa (co najmniej) i każdy ma swój. Teraz jesteśmy (jeszcze) na etapie mojego. ;-)
#3 | 2007.10.12 14:13 | Mikołaj
Boshhhh...
#4 Teraz ułóż odpowiednie zapytanie SPARQL [...] i zgłoś się z nim do DBpedii, np. poprzez SPARQL endpoint.
#5 Zmierz czas.
Choćbyś nie wiem jak się starał(a) wynik będzie brzmiał "krócej".
So sure are you? Bierzesz pod uwagę istnienie tej "garstki", która nie tylko nie potrafi "ułożyć odpowiedniego zapytania SPARQL", ale najzwyczajniej w świecie nie wie, co to ten (ta? to?) SPARQL jest?
Obawiam się, że na razie wszystkim będzie wychodziło szybciej przez tradycyjne zadanie Google kilku(nastu) zapytań.
Równie dobrze mógłbyś porównywać możliwości suwaka logarytmicznego do możliwości patyka i kawałka piasku. Przy pomocy tego pierwszego wyliczyć można skomplikowane rzeczy, przy pomocy policzyć niezbyt skomplikowane słupki. Sęk w tym, że słupki patykiem na piasku potrafi dziecko z podstawówki, a suwak logarytmiczny obsłuży jakiś promil społeczeństwa. Co więcej - w miarę nabierania sprawności i wiedzy dziecko będzie potrafiło liczyć patykiem na piasku coraz bardziej skomplikowane rzeczy, a suwak logarytmiczny bez odpowiedniego przeszkolenia może owemu dziecku służyć jako taki trwalszy patyk.
Oczywiście rozwój różnych technologii jest ważny, ale dopóki nie osiągną takiej łatwości i intuicyjności obsługi, jak patyk na piasku, to nie ma co pisać buńczucznych oświadczeń w stylu
Choćbyś nie wiem jak się starał(a) wynik będzie brzmiał „krócej”.
bo to po prostu nie jest prawda, bez względu na to, jak bardzo chciałbyś żeby było inaczej.
"Twoje" rozwiązanie ma potencjał, tyle że magazyn "rozwiązań z potencjałem" od setek lat wypchany jest po brzegi doskonałymi rozwiązaniami, których nie dało się używać. Jak na razie nie zanosi się na to, żeby w najbliższym czasie ktoś ów magazyn chciał zamknąć...
#4 | 2007.10.12 14:42 | Kacper Kwapisz
Mikołaj: Ale to chyba właśnie napisał w ostatnim akapicie. Dopóki nie będzie przyjemnego interfejsu, z którego będzie potrafił korzystać "zwykły" użytkownik, korzystanie z DBpedii będzie użyteczne jedynie dla garstki, która będzie chciała/potrafiła użyć tego sposobu wyszukiwania informacji.
#5 | 2007.10.12 15:01 | MiMaS
Mikołaj, czy wobec SQL-a też masz takie kompleksy, czy tylko SPARQL z jakiegoś powodu Cię przeraża?
Ja specjalnej różnicy między jednym a drugim językiem zapytań nie widzę. A jednak z jakiegoś powodu SQL nie leży w magazynie, tylko napędza ogromną większość dzisiejszych systemów informatycznych...
#7 | 2007.10.16 01:24 | Mikołaj
@ Kacper: owszem, w ostatnim akapicie to napisał. Sęk w tym, że wcześniej napisał ewidentne bzdury oderwane od rzeczywistości, a realia są raczej jednoznaczne - ZU szybciej znajdzie tę informację korzystając z Google oraz własnej inteligencji, niż układając egzotyczne zapytanie SPARQL... czy dowolnie inne równie dla niego skomplikowane i niezrozumiałe.
Cudowne jest też pominięcie kwestii związanej z kategoryzacją DBPedii
DBpedia is a community effort to extract structured information from Wikipedia and to make this information available on the Web.
oraz z nieustanną niekompletnością Wikipedii. Och, zapomniałem, to łatwe do nadrobienia...
@ MiMaS
Mikołaj, czy wobec SQL-a też masz takie kompleksy, czy tylko SPARQL z jakiegoś powodu Cię przeraża? Ja specjalnej różnicy między jednym a drugim językiem zapytań nie widzę.
Kompleksy? OMG...
Ty naprawdę uważasz, że _każdy_ człowiek jest / musi być programistą / bazodanowcem oraz musi podzielać Twoje pasje i zachwyty? Bierzesz w ogóle pod uwagę istnienie osób, które nie mają najmniejszego pojęcia o językach programowania (a nawet o składni HTML), ale dzień w dzień korzystają z komputera przez kilkanaście godzin na dobę i to zajmując się poszukiwaniem informacji? Najwyraźniej nie, inaczej nie ośmieszałbyś się gadaniem o "kompleksach".
Mnie oba języki nie interesują i kompletnie mnie nie obchodzi, czy między nimi jest jakakolwiek różnica, czy tych różnic nie ma. Podobnie nie obchodzą mnie podobieństwa i różnice między Pythonem i Perlem, PostgreSQL i MySQL czy też PHP i RoR. Wiem, że ciężko w to uwierzyć, ale naprawdę nic mnie to nie interesuje i mogę z tym żyć... podobnie jak niemal 100% mieszkańców tej planety. I jakoś mnie to nie przeraża...
A jednak z jakiegoś powodu SQL nie leży w magazynie, tylko napędza ogromną większość dzisiejszych systemów informatycznych...
Czytanie ze zrozumieniem ma przyszłość i to większą, niż omawiane przez Ciebie zapytania. Przeczytaj moją wypowiedź jeszcze raz, aż zrozumiesz, co miałem na myśli. Dla ułatwienia dodam, że nie był to SQL...
PS. Twój komentarz byłby interesujący, gdyby nie chęć udowodnienia na siłę przewagi "Twojej" metody. Niewątpliwie "moja" metoda to kompromitacja, tyle że na razie to kompromitacja zdająca egzamin miliony razy dziennie. Co więcej - mogę się założyć o dobrą butelczynę, że "moja" metoda będzie jeszcze przez kilka najbliższych lat codziennie się kompromitować miliony razy. Nie będę się jednak zakładał o to, czy "Twoja" doskonała metoda będzie w ciągu roku czy dwóch funkcjonować poza laboratoriami... bo IMHO szanse na to na razie są mizerne.
#8 | 2007.10.16 08:58 | MiMaS
Ty naprawdę uważasz, że każdy człowiek jest / musi być programistą / bazodanowcem oraz musi podzielać Twoje pasje i zachwyty?
Oczywiście, że nie. I chyba wielokrotnie to udowadniałem na łamach tego bloga. Podkreślenie słowa „każdy” to jednak spore nadużycie z Twojej strony. A pytanie jako całość jest chyba zwyczajnie głupie.
Natomiast...
To jest blog techniczny. Co więcej, od dłuższego czasu dotyczy technologii rozwijanej trochę poza głównym strumieniem (marketing jeszcze słabo się tym interesuje), ale za to mającej kolosalną przyszłość. Przyjdzie jeszcze taki czas, że bez Sieci Semantycznej nie będziesz sobie wyobrażał dnia codziennego, tak samo jak teraz nie wyobrażasz go sobie bez WWW. Wiesz, że WWW też kiedyś nie było? Wiesz jak mało przyjazne i jak mało „ładne” było na początku? No pewnie wiesz, więc sobie przypomnij te czasy...
Ale użalanie się teraz co chwilę „ojej ale ZU tego nie łapie, co to będzie, o la boga” jest hamulcem, który zwyczajnie i świadomie odrzucam. Na to przyjdzie czas później — patrz odpowiedź dla Belloisa.
Teraz piszę o szczegółach i pomysłach technicznych, bo teraz te zagadnienia są najważniejsze, a to jest blog z założenia techniczny. Takie trudne do zrozumienia?
I na koniec, Mikołaju, bardzo Cię proszę - jeśli nie rozumiesz treści wpisu, lub dotyczy on spraw, które Cię nie interesują, to po prostu nie komentuj. Nie ma takiego obowiązku. Tak samo jak jak np. nie komentuję blogów politycznych albo omawiających najnowsze trendy w szydełkowaniu, tak samo Ty nie musisz komentować tutaj. Co więcej, nie musisz nawet czytać. Jest takie powiedzenie — nie wcinaj się między wódkę a zakąskę. Znasz? To stosuj z łaski swojej. EOT.
#9 | 2007.10.16 09:11 | MiMaS
A, jeszcze jedno:
mogę się założyć o dobrą butelczynę, że "moja" metoda będzie jeszcze przez kilka najbliższych lat codziennie się kompromitować miliony razy. Nie będę się jednak zakładał o to, czy "Twoja" doskonała metoda będzie w ciągu roku czy dwóch funkcjonować poza laboratoriami... bo IMHO szanse na to na razie są mizerne.
Czy to znaczy, że nie powinienem o tym pisać, czy może właśnie wręcz przeciwnie? Moze blog z założenia techniczny jest jednak dobrym miejscem na omawianie spraw, które być może za kilka lat wyjdą z laboratoriów? Czy to, że akurat Ciebie to nie interesuje (słowa „podobnie jak niemal 100% mieszkańców tej planety” to oczywista przesada) ma mnie przed tym powstrzymać?
Pytanie raczej retoryczne, nie odpowiadaj.
#10 | 2007.10.17 14:40 | dragonka
Mikołaju, kiedy w IBM-ie zbudowali pierwszą maszynę liczącą byli przekonani, że na rynku znajdze się miejsce tylko na kilka takich jednostek, tylko dla wybranej garstki. A dziś... spójrz na komputer, przy którym siedzisz. Podejrzewam, że nie masz pojęcia w jakim języku napisano jego BIOS, system operacyjny czy sterowniki, a jednak używasz go kilkanaście godzin dziennie. Tu będzie tak samo. Za jakiś czas ktoś dopisze ładne opakowanie do rozwojowej technologii. I będzie hulać jak Google teraz. I nikt się nie będzie zastanawiać jakie to "egzotyczne zapytania" biegają w tle.
#11 | 2007.11.05 23:41 | Adamo
Sam ten proces chyba więcej czasu zajmie, niż wpisanie frazy w Google. Poza tym kto szuka takich rzeczy jak „chyba na pewno”??
Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.