Spis treści

LAB: Reprezentacja wiedzy

Celem ćwiczenia jest zapoznanie się z różnymi metodami reprezentacji wiedzy, w szczególności z językiem naturalnym, reprezentacją strukturalną (Frames) i sieciami semantycznymi (a.k.a. grafy wiedzy).

1 Do przygotowania

2 Język naturalny [15 minut]

Zanim przejdziemy do zapoznawania się z sieciami semantycznymi i Frames, przyjrzymy się krótko najpowszechniejszemu ze źródeł wiedzy, czyli Wikipedii…

Zestawienie na bazie Wikipedii

Wikipedia zawiera bardzo wiele informacji, dzięki czemu może posłużyć jako źródło do stworzenia różnych zestawień.
(pomijamy tutaj kwestię jakości danych! Gdy będziesz przygotowywać coś poważnego, np. artykuł czy pracę inżynierską, skorzystaj z pewniejszych źródeł ;-) )

ZADANIE: Twoim zadaniem na początek aktualnego laboratorium będzie przygotowanie takiego zestawienia na temat 15 największych pod względem liczby ludności krajów Europy na podstawie polskiej edycji Wikipedii. Na potrzeby tego ćwiczenia NIE korzystaj z innych stron internetowych + NIE korzystaj z zestawień już dostępnych w Wikipedii, bo są co najmniej dwa takie zestawienia i mają różne nieaktualne liczby (stan na 30.09.2019):

Język naturalny jako metoda reprezentacji wiedzy?

Jak to zostało wyżej powiedziane, Wikipedia jest źródłem wiedzy, w związku z tym sposób w jaki przekazuje ona wiedzę (tekst) możemy potraktować jako jeden ze sposobów reprezentacji wiedzy. Po walce z przygotowaniem zestawienia zastanów się jakie są możliwości i ograniczenia takiego sposobu reprezentacji wiedzy. Punktem wyjścia mogą być pytania:

  1. Czy ta reprezentacja jest zrozumiała dla użytkowników?
  2. Jak długo trzeba się przygotowywać, żeby zacząć z niej korzystać?
  3. Jak dokładnie określona jest forma wiedzy w tej reprezentacji (formalizacja tej wiedzy)?
  4. Jak dużo informacji można zawrzeć przy pomocy tej reprezentacji? Co można, a czego nie można?
  5. Jakie są możliwości (automatycznego) przetwarzania wiedzy w tej reprezentacji?

Jakie znasz inne metody reprezentacji wiedzy? Spróbuj je porównać z językiem naturalnym: w czym język naturalny jest lepszy, a w czym słabszy? Możesz posłużyć się powyższymi pytaniami.

3 Baza Wiedzy = TBox + ABox [10 minut]

Niezależnie od tego z jakiej reprezentacji wiedzy korzystamy, naszą bazę wiedzy możemy podzielić na dwie główne składowe: TBox i ABox (pochodzące z Logik Opisowych, Description Logics).

Przykładowo opisując miejsce gdzie się aktualnie znajdujemy moglibyśmy mieć następującą uproszczoną bazę wiedzy (tutaj zapisaną za pomocą języka naturalnego):

ZADANIE: stwórz Bazę Wiedzy (TBoxa i ABoxa) reprezentującą zestawienie przygotowane w poprzedniej sekcji (lub jego fragment jeżeli będzie mało czasu).

4 Frames [10 minut]

Podsumujmy to co robiliśmy:

Tutaj pojawiają się Ramki (Frames):

Przeanalizuj poniższy przykład:

SSAK
wartość domyślna aktualizacja
skóra futro
narodziny żywy
nogi 4 sprawdź-nogi
sprawdź-nogi: wartość <= 4
KRÓLIK
wartość domyślna aktualizacja
jest-rodzaju SSAK
uszy długie
ruch skoki
MAŁPA
wartość domyślna aktualizacja
jest-rodzaju SSAK
nogi 2
ulubione-pożywienie banany

Ustrukturyzowanie wiedzy w postaci ramek pozwala na:

ZADANIE: Przygotuj 3-5 ramek dla opracowywanego przez siebie zestawienia z poprzednich sekcji. Zauważ, że mogą przydać Ci się tutaj TBox i ABox stworzone w poprzedniej sekcji. W jaki sposób?

PYTANIE dodatkowe: czy znasz jakieś elementy inżynierii oprogramowania, które są podobne do Ramek?

5 Sieci semantyczne [10 minut]

Otwarty czy zamknięty świat?

Przyjmijmy prostą bazę wiedzy opisującą ssaki, króliki i małpy.

SSAK:
  - skóra: futro
  - narodziny: żywy
  - nogi: <= 4

KRÓLIK:
  - jest-rodzaju: SSAK
  - uszy: długie
  - ruch: skoki

MAŁPA:
  - jest-rodzaju: SSAK
  - nogi: 2
  - ulubione-pożywienie: banany

Możemy teraz odpytać bazę wiedzy, np. zadając następujące pytania:

O ile odpowiedź na pierwsze pytanie nie powinna być problematyczna (odpowiedź: królik), o tyle odpowiedź na drugie pytanie zależy od przyjętej relacji ze światem. Jednoznacznie można stwierdzić, że odpowiedź na to pytanie nie leży w bazie wiedzy, ale czy leży poza nią? Mamy tutaj dwie możliwości:

Reprezentacja trójkowa

W sieciach semantycznych mamy do czynienia z tzw. reprezentacją trójkową, ponieważ każde stwierdzenie dotyczące świata zapisywane jest w postaci trójki:
Podmiot (Subject) – Relacja (Predicate) – Obiekt (Object), gdzie:

Na przykład opis ssaków z poprzedniej sekcji możemy zapisać następująco:
MAŁPA – jest-rodzaju – SSAK
MAŁPA – nogi – 2

Co w postaci graficznej wygląda następująco:

ZADANIE: Przygotuj ok. 5 trójek dla opracowywanego przez siebie zestawienia z poprzednich sekcji (graf albo tekst – decyzja należy do Ciebie). Zauważ, że mogą przydać Ci się tutaj stworzone wcześniej TBox i ABox. W jaki sposób?

Problem z Wikipedią (dla zainteresowanych)

Wyobraźmy sobie teraz sytuację, w której Nowa Huta ogłasza niepodległość od Polski i staje się osobnym państwem. Co trzeba zmienić w wikipedii? Na pewno strony z opisem Krakowa i Polski (zmniejszy się liczba ludności), na pewno trzeba dodać stronę z opisem nowego „Państwa nowohuckiego”. Poza tym trzeba będzie poprawić zestawienie miast Polski (liczba ludności Krakowa), zestawienie największych miast na stronie Polski (liczba ludności Krakowa), stronę z zestawieniem państw europejskich (doszło nowe państwo), stronę z podziałem politycznym na stronie Europy (nowe państwo), i pewnie jeszcze wiele innych…

Rozwiązaniem jest wykorzystanie zapisu trójkowego do opisu informacji zawartych w Wikipedii. Przykładowo opisując Polskę można przekształcić metryczkę do zapisu trójkowego:

Takie projekty się dzieją! Są dwa, które mogą Cię zainteresować:

W pewnym stopniu zachodzą na siebie, ale to są niezależne projekty, które mają różne zastosowania. Na potrzeby PSI to nie jest istotne - najważniejsze jest to, że te bazy wiedzy można przetwarzać na wiele różnych sposobów. Dobrym początkiem do rozpoczęcia zabawy jest spojrzenie na duży zestaw zapytań do Wikidata.

6 SPARQL Endpoint i DBpedia [20 minut]

  1. DBpedia jest zrzutem z Wikipedii otagowanym z użyciem notacji trójkowej. Powinny być więc tam jakieś informacje o Polsce. Ale jak się do nich dostać?
    Nie znamy identyfikatora (URI) Polski, ale wiemy, że jest coś co ma nazwę Polska i wiemy, że istnieje relacja rdfs:label, która łączy obiekt z jego nazwą. Może to zadziała? Spróbujmy!
  2. Otwórz YASGUI - klienta pozwalającego na wykonywanie zapytań do SPARQL Endpointów.
  3. Co wiemy? Jest coś co ma jakieś URI (?country), które powinno być powiązane relacją rdfs:label z obiektem „Polska”@pl. Można to łatwo przetłumaczyć do notacji trójkowej:
    ?country rdfs:label "Polska"@pl .
  4. Aby wykonać to zapytanie, wpisz URI http://dbpedia.org/sparql w liście wyboru na górze.
  5. Następnie wpisz pełne zapytanie:
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    SELECT ?country
    WHERE { 
        ?country rdfs:label "Polska"@pl .
    }
  6. Sukces! Istnieje coś co ma rdfs:label „Polska”@pl!
    ZADANIE: Teraz rozszerz to zapytanie tak, aby pobrać informację o populacji Polski.
  7. ZADANIE: Rozszerz zapytanie jeszcze bardziej i przygotuj listę 10 największych państw europejskich pod względem populacji.

Chcesz wiedzieć więcej?