Archiwum kategorii ‘Semantic Web’

www kontra GGG

środa, 24 Marzec 2010

Właśnie sobie uświadomiłem, że nie napisałem dotychczas o jednym z kluczowych haseł, które propaguje konsorcjum W3C, a w szczególności Tim Berners-Lee,  w ramach upowszechniania koncepcji Semantic Web. Jest nim skrót GGG, którego rozwinięcie brzmi Giant Global Graph.

Pod koniec listopada 2007  Sir Tim użył tego zwrotu na swoim blogu. W zamyśle autora słowo Graph jest logicznym następcą swoich dwóch poprzedników czyli Net (sieć komputerów, bardziej kojarzona jako sieci lokalne lub o węższym zasięgu), Web (to co dziś nazywamy Internet, sieć treści i prostych usług). Wyjaśnia w swoim poście skąd pomysł na takie określenie. Warto przeczytać. Oczywiście pomysł na GGG jest trochę w myśl marketingowej zasady: produkt musi mieć dobrą nazwę. :) No cóż, sensowne idee też trzeba jakoś skutecznie sprzedawać. Można próbować pod marką Semantic Web lub Linked Data lub GGG.

Z pewnością użycie słowa graf wynika z graficznej reprezentacji osiowej koncepcji Semantic Web czyli tzw. trójek: dwa węzły grafu reprezentujące podmiot i dopełnienie oraz łącząca je linia/strzałka czyli krawędź grafu czyli orzeczenie.

Tak samo jak można reprezentować pojedyncze zdania/trójki przy użyciu grafu, można również reprezentować powiązania pomiędzy zbiorami trójek czyli triplestore’ami. Zatem połączone triplestore’y tworzą graf.

Rozrastający się graf powiązań pomiędzy danymi zgromadzonymi w różnych triplestore’ach to Gigantyczny Globalny Graf, czyli Giant Global Graph czyli GGG. :) Swoją drogą, ciekawe czy przyjmie się subdomena ggg (np. ggg.sejm.gov.pl) jako metoda adresowania np. SPARQLowych końcówek :)

A wracając do Sir Tim’a i mojego poprzedniego posta, niedawno tutaj, na TED.com, podsumował swój kolejny rok ewangelizowania  temacie Semantic Web.

Rząd Jej Królewskiej Mości a Semantic Web

piątek, 5 Marzec 2010

Rząd Jej Królewskiej Mości uruchomił ogólnodostępny serwis data.gov.uk , w którym publikuje dane z sektora publicznego w różnych konsumowalnych formatach. Co ważne, jest tam też końcówka, dzięki której można składać zapytania w SPARQL. Może w Polsce też się doczekamy takiego rozwiązania. Coś się w tym temacie dzieje. Więcej o temacie napisałem tutaj. Warto też rzucić okiem na projekt amerykański data.gov.

OpenNatura2000

wtorek, 2 Marzec 2010

Od kilku tygodni pracuję wspólnie z kolegami z zespołu nad projektem semantycznej reprezentacji wiedzy o danych dotyczących obszarów Natura 2000. Kluczowe założenia są już gotowe. Ruszyliśmy z pracami nad prototypem. Więcej o projekcie można przeczytać tutaj.

W ramach projektu zaprojektujemy i wykonamy ontologię, wypełnimy ją wybranymi danymi ze Standardowych Formularzy Danych obszarów Natura 2000, połączymy z innymi bazami wiedzy i wykonamy wnioskującą aplikację agentową.

Wielki Zderzacz Wiedzy – Large Knowledge Collider

piątek, 12 Luty 2010

Niedawno miałem okazję odwiedzić teren największego obecnie eksperymentu naukowego na świecie czyli CERN. Miejsce osławione ostatnio z powodu uruchomienia Wielkiego Zderzacza Hadronów (LHC – Large Hadron Collider).

Tymczasem w obszarze Semantic Web działa Wielki Zderzacz Wiedzy zwany LarKC (czyt. lark co po angielsku znaczy ’skowronek’ lub ‘żart’, ‘zabawa’) od słów Large Knowledge Collider.

W porównaniu ze swoim ‘atomowym’ kuzynem, który dotychczas kosztował ok. 9 miliardów Euro, LarKC to projekt uruchomiony z budżetem ok 10 mln Euro. Ważna jest lista partnerów, którzy wspierają ten projekt. Wśród nich liczne ośrodki naukowe głównie z Europy, Siemens i Światowa Organizacja Zdrowia (WHO). Więcej info o ludziach i organizacjach stojących za projektem  tutaj.

W skrócie cele przedsięwzięcia można określić następująco: zaprojektowanie i uruchomienie framework’a wnioskującego wykorzystującego nie tylko  reguły logiczne i używającego nie tylko  precyzyjnych i kompletnych danych, ale również  danych niekompletnych  korzystając z metod wywodzących się z kognitywistyki, ekonomii itp (postulat “pluggability”). Ponadto, od strony infrastruktury, rozwiązanie ma być rozproszone na maszyny działające w klastrach (postulat “distributed”) w sposób podobny jakiego użyto w projekcie seti@home. Bardzo istotnym celem jest uzyskanie w ten sposób wydajnego i skalowalnego rozwiązania wnioskującego na potrzeby Semantic Web.

Jednym z ciekawych projektów powiązanych z LarKC jest Linked Life Data.  Jest to potężna baza wiedzy zawierająca obecnie około 4 miliardy trójek z dziedziny nauk biologicznych i medycznych. Posiada ona interfejs pełnotekstowy oraz SPARQLowy do przeszukiwania zasobów.

Semantic Web w medycynie

piątek, 15 Styczeń 2010

Trochę uprościłem i uogólniłem sprawę takim tytułem. Bardziej chodzi mi o wykorzystanie szeroko pojętych technologii semantycznych w inżynierii biomedycznej i biocybernetyce. Niektórzy specjaliści, moim zdaniem w znacznej mierze słusznie, wyraźnie oddzielają metody tworzenia i wykorzystywania ontologii dla celów naukowych od tych tworzonych dla tzw. celów administracyjnych np. biznesowych oraz od tych stanowiących realizację koncepcji Semantic Web. Rozwiązania naukowe i administracyjne charakteryzują się znacznie większą dyscypliną tworzenia i regułami rozwoju od potencjalnie swobodnych i samoregulujących się baz wiedzy opartych na koncepcji Semantic Web.

Wygląda na to, że badacze z zakresu medycyny, podobnie jak badacze z dziedzin związanych z szeroko pojętym bezpieczeństwem narodowym, dość szybko zainteresowali się technologiami semantycznymi. Trudno się dziwić. Mają do czynienia z poważnymi problemami opisanymi potężną liczbą danych rozproszonych globalnie i wzajemnie niekompatybilnych. Dość łatwo wyobrazić sobie jakie zalety może mieć połączenie rozsianych po całym świecie medycznych baz danych. Pokaże krótko gdzie można poczytać o tych pracach.

Do najbardziej uznanych przedsięwzięć zalicza się np. OBO Foundry czyli Open Biomedical Ontologies. To solidna, otwarta baza ontologii z zakresu medycyny. Można brać i używać. Wśród projektów powiązanych z OBO występuje jedno z największych przedsięwzięć w tej dziedzinie czyli Gene Ontology (GO), którego celem jest standaryzowanie reprezentacji genów i atrybutów produktów genowych u różnych gatunków roślin i zwierząt.

W wiele projektów związanych z projektowaniem, budową i utrzymywaniem ontologii na potrzeby medycyny zaangażowany jest Barry Smith z University of New York w Buffalo. Warto zajrzeć na jego stronę tutaj. Niezbyt piękna, ale treściwa. Dostępne są tam również wykłady na video. Warto poświęcić parę godzin na obejrzenie. Dobra angielszczyzna, do tego slajdy do pobrania. Kawał solidnej wiedzy. Video z jednego z kursów nie działa – napisałem w tej sprawie – jeśli coś będę wiedział, dam znać.

W Polsce też trochę się już w tej dziedzinie dzieje. Ostatnio natknąłem się na pracę ONTOLOGIA MAMMOGRAFII – STRUKTURA MODELU, DEFINICJE I INSTANCJE POJĘĆ napisaną przez Teresę Podsiadły-Marczykowską z IBIB PAN oraz Annę Guzik z Zakładu Radiologii Szpitala Grochowskiego przy ul. Grenadierów w Warszawie.

Istotną cechą prac z zakresu semantyzacji wiedzy medycznej jest połączenie jej z systemami elektronicznego zapisu zdrowia pacjenta (ang. EHR – electronic health record). Ale to już oddzielny temat. :)

Ciekawa prezentacja podsumowująca stan Semantic Web

środa, 30 Grudzień 2009

Uff.. Trochę spokojniejszy czas nastał więc czas odkurzyć blog. Nic ostatnio nie pisałem, ale to nie znaczy, że nic się nie działo. Póki co, trafiłem na bardzo interesującą prezentację z maja 2009 podsumowującą stan Semantic Web. Choć to ponad 150 slajdów warto poświęcić parę chwil. Autor naprawdę się przyłożył i ogarnął zasadnicze kwestie. Polecam.

trueknowledge.com – o projekcie

środa, 4 Listopad 2009

True Knowledge to bardzo ciekawy projekt korzystający z technologii sieci semantycznej. Jest to grupa produktów, którą autorzy promują określeniem “nowa klasa internetowych technologii wyszukiwania”.

U podstaw projektu leży własna ontologia służąca do reprezentacji wiedzy. Wygląda na to, że przynajmniej jednym ze źródeł danych jest wikipedia. Korzystając z formularza wyszukiwania możemy zadawać pytania w języku naturalnym. (Naturalnie w angielskim. ;) ) Nasze pytanie zostanie przetworzone dzięki analizie języka na ustrukturyzowane zapytanie do bazy wiedzy.  Tutaj można pobawić się formularzem do zadawania pytań i zobaczyć XML, w którym zwracane są wyniki.

Zauważyłem, że dość często zadawanie pytań generuje błędy aplikacji. Pewnie pytania są zbyt trudne. :) Ale to dopiero początki.

Proponuję np. zadanie pytania typu: “Where does Donald Tusk live?” albo “How old was Barrack Obama when Donald Tusk was born?”  W tych przypadkach dostałem poprawne odpowiedzi. Przyzwoicie działają pytania o daty, odległości itp. Można skorzystać z True Knowledge jak z konwertera miar zadając np. pytanie: “How many square  meters are in hectare?”

Ciekawostką jest fakt, że można uzyskać dostęp do API serwisu. Warto spędzić trochę czasu przyglądając się temu projektowi. Może nie przebije się na czołówkę semantycznych wyszukiwarek, ale z pewnością daje już namiastkę wiedzy, której możemy spodziewać się po wyszukiwarkach przyszłości.

dbpedia.org – notka o projekcie

poniedziałek, 2 Listopad 2009

Wikipedia to największa społecznościowa encyklopedia dostępna w Internecie. Tak na marginesie: czy ktoś jeszcze pamięta taki produkt jak Microsoft Encarta Ecyclopedia? Jako, że to produkt Microsoft wpisałem “encarta encyklopedia” w okno microsoftowej wyszukiwarki bing. I co??? Na pierwszym miejscu jest link do wpisu o “Encyklopedia Encarta” w Wikipedii ;) . Link do strony właściwej był na drugim lub trzecim miejscu. Ciągnąc jeszcze przez chwilę lekki dryf od tematu dodam, że ze strony Microsoftu poświęconej ich encyklopedii dowiedziałem się właśnie, że z dniem 31 Października 2009 kończą projekty Encarta w tym encyklopedię! Poddali się.

Ok, czym jest dbpedia.org?  Co by nie mówić o rzetelności wielu wpisów w Wikipedii, trudno nie docenić ilości solidnej wiedzy tam zgromadzonej. Szkoda, żeby była zrozumiała wyłącznie dla ludzi. Dobrze byłoby, gdyby można było zadawać Wikipedii bardziej złożone zapytania niż tekstowy wpis w okno wyszukiwarki. Tak pomyślało kilku naukowców i biznesmenów z Niemiec i Stanów po czym postanowili “zsemantyzować” wikipedię poprzez wyodrębnienie danych z treści wpisów i ustrukturyzowanie ich oraz zapisanie w trójkach (więcej o trójkach tutaj).

I tak właśnie powstał projekt dbpedia.org. Obecnie to baza wiedzy składająca się z blisko 300 mln trójek opisujących 2,6 mln obiektów (ludzi, miejsc, firm itp.). Są to wpisy z anglojęzycznej wersji Wikipedii, która obecnie przechowuje łącznie ok. 3 mln wpisów. Jednak dzięki powiązaniu pomiędzy wpisami w różnych językach, dbpedia.org daje dostęp do ok. 260 tys. polskich wpisów. Korzystając z języka SPARQL można teraz odpytać ustrukturyzowaną Wikipedię o mnóstwo rzeczy np. o wszystkie miasta określonej wielkości w Ameryce Południowej związane z daną osobą.

Baza wiedzy, a właściwie bazy wiedzy, udostępnione są online oraz w postaci plików do ściągnięcia. Do przechowywania trójkowej bazy wiedzy online wykorzystano komercyjne oprogramowanie o nazwie OpenLink Virtuoso.

Zachęcam do zapoznania się z projektem, a w szczególności pobawienia się webowym interfejsem do składania zapytań w języku SPARQL (tutaj).

URIwersalne znaczenie :)

środa, 21 Październik 2009

Trochę mnie ostatnio poniosło kiedy pisałem o przetwarzaniu języka naturalnego. Chyba za dużo chciałem napisać. W związku z tym postanowiłem wyłowić jedno słowo z poprzedniego posta i pokazać dzięki niemu gdzie łączy się Natural Language Processing  z Semantic Web rozumianą jako Linked Data. To słowo to “koncept”.

Lingwiści i kognitywiści mówią, że mamy jakiś koncept, desygnat lub stereotyp drzewa, stołu, lampy itp. Gdybyś ktoś nas poprosił o opisanie “drzewa” przywołalibyśmy w umyśle obraz, koncept i opisalibyśmy go. Byłby to nasz własny stereotyp drzewa. Pień, konary, gałęzie, liście.. Ktoś inny opisałby drzewo trochę inaczej, np. byłoby iglaste.  Jednak w skali społeczeństwa polskiego, a w wielu przypadkach w skali społeczności ponadnarodowych nasze koncepty wielu obiektów są bardzo zbliżone. Możemy w takich przypadkach powiedzieć, że nasz koncept/stereotyp jest uniwersalny. Gdyby nie fakt, że tak wiele konceptów jest uniwersalnych i względnie niezależnych od narodowości, języka, miejsca zamieszkania trudno byłoby w ogóle mówić o tłumaczeniu pomiędzy językami. Ty mówisz “tree” ja mówię “drzewo” a odwołujemy się do tego samego konceptu i dzięki temu rozumiemy się czyli współdzielimy znaczenie.

Wyzwaniem stojącym przed Semantic Web jest z jednej strony realizacja postulatu AAA czyli “Anyone can say Anything about Any topic” (czyli “Każdy może powiedzieć coś na każdy temat” – jeszcze o tym napiszę), a z drugiej strony utrzymanie względnego porządku i związków pomiędzy tymi wypowiedziami. Skoro 1000 osób wypowiada się np. na temat niejakiego Barracka Obamy dobrze byłoby wyłapać fakt, że mówią właśnie o tym Barracku Obamie. W tym przypadku to jeszcze mały problem, ale kiedy mowa o Kasi Kowalskiej to problem może być już poważniejszy. Sam znam dwie.

Pomysł na rozwiązanie tego problemu jest w założeniu prosty, sprawdzony i mało innowacyjny. Celem wskazania w Semantic Web na konkretny obiekt np. tę konkretną piosenkarkę Kasię Kowalską tworzymy dla niej URI (Uniform Resource Indicator) np. w postaci URL (URL to podzbiór URI) http://polscypiosenkarze.pl/piosenkarze.rdf#kasia_kowalska. Co uzyskaliśmy? Wspólny jednoznaczny desygnat, koncept dzięki któremu ludzie i maszyny będą mogły współdzielić znaczenie czyli rozumieć się.

Potem trzeba już tylko sprawić, żeby wszyscy piszący o tej Kasi Kowalskiej czyli tworzący np. RDFowe trójki używali naszego URI. Drobiazg :) No dobra, pewnie nie taki znowu drobiazg. Ale cóż, nawet jeśli powstanie kilka “unikalnych-inaczej” URI Kasi Kowalskiej będzie można je wyłapać i jakoś ze sobą powiązać. Przecież w języku naturalnym też całkiem przyzwoicie radzimy sobie z synonimami…

NLP czyli Natural Language Processing

poniedziałek, 19 Październik 2009

Czas pozbierać trochę myśli związanych z przetwarzaniem języka naturalnego czyli z angielskiego “natural language processing” (NLP).

Język naturalny to, w odróżnieniu od języków sztucznych (np. Esperanto) i języków formalnych (np. języki programowania), język powstały jako rezultat naturalnej ludzkiej aktywności poznawczej i komunikacyjnej. Do języków naturalnych zaliczamy np. język polski, angielski czy chiński. W odróżnieniu od języków sztucznych i formalnych, język naturalny nie jest budowany w sposób celowy, w oparciu o z góry założone zbiory reguł oraz alfabety lub słowniki. Jest to język rozwijający się historycznie, podlegający rozmaitym modyfikacjom wynikającym chociażby z miejsca na świecie, w którym jest używany.

Jednym z głównych celów języków sztucznych, a w szczególności języków formalnych, jest zapewnienie bardzo precyzyjnej lub wręcz absolutnie jednoznacznej komunikacji. Stąd tworzenie szczegółowych reguł i zasobów języka. Język naturalny jest natomiast pełen nieścisłości, niejasności, braku precyzji, a tym samym miejsca na wielorakie interpretacje, twórcze działania itp. itd. Ludzie dzięki różnym złożonym procesom uczą się jak rozumieć język i jak go używać do komunikowania swoich myśli. Jedni robią to zresztą lepiej a inni gorzej. Mówimy do siebie nawzajem, piszemy i jakoś tak się dzieje, że jednak zazwyczaj się rozumiemy. I to pomimo najprzeróżniejszych wieloznaczności, nieścisłości lub po prostu błędów. Od najwcześniejszego okresu życia nabywamy rozmaite kompetencje głównie poprzez słuchanie i naśladowanie.  Językoznawcy nie są zresztą do końca zgodni co do tego czy przypadkiem nie posiadamy jakiegoś wewnętrznego, wrodzonego “języka”, który bardziej budzimy i wypełniamy niż tworzymy od zera. Niemniej jednak ważny jest tu rezultat. Mniej więcej w wieku 5 lat jesteśmy już baaaaardzo sprawni językowo, formułujemy proste i bardziej złożone zdania, rozumiemy co do nas mówią.

Nic z tego nie byłoby możliwe gdyby nie fakt, że język naturalny, jakkolwiek nieprecyzyjny, oparty jest  na zbiorze określonych słów i reguł ich tworzenia (np. dodawanie przedrostków: wy-sunąć, za-sunąć, prze-sunąć, po-sunąć, do-sunąć) oraz ich ustawiania czyli składni. Forma i pozycja mają znaczenie. Dzięki temu wiemy, że “szukać” i “sprzątać” to czasowniki a “po-szukiwa-nie” i “sprząta-nie” to rzeczowniki. Wiemy też, że “poszukiw-acz” i “sprząt-acz” to wykonawcy tych czynności. A dzięki otwartości na język może i trochę się dziwimy kiedy po raz pierwszy widzimy słowo “szukacz”, ale zupełnie nie przeszkadza nam to domyślić się co “szukacz” robi.

Równie dobrze radzimy sobie z rozumieniem znaczenia słów w kontekście czyli w towarzystwie innych słów. Ta zdolność pozwala nam chociażby wybrać właściwe znaczenie danego słowa spośród kilku innych znaczeń tego samego słowa. Kiedy słyszymy zdanie “Książę chodził często po swoim zamku z rozpiętym zamkiem u spodni i przekręcał klucze w zamkach” raczej nie mamy wątpliwości o które różne zamki chodzi.

A jak sprawić, żeby maszyna była w stanie zinterpretować nawet tak  proste zdanie? Musimy nauczyć ją przetwarzać język naturalny czyli tak opisać język, żeby można było odwołać się m.in. do słowników, zbioru reguł słowotwórczych i reguł dotyczących składni. Musimy pokazać jej typowe zastosowania i zestawienia grup słów czyli związki frazeologiczne. Poważne wyzwanie. :)

A po co to wszystko? Trudno wyobrazić sobie np. dobrze działającego komputerowego tłumacza, który nie potrafi “wydobyć” znaczenia ze słów i tekstu. Wyszukiwarka internetowa posiadająca umiejętność zrozumienia znaczenia tekstu napisanego przez człowieka lepiej zaindeksuje treść dokumentu i lepiej dobierze go do zapytania użytkownika. Bez zdolności przetwarzania języka naturalnego trudno wyobrazić sobie maszynę odpowiadająca na pytania zadane przez człowieka tak, jakby były zadane innemu człowiekowi. Poważne wyzwanie. :)

A do tego dochodzi jeszcze kwestia uczenia się.. W końcu język ciągle się zmienia. Pojawiają się nowe słowa, nowe znaczenia słów, nowe związku frazeologiczne.. Jak komputer ma to wszystko ogarniać, żeby uzyskać jakiś w miarę przyzwoity rezultat w komunikacji z człowiekiem? Baaardzo poważne wyzwanie. :)

Na koniec, doleję trochę oliwy do ognia i spytam: co to jest znaczenie? :) Krótko mówiąc, kiedy już nawet nauczymy komputer tych wszystkich rzeczy, to co właściwie uzyskamy? Jak ma on wyrazić znaczenie? Co zachodzi w naszej głowie kiedy ustalimy, o który “zamek” chodzi? Zamykam oczy i wyobrażam sobie zamek jako coś co zamyka drzwi. Czy zamek to tylko taki zamek z kluczykiem czy też z gałką? Czy zasuwka u drzwi toalety to też zamek? Czy zamek w kłódce jest bardziej zamkiem niż zasuwka w toalecie? Mówiąc trochę bardziej fachowo, jaki jest mój koncept zamka? No i skoro ja mam jakiś koncept zamka to jak go przekazać maszynie. Gdzie i jak go przechować???

Dopóki mam się zamknąć w toalecie i zrobić swoje* takie rozważania na temat zamka nie mają zbyt wielkiego znaczenia praktycznego. Jednak gdybym miał przetłumaczyć instrukcję obsługi…

Dobra, wystarczy. Zbyt poważne wyzwania tu opisuję, żeby spłycać je do jednego posta. Pozbieram wkrótce trochę informacji o tym co się w tej dziedzinie dzieje. A dzieje się całkiem sporo. Póki co, polecam http://plwordnet.pwr.wroc.pl/main/ i http://wordnet.princeton.edu/.

*skąd wiemy co może oznaczać “zrobić swoje” w tym zdaniu? :)