Piotr+Olszak

=[Praca magisterska]=

__**Szkic**__ celów:

 * **Wstęp**: ogólnie o zagadnieniu, tezy
 * **Rozdział 1**: Reprezentacja wiedzy
 * Rozpoznawane obiekty [[file:rozpoznawane_obiekty.pdf]] (10.04.2010)
 * Reprezentacja wiedzy [[file:reprezentacja.pdf]] (05.05.2010).
 * Opis danych [[file:opis_danych.pdf]] (18.04.2010)
 * **Rozdział 2**: Jak ludzie rozpoznają obiekty?
 * Dyskusje w Internecie [[file:dyskusje_w_Internecie.pdf]] (18.04.2010)
 * Mechanizmy poznania
 * Jak ludzie zadają pytania [[file:ludzie_pytania.pdf]] **(28.04.2010)**
 * Human-based computation [[file:Human-based computation.pdf]] (10.04.2010)
 * QuestionGame [[file:QuestionGame.pdf]] (10.04.2010)
 * **Rozdział 3**: Drzewa decyzyjne
 * Definicja drzew decyzyjnych [[file:definicja_drzew_decyzyjnych.pdf]] (18.04.2010)
 * Wykorzystanie drzew do generowania pytań [[file:drzewa_pytania.pdf]] **(28.04.2010)**
 * Model propabilistyczny ( w trakcie pisania)
 * **Rozdział 4**: Funkcje podobieństwa i prototypy
 * Podobieństwo i odległość [[file:podobieństwo_i_odległość.pdf]] (18.04.2010)
 * Przegląd miar podobieństwa i odległości [[file:funkcje.pdf]]
 * Grupowanie i dendrogramy [[file:grupowanie.pdf]]
 * **Rozdział 5**: Implementacja
 * **Podsumowanie**
 * **Podsumowanie**

= = =[Aktualizacje]=

[Minimalizacje]
Opis podejścia pierwszego do wyznaczania parametrów funkcji odległości:. Status: nie działa. Uproszczone modele, usunąłem w oczywisty sposób sprzeczne warunki:
 * Próby rozwiązania za pomocą [|lp_solve]: [[file:model.lp]] i [[file:model2.lp]]
 * Próby rozwiązania za pomocą [|glpk] [[file:model_glpsol.lp]] i [[file:model2_glpsol.lp]]

Po zmianach w modelu zaproponowanych przez profesora (zmiana funkcji celu, selektywne podejście do warunków) dla testowych uporządkować udało się otrzymać następujące parametry: > Value of objective function: 710 > > Domyślny porządek: > **affenpinscher, basenji, beagle, bloodhound, boxer, bulldog, chihuahua, dachshund, dalmation, deerhound, greyhound, harrier, komondor, kuvasz, maltese, mastiff, newfoundland, otterhound, pekingese, poodle, pug, rottweiler, saluki, samoyed, schipperke, schnauzer, shih tzu, weimaraner, whippet** > Po zastosowaniu funkcji odległości: > **affenpinscher, shih tzu, pug, bulldog, chihuahua, deerhound, samoyed, greyhound, dachshund, harrier, maltese, pekingese, komondor, boxer, mastiff, newfoundland, otterhound, rottweiler, beagle, bloodhound, dalmation, kuvasz, poodle, saluki, weimaraner, whippet, schnauzer, schipperke, basenji** > s2 = 0 s3 = 7 s4 = 2 s5 = 4 s6 = 17 s7 = 9 || R1 = 8 R2 = 1 R3 = 13 R4 = 15 R5 = 11 R6 = 1 R7 = 1 R8 = 6 R9 = 1 R10 = 3 R11 = 1 R12 = 7 R13 = 12 R14 = 18 R15 = 18 R16 = 24 || > > Domyślny porządek: > **whippet, weimaraner, shih tzu, schnauzer, schipperke, samoyed, saluki, rottweiler, pug, poodle, pekingese, otterhound, newfoundland, mastiff, maltese, kuvasz, komondor, harrier, greyhound, deerhound, dalmation, dachshund, chihuahua, bulldog, boxer, bloodhound, beagle, basenji, affenpinscher** > Po zastosowaniu funkcji odległości: > **whippet, rottweiler, weimaraner, saluki, harrier, dalmation, boxer, bulldog, bloodhound, newfoundland, dachshund, mastiff, pug, kuvasz, deerhound, beagle, poodle, pekingese, maltese, basenji, shih tzu, otterhound, greyhound, schnauzer, komondor, affenpinscher, schipperke, samoyed, chihuahua** > > Value of objective function: 375 s2 = 7 s3 = 3 s4 = 2 s5 = 2 s6 = 4 s7 = 8 || R1 = 15 R2 = 4 R3 = 1 R4 = 1 R5 = 2 R6 = 7 R7 = 7 R8 = 1 R9 = 1 R10 = 1 R11 = 6 R12 = 12 R13 = 1 R14 = 20 R15 = 2 R16 = 1 R17 = 10 || >
 * psy uporządkowane alfabetycznie rosnąco: [[file:ascending.lp]] i wynik:
 * Actual values of the variables || Actual values of the constraints ||
 * s1 = 1
 * psy uporządkowane alfabetycznie malejąco: [[file:descending.lp]] i wynik:
 * Actual values of the variables || Actual values of the constraints ||
 * s1 = 3

**[Potwierdzanie zmian w bazie]**
Aplikacja do zadawania pytań przeszła kolejne zmiany: >
 * administrator ma łatwy sposób na przeglądania aktualnie zapisanych danych, na jakich działa system, między innymi poszczególnych częstości wystąpień cech:
 * po skończonej grze, w przypadku stwierdzenia różnic pomiędzy wpisami w bazie, a odpowiedziami użytkownika jest on proszony o potwierdzenie swoich odpowiedzi:
 * zaproponowana została uproszczona metoda akwizycji, która opiera się na prostych zasadach:
 * jeżeli użytkownik odpowiedział zgodnie z bazą danych, częstość się zwiększa
 * jeżeli użytkownik nie zgodził się z wiedzą w systemie, częstość zostaje zmniejszona, w przypadku przekroczenia 0, wpis jest usuwany
 * uproszone api do akwizycji, dwie metody, które odpowiadają za generowanie pytań i obsługę odpowiedzi użytkownika

Pytania?
 * jak polepszyć akwizycje?
 * jakie parametry dla botów?
 * dalsze kroki implementacyjne?

W QuestionGame zostały zaimplementowane przykładowe boty. Automaty przygotowano do prowadzenia samodzielnej gry, bez pomocy człowieka. Ich zadaniem jest rozpoznanie psa, poprzez zadawanie pytań. Powstało 6 przykładowych programów, które różnią się parametrami działania. Boty mogą używać dwóch funkcji do selekcji pytań: Każdy z nich określa w którym momencie należy zacząć zgadywać rasę, oraz po ilu niezaliczonych testach, dana rasa jest odrzucana z wyników. Przykładowo: Aktualnie boty korzystają z informacji zapisanych w pliku csv. Zbyt mała liczba gier par ludzi, spowodowała, że dane uzyskane z poprzednich gier są nieliczne i kiepskie. Ogólnie w grze padło 331 pytań w 41 grach. Jednak mam nadzieję, że po poprawieniu systemu botów, gra zyska na popularności. Na każde pytanie programu można odpowiedzieć na jeden z trzech sposobów:
 * opartej o przyrost informacji
 * opartej o współczynnik przyrostu informacji
 * **bot1**: odfiltrowuje po 3 błędach, zgaduje przy 2 rasach, korzysta z przyrostu informacji
 * **bot2:** odfiltrowuje po 2 błędach, zgaduje przy 4 rasach, korzysta z przyrostu informacji
 * **bot3**: odfiltrowuje po 2 błędach, zgaduje przy 2 rasach, korzysta z przyrostu informacji
 * **bot4**: odfiltrowuje po 3 błędach, zgaduje przy 2 rasach, korzysta z współczynnika przyrostu informacji
 * **bot5**: odfiltrowuje po 2 błędach, zgaduje przy 4 rasach, korzysta z współczynnika przyrostu informacji
 * **bot6**: odfiltrowuje po 2 błędach, zgaduje przy 2 rasach, korzysta z współczynnika przyrostu informacji
 * **tak** – oprócz filtrowania psów, dodatkowo powoduje, iż nie zadawane są kolejne pytania o dany atrybut, jeżeli spytamy czy pies jest duży i uzyskamy odpowiedź twierdzącą, nie padnie kolejne pytanie o wielkość
 * **nie** – prócz filtrowania psów,, dodatkowo powoduje, że wartość atrybutu nie jest wykorzystywana w kolejnych pytaniach
 * **nie wiem** – wartość atrybutu nie jest wykorzystywana w kolejnych pytaniach, tutaj mała uwaga, wydaje się że jeżeli gracz nie potrafi odpowiedzieć na pytanie o dany atrybut, należy zaprzestać jego wykorzystania, jednakże problematyczna może być część wartości, ktoś może mieć problem z podjęciem decyzji czy pies jest mały czy średni, ale wie na pewno że nie jest duży

Jakie problemy należy rozwiązać:
 * Czy boty powinny zgadywać, mimo iż nie są spełnione jego kryteria. Przykładowo, bot zadał już wszystkie możliwe pytania, ale nadal zbyt dużą liczba psów jest dostępna?
 * Co robić w sytuacji w której, bot zapytał już o wszystkie otrzymane w wyniku psy, ale nie udało mu się trafić? Czy wybierać psy najbardziej podobne? Czy analizować cechy i odrzucać pewne warunki?
 * W jaki sposób modyfikujemy boty? Usuwamy wyniki, zastępujemy, tworzymy nowe?

Boty a akwizycja?
W tej chwili akwizycja w QuestionGame sprowadza się do zliczania częstości wystąpień danej cechy i wartości. Następnie obliczane są odpowiadające częstościom prawdopodobieństwa. Takie rozwiązanie sprawdza się przy grze dwóch ludzi, kiedy pojawiają się nowe cechy, pytania są generowane w oparciu o wiedzę człowieka. Jednakże przy grze z automatem, który nie kieruje się zdroworozsądkowymi zasadami, a ściśle określonym algorytmem, część cech np. cecha o największym przyroście informacji będzie używana najczęściej. A wcale nie oznacza, że jest dobrze określona dla danego psa. Przykładowo wielkości psów są inaczej interpretowane przez różnych graczy. Jakie problemy należy rozwiązać:
 * Jak należy poprawić akwizycję? Wpływ odpowiedzi, wyników gry na akwizycję.

Wykorzystanie podobieństwa
Gra Bartka już powstała, Jakie problemy należy rozwiązać:
 * W jaki sposób wykorzystamy podobieństwo do generowania lepszych pytań?

= =

=[Seminarium magisterskie]=

**[Referaty]**
Do tego rozdziału książka poleca: [|IR book]

Artykuły:

**[Nltk** biblioteka do NLP dla Pythona]

 * [|Strona główna]
 * [|Przykłady]
 * [|Książka]

**[Genrowanie drzew jeden kontra reszta]**
Przesyłam prost programik do generowania różnego rodzaju drzew 1 kontra reszta. Dostępne są następujące możliwości: - budowanie drzew binarnych (narazie tylko binarnych, normalne są nieczytelne) - dwie funkcje filtrujące: funkcja strict która odfiltrowuje psy w przypadku braku danych, oraz funkcja normal która odfiltrowuje tylko przy określonych wartościach cechy

, przykładowe dane:


 * Przykład użycia:**
 * java -jar tree.jar data.csv name normal normal/strict**

Drzewa binarne:

Statystyki w oparciu o funkcję **max** - wybiera ona wartości najbardziej różniące danego psa od innych, w tym wypadku zakładamy że funkcja zna cechy psa dla którego budujemy drzewo, co powoduje, że wyniki są bardzo dobre.

Statystyki dla drzew binarnych dla funkcji normal : Statystyki dla drzew binarnych i metody strict (mniej praktyczna) :
 * Statystyki: ||  ||
 * Poprawnie odgadnięte || 305 ||
 * Nieodgadnięte || 24 ||
 * Minimalna wysokość || 6 ||
 * Maksymalna wysokość || 13 ||
 * Średnia || 8,73 ||
 * Odchylenie standardowe || 1,36 ||


 * Statystyki: ||  ||
 * Poprawnie odgadnięte || 329 ||
 * Nieodgadnięte || 0 ||
 * Minimalna wysokość || 1 ||
 * Maksymalna wysokość || 5 ||
 * Średnia || 2,52 ||
 * Odchylenie standardowe || 0,63 ||

Statystyki w oparciu o funkcję **min** - wybiera ona wartości cech, które dzielą zbiór psów na grupy zbliżone do 50%, w tym wypadku zakładamy że funkcja nie zna cechy danego psa, co powoduje, że wyniki są gorsze. Statystyki dla drzew binarnych dla funkcji normal:
 * Statystyki: ||  ||
 * Poprawnie odgadnięte || 93 ||
 * Nieodgadnięte || 236 ||
 * Minimalna wysokość || 8 ||
 * Maksymalna wysokość || 28 ||
 * Średnia || 14,9 ||
 * Odchylenie standardowe || 3,95 ||

Prototypowe cechy (cechy, które zostały użyte do drzew binarnych, tworzonych przy użyciu standardowej funkcji filtrującej):



Statystyki dla danych gromadzonych ręcznie (30 psów):
 * [Aktualizacja]**


 * Poprawnie odgadnięte || 23 ||
 * Nieodgadnięte || 6 ||
 * Minimalna wysokość || 4 ||
 * Maksymalna wysokość || 5 ||
 * Średnia || 4,72 ||
 * Odchylenie standardowe || 0,45 ||

Jakie psy nie zostało rozróżnione? W danych są 3 pary psów o tych samych wartościach cech: Dla tych psów prostym sposobem na ich rozróżnienie wydaje się dodanie cechy, przykładowo narzuca się różnica w budowie/umięśnieniu o przykładowych warościach: massive, medium, thin. Natomiast problematyczna jest trzecia para: Te psy wyglądają tak: Na niektórych zdjęciach ciężko je rozpoznać - większość przedstawia szczeniaki, jednak analizując większą ilość fotografii można zauważyć że maltese ma kręconą sierść, a nie prostą jak zakładaliśmy w danych.
 * **whippet i rottweiler**
 * **boxer i dalmation**
 * **maltese i pekingese**

**[Psy]**
Dane o rasach psów ze strony [|Fédération Cynologique Internationale] przekonwertowane do txt: Dane o rasach psów z wikipedii przekonwertowane do txt:

Pierwsza wersja statystyk danych: ( Statystyki posiadają jeszcze sporo błędów, nie radzą sobie z zaprzeczeniami, nie obsługiwane są synonimy, ale "coś" można zobaczyć )
 * [Podejście pierwsze]**
 * [[file:single.zip]] zliczanie pojedyńczych słów
 * [[file:double.zip]] zliczanie par słów
 * [[file:pos.zip]] zliczanie ciągów przy użyciu tagów pos

Przykładowa macierz cech binarnych generowana automatycznie na podstawie powyższych statystyk

Lista cech wykorzystanych do generowania

Poprzednia lista cech, ze zmienionymi wartościami: z binarnych na nominalne. Niestety nadal nie jest kompletna i nie zachwyca jakością :/
 * [Podejście pierwsze, poprawione]**

Aby łatwiej było porównywać, przeniosłem dane ze skryptów które zamieścił Bartek do cvs.
 * [Podejście Bartka]**

Na podstawie danych z fci przygotowałem opisy kilku ras psów, aby móc ocenić dotychczasowe rezultaty:.
 * [Dane uzyskane przy odręcznej analizie]**
 * dotychczasowe wyniki nie są rewelacyjne, jest mała zgodność pomiędzy wygenerowanymi a ręcznie uzyskanymi opisami
 * uzupełnianie przy użyciu grup i sekcji nie polepsza rezultatów, jest dużo błędów i pojedyncze poprawne uzupełnione wartości cech
 * użyta lista cech (mimo uzupełniania) nie jest efektywna, nie dosyć, że pojawiają się puste pola, to część otrzymanych wartości stanowią zbiory
 * niektóre cechy ciężko będzie analizować na podstawie zdjęć (np. kształt karku, jego długość)
 * opisy z fci są obszerne, ale nawet przy ręcznej analizie otrzymane wyniki sugerują potrzebę uzupełnienia ich z innego źródła

Uzupełniłem znaki zapytania, poprawiłem trochę dane (poprawki subiektywne ;))
 * [Dane ręczne poprawione]**

[Aktualizacja]

Poprawione dane w formacie csv:


 * [ARFF]**

Dane przekonwertowane do formatu arff (w celu wykorzystania gotowych narzędzi):
 * plik arff dla danych podstawowych [[file:wynikPodstawowe.arff]] (dane podstawowe, czyli dane pierwsza wersja generowanych danych)
 * OneR, Information Gain, Infromation Gain Ratio [[file:dane_podstawowe.pdf]]
 * plik arff dla danych bartka [[file:wynikBartek.arff]] (dane generowane na podstawie danych podstawowych, przy użyciu liczb pierwszych)
 * OneR, Information Gain, Infromation Gain Ratio [[file:dane_single_bartek.pdf]]


 * plik arff dla danych michała [[file:wynikMichal.arff]] (dane generowane na podstawie danych podstawowych, zbiory wartości rozbite na cechy binarne)
 * OneR, Information Gain, Infromation Gain Ratio [[file:dane_single_michal.pdf]]


 * Dane, w których dla każdego zbioru wartości danej cechy, została utworzona dodatkowa liczba wektorów danych zawierająca wszystkie możliwe kombinacja pojedynczych wartości cech. Wersja dla danych podstawowych [[file:podstawowe_podstawowe_single.arff]] i hierarchicznych[[file:hierarchiczne_podstawowe_single.arff]].


 * Projekt rapid minera do generowania drzew: [[file:dog.xml]]

Macierz odległości wygenerowana dla podstawowych danych (funkcja podobieństwa została omówiona na seminarium)
 * [MDS]**

Multidimensional Scaling wykonany przy użyciu [|mdsj]oraz [|gnuplot]:


 * [KLASTRY]**

**Dane:** uzupełnione przezemnie (bez brakujących wartości) **Drzewa wykonane w programie:** rapidminer v5: **Dendrogramy wykonane w programie**: Orange 1.0b
 * Algorytm:** tworzy dla zbioru obiektów hierarchię klasyfikacji, zaczynając od takiego podziału, w którym każdy obiekt stanowi samodzielne skupienie, a kończąc na podziale, w którym wszystkie obiekty należą do jednego skupienia.


 * single-link** (najbliższy sąsiad - dystans pomiędzy dwoma najbliższymi elementami w klastrach):

**complete-link** (najdalszy sąsiad - największa odległość między obiektami w klastrach):
 * avarage-link** (średnia):


 * [MDS]**




 * [ZADANIE ŚWIĄTECZNE]**


 * [Część2]**

Program oblicza odległości od prototypów (zapisanych w csv) zgodnie ze wzorem zaproponowanym na seminarium. Jeżeli podobieństwo rasy do prototypu wynosi 0 oraz nie jest to rasa prototypowa odległość jest wypisywana na standardowe wyjście. W przeciwnym wypadku, mamy komunikat o poprawności.
 * Liczenie odległości.:** [[file:part2.jar]]


 * Przykład użycia:**
 * java -jar part2.jar /ścieżka/do/pliku/z/danymi /ścieżka/do/pliku/z/prototypami**


 * [Część3]**

Program generuje pytania dla danych zapisanych w cvs (zarówno dla prototypowych, jak i też standardowych - wystarczy, że są w odpowiednim formacie). Pytania są zadawane, tak by maksymalnie różnicować rasy (najbliżej ~50%). W pierwszej wersji przy pytaniu o wartość atrybutu, wektory z nieokreśloną wartością były odfiltrowywane, w drugiej znaki zapytania nie były brane pod uwagę. Oprócz pytań, program wyświetla informacje o najbardziej znaczących cechach, oraz psy najbardziej podobne do optymalnego wyniku. Wektor w z którym porównujemy jest budowany w następujący sposób: jeżeli odpowiedź tak -> dodajemy wartość atrybutu jeżeli nie -> dodajemy wszystkie wartości poza zanegowaną jeżeli nie wiem -> znak zapytania.
 * Zadawanie pytań:** [[file:part3_v2.jar]]


 * Przykład użycia:**
 * java -jar part3.jar /scieżka/do/pliku/z/danymi**

Testy odbywały się przy wykorzystaniu podstawowej wersji danych wygenerowanych prze ze mnie oraz prototypowych wektorów wygenerowanych przez Bartka.
 * [Wyniki]**

Przykładowa sesja: Is color black? [55.42168674698795] **yes** 92 dogs left Is facial region color black? [65.21739130434783] **no** 32 dogs left Is neck length medium? [40.625] **yes** 13 dogs left Is chest deep? [46.15384615384615] **dont** **kown** 13 dogs left Is hair softly wiry? [38.46153846153847] **no** 8 dogs left Is tail set high? [50.0] **yes** 4 dogs left Is ears build triangular? [50.0] **yes** 2 dogs left Is ears position high? [50.0] **no 1** dogs left
 * Prawidłowe odpowiedzi:**
 * tail length = long; tail set high; facial region color = black; hair length = short; hair softly = hard; chest = deep; eyes color = brown; head = long; color = black, white**
 * **Dane standardowe** || **Prototypy Bartka** ||
 * Is hair length short? [50.303030303030305] **yes** 166 dogs left


 * Answer: parson russell terrier**

black terrier [0.0] grand basset griffon vendeen [0.0] airedale terrier [0.0] english pointer [0.0] polish greyhound [0.0] coton de tulear [0.0] rhodesian ridgeback [0.0] german hunting terrier [1.0] tatra shepherd dog [1.0] nova scotia duck tolling retriever [1.0]

Is neck length short? [49.3939393939394] **no** 167 dogs left Is facial region color brown? [49.101796407185624] **yes** 82 dogs left Is neck length medium? [47.5609756097561] **yes** 39 dogs left Is color brown? [48.717948717948715] **yes** 19 dogs left Is eyes color yellow? [52.63157894736842] **no** 9 dogs left Is neck skins loose? [55.55555555555556] **no** 4 dogs left Is body shape square? [50.0] **dont know** 4 dogs left Is body shape rectangular? [50.0] **dont know** 4 dogs left Is eyes oval? [75.0] **yes** 3 dogs left Is eyes color hazel? [33.33333333333333] **yes** 1 dogs left
 * Algorytm 2**

Answer: **swedish vallhund**

lakeland terrier [0.0] great anglo-french tricolour hound [0.0] peruvian hairless dog [0.0] napolitan mastiff [0.0] shar pei [0.0] coton de tulear [0.0] rhodesian ridgeback [0.0] gordon setter [0.0] griffon fauve de bretagne [1.0] anatolian shepherd dog [1.0] || Generating trees!! Is neck length long? [8.51063829787234] **no** 301 dogs left Is tail length medium? [7.308970099667775] **yes** 22 dogs left Is body shape straight? [13.636363636363635] **yes** 3 dogs left Is feet large? [33.33333333333333] **no** 2 dogs left Is head big? [50.0] **no** 1 dogs left


 * Answer: ariege pointing dog**

Similarity table for result karelian bear dog [0.0] bulldog [0.0] norrbottenspitz [0.0] dobermann [0.0] **beagle** **[0.0]** entlebuch cattle dog [0.0] sussex spaniel [0.0] lhasa apso [0.0] gordon setter [0.0] saint germain pointer [0.0]

Is neck length short? [86.01823708206688] **no** 46 dogs left Is neck length long? [60.86956521739131] **no** 18 dogs left Is feet massive? [83.33333333333334] **no** 3 dogs left Is feet large? [33.33333333333333] **no** 2 dogs left Is feet tight? [50.0] **yes** 1 dogs left
 * Algorytm 2**

Answer: **catalonian sheepdog**

pug [0.0] french water dog [0.0] karelian bear dog [0.0] west highland white terrier [0.0] bulldog [0.0] norrbottenspitz [0.0] dobermann [0.0] harrier [0.0] siberian husky [0.0] Is hair length short? [50.303030303030305] **yes** 166 dogs left Is color black? [55.42168674698795] **no** 74 dogs left Is color white? [51.35135135135135] **yes** 38 dogs left Is eyes color dark? [50.0] **yes** 19 dogs left Is tail set high? [52.63157894736842] **dont know** 19 dogs left Is neck skins dewlap? [42.10526315789473] **no** 11 dogs left Is neck length medium? [45.45454545454545] **no** 6 dogs left Is hair softly wiry? [50.0] **no** 3 dogs left Is head medium? [33.33333333333333] **no** 2 dogs left Is chest deep? [50.0] **no** 1 dogs left
 * beagle [0.0] ** ||
 * Prawidłowe odpowiedzi:**
 * tail length = long; neck length = short; neck skins = dewlap; body shape = straight; facial region color = black; hair length = short; croup = broad; ears size = medium, ears build = flat; skin special feature = patches; skin color = black; color = black, white, markings**
 * **Dane standardowe** || **Prototypy Bartka** ||
 * Generating trees!!


 * Answer: schipperke**

medium-sized anglo-french hound [0.0] danish-swedish farmdog [0.0] deutsch drahthaar [0.0] shar pei [0.0] coton de tulear [0.0] wire-haired pointing griffon korthals [1.0] greenland dog [1.0] black terrier [1.0] otterhound [1.0] bloodhound [1.0]

Is neck length short? [49.3939393939394] **yes** 163 dogs left Is eyes color blue? [49.693251533742334] **no** 82 dogs left Is color markings? [46.34146341463415] **yes** 38 dogs left Is facial region color brown? [47.368421052631575] **no** 20 dogs left Is feet tight? [50.0] **yes** 10 dogs left Is neck muscles slim? [50.0] **yes** 5 dogs left Is tail set low? [60.0] **dont know** 5 dogs left Is eyes small? [60.0] **no** 2 dogs left Is eyes color brown? [50.0] **yes** 1 dogs left
 * Algorytm 2**

Answer: **castro laboreiro dog**

napolitan mastiff [0.0] shar pei [0.0] coton de tulear [0.0] rhodesian ridgeback [0.0] gordon setter [0.0] spanish greyhound [1.0] great anglo-french tricolour hound [2.0] irish red & white setter [2.0] pyrenean sheepdog long-haired [2.0] finnish lapphund [2.0] || Is neck length long? [8.51063829787234] **no** 301 dogs left Is tail length medium? [7.308970099667775] **no** 279 dogs left Is tail length long? [7.526881720430108] **no** 258 dogs left Is tail set high? [7.751937984496124] **dont know** 258 dogs left Is tail length short? [6.976744186046512] **yes** 18 dogs left Is tail set low? [16.666666666666664] **dont know** Is color yellow? [11.11111111111111] **no** 16 dogs left Is neck skins dewlap? [12.5] **no** 14 dogs left Is chest deep? [7.142857142857142] **no** 13 dogs left Is ears position erect? [7.6923076923076925] **yes** 1 dogs left


 * Answer: pont-audemer spaniel**

french water dog [0.0] karelian bear dog [0.0] bulldog [0.0] norrbottenspitz [0.0] dobermann [0.0] harrier [0.0] beagle [0.0] entlebuch cattle dog [0.0] sussex spaniel [0.0] bolognese [0.0]


 * Algorytm 2**

Is neck length short? [86.01823708206688] **yes 283** dogs left Is tail length short? [85.15901060070671] **yes** 241 dogs left Is body size short? [87.55186721991701] **yes** 211 dogs left Is head small? [87.67772511848341] **yes** 185 dogs left Is hair shape thick? [87.56756756756758] **dont** **know** 185 dogs left Is hair shape wavy? [87.56756756756758] **dont** **know** 185 dogs left Is cheeks musculart? [88.10810810810811] **no** 22 dogs left Is cheeks lean? [31.818181818181817] **yes** 7 dogs left Is facial region color white? [100.0] **yes** 7 dogs left Is croup wide? [100.0] **no 0** dogs left

Answer: **???**

french water dog [0.0] karelian bear dog [0.0] west highland white terrier [0.0] bulldog [0.0] norrbottenspitz [0.0] dobermann [0.0] harrier [0.0] picardy sheepdog [0.0] lhasa apso [0.0] chow chow [0.0] || Analiza tabelki: dla starszych danych nic nie udało się znaleźć, dla danych bartka pojawiają się zgodności w wektorach podobnych, ale przyczyną jest duża liczba znaków zapytania. Po prostu sporo psów ma dużą liczbę nieokreślonych cech i podobieństwo dla nich wynosi 0 (np. 169 wektorów!!!). Czyi bez rewelacji.


 * [Część4]**

- szuka aż odfiltruje do 10 psów - dany pies jest odfiltrowywany jeżeli więcej niż 2 wartości cechy się nie zgadzają, a nie jak poprzednio przy jednej niezgodności - prezentuje zdjęcia typowanych do odpowiedzi ras (trzeba kilka sekund poczekać, aż się załadują!!) - można na końcu obejrzeć 10 kolejnych zdjęć wybranego przez nas psa
 * Nowa zadawarka pytań:** [[file:part4-1.0-jar-with-dependencies.jar]]


 * Przykład użycia:**
 * java -jar part4.jar /scieżka/do/pliku/z/danymi**

Opis przykładowych poszukiwań dla różnych danych wkrótce... Ale rewelacji nie ma.


 * [GUI do poprawiania danych]**

- możliwość wybierania cech w różnej kolejności - oznaczanie wybranych cech (+) - wyświetlanie psów posiadających dane wartości - odfiltrowywanie psów po wszystkich określonych wartościach - wyświetlenie obrazków psów po kliknięciu w nazwę
 * Aplikacja do poprawiania danych: [[file:question-qui-1.1.jar]]**

- wypisywanie nad zakładkami wybranych wartości cech - po kliknięciu na psa, pojawia się okno zawierające listę jego cech i zdjęcie - na liście na czerwono zaznaczane są cechy niepasujące do wybranych wartości - wybierając cechę, dodawane są zakładki, które pokazują psy zbliżone do poszukiwanego - każda zakładka pokazuje psy o danej liczbie niezgodności
 * [Aktualizacja]** Nowa wersja zawiera poprawki:


 * Przykład użycia:**
 * java -jar question-gui.jar** Następnie wybieramy plik z menu File -> Load (Ctrl+L). Przykładowy z danymi które wprowadzaliśmy ręcznie: [[file:psy.csv]]

**[JAK SZUKAJĄ LUDZIE??]**

 * [SCENARIUSZ GRY]**

W grze biorą udział dwaj gracze. Są oni losowani z puli chętnych do gry. System wyświetla graczowi odpowiadającemu na pytania zdjęcie psa. Pytający zadaje dowolne pytania, na które odpowiedzią może być TAK,NIE lub NIE WIEM. Zamiast pytania, gracz może próbować zgadnąć rasę. Jeżeli trafi gra kończy się. Im więcej pytań zostanie zadanych, tym mniej punktów obaj gracze dostaną.

Proponowane zasady gry:
 * Gracze zaczynają rozgrywkę z 210 punktami
 * Każde pytanie kosztuje 10 punktów
 * Jeden z graczy widzi obrazek psa
 * Drugi zadaje pytania (docelowo nasz system, automatycznie zadający pytania)
 * Odpowiedziami mogą być **Yes, No** lub **I don't know**
 * Im szybciej uda się zgadnąć tym więcej punktów gracze uzyskają.
 * Aktualn wersję zadawarki pytań, która sugeruje pytania na podstawie danych zapisanych w csv
 * Licznik czasu (5 minut na grę)

Istnieje wiele stron, oferujących możliwość dystkutowania o psach, zakładane są również pytania o rasy psów. Przykładowe i nieco okrojone rozmowy na temat możliwych ras psów na zdjęciach. Dodatkowo należy zwrócić uwagę, iż większość tematów dotyczy mieszańców, a nie psów czystej rasy. Próbowałem również zainicjować dyskusję bez umieszczania fotografii, jednakże użytkownicy w większości prosili o fotografię, lub zamieszczali zdjęcia psów z pytaniami czy trafili. Przegląd tematów
 * [FORA DYSKUSYJNE]**


 * [KARYKATURY PSÓW]**

Dwa największe zbiory obrazków z anonimowanymi psami, lub też z karykaturami: http://www.cafepress.com/beingbizarre/2649413 http://www.cafepress.com/artbyangi/477421


 * [WYSZUKIWARKI RAS]**

Bing - [|visual search] (krótki opis jak to działa: [|techcrunch]) [|What is my dog?] - prosta gra, która w 4 krokach pozawala zgadnąć rasę psa. Wybiera się między innymi kształt uszu, ogona i pyska, następnie system zwraca obrazki dopasowanych ras.

**[INNE]**

 * [20q.net]**

Przeprowadziłem kilka gier w celu sprawdzenia z jakimi rasami system sobie radzi, z jakimi ma problemy. Udało mu się zgadnąć: Nie udało mu się odgadnąć:
 * Shi tzu
 * Cocker spaniel
 * Husky
 * Norfolk Terrier ( był blisko, przy różnych grach proponował różne teriery ale w norfolk nie trafił :)
 * Australian Cattle Dog (chyba rasa zbyt mało popularna, lub mało charakterystyczna, nawet nie był blisko)