30.5.06

Pedeefki i metadane

Największym skarbem dla każdego naukowca (w szerszym tego słowa znaczeniu, czyli również dla filozofa) są artykuły naukowe. A artykuły naukowe to PDF-y. Zatem, najcenniejszą zawartością dysku naukowca (zaraz po jego własnych pracach) jest kolekcja artykułów, czyli tzw. pedeefki (doskonale to wie Wielki Człowiek ze Szczecina, który w chwili grozy wywołanej lekkim zwisem komputera często krzyczy ,,Moje pedeefki! Co się stało z moimi pedeefkami!'').

Niestety, wraz z upływem czasu kolekcja pedefków staje się coraz trudniejsza do wykorzystania. Kiedy plików jest 20, mniej więcej wiadomo, co w którym jest. Kiedy plików mamy 200, znalezienie interesującego nas pliku zależy przede wszystkim od szczęścia.

Jeszcze niedawno były jedynie dwie metody zaprowadzenia porządku w kolekcji pedefków, obie wymagające sporego wysiłku, druga większego niż pierwsza. Po pierwsze, można było starannie nazywać pliki i układać je w bardzo przemyślną strukturę katalogów, np. czasopismami, latami albo dziedzinami. Nie da się jednak przewidzieć, jakie kryteria wyszukiwania będą nas interesować, powiedzmy, za dwa lata. Można więc stosować drugą metodę, czyli oprócz przemyślnego systemu nazywania plików prowadzić bazę danych, gdzie artykuły są dokładnie opisane. Nie muszę mówić, że o ile już pierwsza metoda wymagała dużej samodyscypliny, o tyle druga jest po prostu diablo upierdliwa.

Ostatnio na całe szczęście sytuacja się zmieniła na lepsze. Acrobat Reader potrafi szukać pośród PDF-ów (aż dziwne, że dopiero teraz -- w końcu PDF to, upraszczając, skompresowany PostScript), Google Desktop Search wejdzie prawie wszędzie, a i dla Google Scholar PDF nie jest już nieprzenikliwy. A pod Linuksem Gnome Search coraz lepiej naśladuje Gógla.

Niestety, poprawa jest tylko pozorna. O ile nie ma problemu z przeszukiwaniem PDF-ów, które sami stworzyliśmy bądź ściągniętych ze strony domowej autora, o tyle wszystkie PDF-y ściągnięte z baz typu JSTOR to nic innego jak... skany z czasopism. A one, jako obrazki, powiedzą tyle naszej wyszukiwarce, ile nam skompresowany nieznanym algorytmem plik.

Czy jest jakieś rozwiązanie tego problemu? Ano, jest. Format PDF jest, wbrew pozorom, bardzo sprytnym formatem. PostScript, załączniki, obrazki... I, co nas najbardziej interesuje, metadane. Oznacza to, że do pliku można dołączyć informację opisującą informację, którą zawiera sam plik. Standardowe pola są dość oczywiste, i powinny nam akurat wystarczyć do opisania plików w sposób wyszukiwarko-przyjazny: autor, tytuł, krótkie streszczenie, słowa kluczowe... Zachęcony swym odkryciem, postanowiłem sprawdzić, jak opisane są dokumenty np. JSTORA. I tu pierwszy zgrzyt, bo one nie są w ogóle opisane. Byłem tez ciekaw, jak sobie radzą z tym problemem znajomi, więc przejrzałem metadane w PDF-ie z pracą magisterską Kuby Szymanika. Dowiedziałem się, że liczy sobie 42 strony i że jej tytuł bzmi C:/Documents and Settings/qba/Pulpit/semantyka algorytmiczna/pracka/pracka.dvi...

Dlatego postanowiłem opisać, co należy zrobić, aby z metadanymi pedeefków było dobrze :-)

Po pierwsze, istnieją kilka sposobów aby sobie przeczytać metadane pedeefka. Po pierwsze, możemy go otworzyć w Acrobat Readerze albo czyms podobnym i zrobić sobie File > Document Properties (lub po prostu Ctrl+D). Po drugie, przynajmniej w Gnomie, możemy sobie obejrzeć metadane we właściwościach pliku (choć widać je kiepsko, bo ich długość jest ograniczona). Po trzecie, możemy skorzystać ze specjalnych pakietów typu extract(1) albo pdftk(1). Oba są są Open Source, oba są spakietowane pod Debianem i Ubuntu, a pdftk ma jeszcze wersję łindołsową.

extract ma ambicję byc uniwersalnym narzędziem ekstrahującym różne przydatne rzeczy z plików. Potrafi nawet wyrzucić informację z PDF-a jako rekord BibTeX-owy. A przynajmniej potrafił do wczoraj, bo wypuścili nową wersję, która jest zepsuta (błąd już zgłosiłem).

pdftk z kolei to cały kombajn pozwalający nam na różne sztuczki z PDF-ami, który opiszę szczegółowiej poniżej. Jego obsługa jest dość toporna, ale całkiem prosto go zmusić do wypisania informacji na temat pliku:
bies@quine:~/Opole$ pdftk Dziobak.pdf dump_data
InfoKey: Creator
InfoValue: LaTeX with hyperref package
InfoKey: Title
InfoValue: Meaning, Hintikka's thesis, and computational complexity
InfoKey: Producer
InfoValue: pdfeTeX-1.21a
InfoKey: Author
InfoValue: Ryszard Szopa
InfoKey: Keywords
InfoValue: theory of meaning, P vs. NP, Hintikka's thesis, Edmonds' thesis
InfoKey: PTEX.Fullbanner
InfoValue: This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4
InfoKey: Subject
InfoValue: I discuss some natural language constructions that turn to be very difficult from the computational point of view and consider what this means for the theory of meaning.
InfoKey: CreationDate
InfoValue: D:20060528155926+02'00'
PdfID0: b159ce5e5e9d4ea86e562db5ccbefca0
PdfID1: b159ce5e5e9d4ea86e562db5ccbefca0
NumberOfPages: 8

Oczywiście najważniejszą kwestią jest metoda dodania metadanych do własnych plików. Jeżeli pracujemy w LaTeX-u, jest to banalnie proste. Wystarczy dodać w preambule następujące coś:
\pdfinfo
{ /Title (Moje arcydzieło)
/Creator (Ryszard Szopa)
/Author (Szopa, Ryszard)
/Subject (Krótko dowodzę jaki jestem fajny.)
/Keywords (pyszczki, szopa, fajni ludzie)
}
lub, jeżeli używamy pakietu hyperref,
\usepackage[pdftex,
pdfauthor={Ryszard Szopa},
pdftitle={Moje arcydzieło},
pdfsubject={Krótko dowodzę jaki jestem fajny.},
pdfkeywords={pyszczki, szopa, fajni ludzie}]{hyperref}

Tyle jeśli chodzi o ułatwianie życia innym. Najczęściej jednak będzie się zdarzać, że będziemy chcieli opisać cudze pliki, np. z JSTOR-a. I tu właśnie okazuje się niesamowicie przydatny pdftk. Jest to, jak już napisałem, cały kombajn. Potrafi nałożyć hasło na pedeefka, zdjąć hasło, każdą stronę zapisać w osobnym pliku, no i, wreszcie, zmieniać metadane. Jedyna wada jest to, że działa z linii komend i ma straszliwie ciemną składnię wywołania. Na szczęście, istnieje graficzna nakładka, czy też dwie, bo jedna w Perlu (dla Linuksa), a druga w VBScript (dla Łindołsa).

29.5.06

Zdjęcia ze zlotu

Filozofia.pl opublikowała zdjęcia z tegorocznego Zlotu. Jak zwykle w takich przypadkach, bez rewelacji, kilka zdjęć wydało mi się jednakże godnych uwagi.

Zdjęcia zrobione aparatem Julki z kolei są tutaj i tutaj.

27.5.06

o czynie społecznym, o seminarium i o spamie

Dzisiaj był dzień dość bogaty we wrażenia. Wczesnym rankiem (tak koło 10oo ;-)) zerwałem się, aby czym prędzej popędzić na Czyn Społeczny, czyli doprowadzenie ślicznego podwórka Instytutu Filozofii do stanu używalności. Obecnie (to znaczy, do dzisiaj) było to składowisko śmieci i gruzu. Od teraz, miejmy nadzieję, będzie to miejsce gdzie filozofowie będą mogli sobie wyskoczyć na fajkę i poczytać lekturę na ćwiczenia.

Do całej akcji przylgnęła nazwa Czyn Społeczny, ja sądzę jednak, że inna nazwa byłaby odpowiedniejsza: Budowanie Społeczeństwa Obywatelskiego. Oddolnie i własną inicjatywą (żeby nie powiedzieć przedsiębiorczością) zdobyliśmy nowe miejsce do siedzenia na przerwach. W każdym razie, abstrahując od nazewnictwa, pomysł zostało przyjęty przez sporą grupę studentów całkiem entuzjastycznie, niezależnie od opcji światopoglądowej.

Ja sobie nie pobudowałem zbyt długo, bo już o 12oo było seminarium (tzn. Forum Kognitywistyczne), więc skopawszy ze 12 m2 przyszłego trawnika udałem się do zakładu logiki.

Pierwszy referat nie został zrobiony nawet w połowie, więc nie mam co o nim pisać. Za to drugi, Łukasza Dębowskiego, bardzo mi się spodobał. Referent zastanawiał się, czy istnieją jakieś teorioinformacyjne właściwości (czyli na przykład złożoność Kołgomorowa etc.) tekstu sensownego. Intuicja mówi, że owszem -- zjawiska fizyczne powinny być albo bardzo regularne, albo zupełnie chaotyczne. W bardziej poetyckim ujęciu problem polega na tym, aby rozróżnić myśl od szumu za pomocą narzędzi matematycznych.

Jeśli chodzi o zastosowania, moga one być kosmiczne. Dosłownie. Pomyślcie o wielkich radioteleskopach nasłuchujących kosmos... Jeśli dałoby się faktycznie odkryć odcisk palca (ang. fingerprint: pozwolę sobie na określenie komputerowe) sensownego przekazu, mielibyśmy doskonałą metodę by stwierdzić, czy w ogóle warto marnować moc obliczeniową na próby rozszyfrowania szumu z kosmosu.

Mi oczywiście przyszły do głowy zastosowania dużo bardziej przyziemne, choć moim zdaniem co najmniej tak samo przyjemne (biorąc pod uwagę kosmiczne odległości, świadomość, że coś tam jest mogłaby być tylko bardziej frustrująca). Mianowicie, mam przeczucie, że spam jest nieco różny od zwykłych wiadomości pod względem zawartości informayjnej. Gdyby więc udało tę różnicę odnaleźć i wykorzystać ją do skonstruowania spamfiltra... (A góglowy spamfiltr tak słabiutko ostatnio działa -- zapewne stąd takie pomysły.)

Oczywiście, na razie są to marzenia małego zwierzątka w fabryce pizzy mrożonej. Wyniki zaprezentowane mówiły póki co o długości słów (czy też, konkretniej, pewnych powtarzających się sekwencji znaków). Czyli o tym, jakiej długości są te ,,słowa” i ile ich w tekście jest (dla niecierpliwych: ilość ,,słów” w tekście szacuje się jako nieco więcej niż c*n1/2). Nie jest to niby wiele, ale: lepszy rydz niż nic. Jak zaobserwował jeden z uczestników seminarium, można by to zastosować do pisma linearnego A. Nie pomogłoby to bezpośrednio w translacji, ale przynajmnie byśmy widzieli, jakiej długości słów się spodziewać.

Tym niemniej, jeśli chodzi o spam, sądzę, że w przyszłości można się wiele spodziewać po teorii informacji (bazy serwerów to nie jest najelegantsza metoda radzenia sobie ze śmieciami). Skoro da się wyczaić, czy księgi rachunkowe nie są oszukane (tzw. prawo pierwszych cyfr), jest nadzieja, że i na spamerów przyjdzie kryska.

Nie jestem specjalistą w dziedzinie teorii informacji, więc być może piszę jakieś głupoty. Bardziej zainteresowanym polecam zajrzeć (jako dobry początek) na stronę internetową Łukasza Dębowskiego.

22.5.06

Zlot Filozoficzny '06

Konferencje naukowe (nawet te studenckie) mają sporo zalet. Można poznać nowych ludzi, zobaczyć ciekawe miejsca, podlansować się za pomocą prezentacji... Ale przede wszystkim: pozwalają pojechać na małe wakacje z pełnym poczuciem, że jest się w pracy i że wypełnia się swój obowiązek. Kant tego nie przewidział. No i właśnie ostatnich kilka dni spędziłem całkiem nieźle się bawiąc na Zlocie Filozoficznym '06 w Opolu.

Już na samym początku bardzo mnie przyjemnie zaskoczyło to, że Opole jest bardzo ładne i przyjemne -- coś na kształt takiego większego Cieszyna (niech mi zarówno opolanie, jak i cieszynianie wybaczą). I choć miejscowi (a konkretnie: taksówkarz) narzekali, to jak na 120 tysięcy mieszkańców knajp było całkiem sporo (choć w nocy na ulicy żywego ducha, nawet w dresie, nie uświadczysz).

Zakwaterowani byliśmy w dość ekscentrycznym miejscu, mianowicie w Schronisku Młodzieżowym położonym gdzieś pomiędzy torami. Tak, dobrze zrozumieliście: pomiędzy torami. Jak się tam doszliśmy po raz pierwszy, byliśmy bardzo zdziwieni, że nie zabładziliśmy, bo okolica właśnie na to wskazywała -- tory, podkłady... Członkowie Klubu Miłośników Kolei z III LO w Gdyni byliby zachwyceni. Dziwności obrazu dopełniało położone po sąsiedzku Schronisko dla zwierząt.

Oczywiście, największym przeżyciem był mój własny referat. Choć subiektywnie rzecz biorąc poszedł mi lepiej niż w Szklarskiej Porębie, wciąż nie jestem do końca zadowolony ze swojego wystąpienia (wciąż za mocno przeżywam mówienie do mikrofonu). Jakby kogoś to interesowało, może zajrzeć sobie do slajdów.

Oprócz tego największe wrażenie zrobił na mnie Diderik Batens z Belgii. Mówił o logikach adaptatywnych, czyli (jeśli dobrze zrozumiałem) takich, które mają zaimplementowane mechanizmy usuwania jak najmniejszym kosztem sprzeczności. Są one o tyle ciekawe, że wydają się faktycznie opisywać proces ulepszania jakiejkolwiek teorii naukowej: gdy znajdujemy w naszej teorii sprzeczność, zazwyczaj nie wyrzucamy jej od razu do śmieci, ale staramy się wprowadzić jak najdrobniejsze poprawki które sprawią, że sprzeczności nie będzie. Więcej na Adaptive Logics Homepage.

Zaelektryzowała mnie też jego uwaga możliwości zastosowania (i mam tu na myśli zastosowanie w mocnym tego słowa znaczeniu -- w przemyśle, finansach etc. -- słowem, w prawdziwym świecie) logik parakonsystentnych (czyli takich, które nie boją się sprzeczności). Chodzi mianowicie o wszelakiego typu systemy eksperckie wnioskujące na podstawie bazy danych. Jeżeli zastosujemy w nich logikę klasyczną i natrafią one na sprzeczne dane (co w dużej bazie danych ma prawo się zdarzyć), ekspert generalnie przestanie zdãżać. Jakbyśmy z kolei użyli logiki parakonsystentnej, ekspert da sobie radę.

Oczywiście, nie jest chyba tak, że ludzie od baz danych są tacy tępi i wszystkie systemy eksperckie zwisają jak tylko natrafią na sprzeczne informacje. Tym niemniej, jakby do dokładnie przemyśleć i opracować z logicznego punktu widzenia, mogłoby to lepiej działać.

Na koniec udało mi się namówić towarzystwo na wycieczkę do Opolskiego Zoo, aby zobaczyć jedyne w Polsce goryle (które nb. przyjechały z Rotterdamu -- nie wiem, co o tym myśleć w kontekście wszechobecnych w Opolu ogłoszeń o pracy w Holandii... offset?). Oprócz tego widzieliśmy rysie, różne małpiatki, żyrafy, zebry, wilki grzywiaste, psy dingo... Było naprawdę super. Zdjęcia niebawem powinny gdzieś się pojawić.

(I gwoli uczciwości intelektualnej -- przyznaję, niedźwiedzie polarne są jednak niedźwiedziami. Ci co wiedzą o co chodzi, zrozumieją.)

18.5.06

Hevea

Bez dwóch zdań, TeX i LaTeX to najlepsza rzecz jaka przydarzyła się w dziedzinie programów komputerowych logikom i filozofom. Opowieści o kartkach wkręcanych do maszyzny do pisania do góry nogami aby zrobić znaczek kwantyfikatora to już tylko bajki do strasznie rozbrykanych studentów.

Tym niemniej format wynikowy LaTeX-a pozostawia trochę do życenia. Czytniki DVI nie są zbyt rozpowszechnione, a PDF-y mają to do siebie, że choć są ładne, są też ciężkie i powolne. Jesteśmy na nie skazani, bo jakolwiek konwersja np. do HTML-a powoduje albo utratę wszystkich znaczków, co większość prac logicznych pozbawi wartości, albo będzie się korzystać z formuł przerobionymi na obrazki, co ogólnie obsysa.

Tak mniej więcej myślałem aż do momentu, gdy odkryłem narzędzie o nazwie Hevea, które (w miarę bezstratnie) przerabia źródło TeX-a na HTML. Jest to możliwe dzięki dobrodziejstwu kodowania UTF-8, które zawiera takie bajery, jak ∀ czy ∃. Oczywiście, stracimy ładny TeX-owy skład wyrażeń matematycznych, ale za to możemy np. zaznaczyć formułę i wkleić do okienka Jabbera abo naszego ulubionego IM. Nie mówiąc już o przeglądaniu artykułów na słabych maszynach, takich jak mój laptop (16 MB RAM-u).

Program nie jest niestety do końca doskonały. Szczególnie kiepsko radzi sobie z pakietami AMS. Nie widzi na przykład żadnych linii oprócz pierwszejw multline. Miejmy jednak na dzieję, że z czasem to się poprawi.

A poza tym, Konrad Zdanowski pokazał mi dzisiaj swój dowód drugiego twierdzenia Goedla, który zajmuje (i to bez żadnych tricków ani skrótów) niecałą kartkę formatu A4. Korzysta głównie z pojęć teorii obliczalności i jest wyjątkowo przyjazny dla czytelnika.