wtorek, marca 28, 2006

"Semisubiektywna" klasyfikacja dokumentów ;-)

Jakieś półtora roku temu próbowałem swoich sił w stworzeniu narzędzia, które pozwalałoby na ocenianie dokumentów wg. moich upodobań. Schemat działania przedstawiać miał się w sposób następujący, oglądam strony, czy też czytam dokumenty, które są logowane, a ja je oceniam, tudzież do oceny wykorzystywany jest czas jaki spędzam na danej stronie. W trakcie mojego zwiedzania sieci gromadzone są linki, które służą do dalszej penetracji sieci gdzie wyszukiwane są dokumenty najbardziej podobne do tych, które uzyskały najwyższą ocenę.
Po co?
Wydaje mi się, że pozwoliłoby to na wyszukiwanie stron zgodnych z moimi upodobaniami, czyli na klasyfikacje dokumentów nie tylko ze względu na treść ale również ich styl. To dość ryzykowne stwierdzenie i nie do końca zweryfikowane przez moje próby.
Teksty najłatwiej klasyfikować wg. podobieństwa mierzonego przez odległość między wektorami w przestrzeni gęstości słów. Bierzemy wszystkie słowa w korpusie, liczymy ich ilość w dokumentach, normalizujemy i otrzymujemy zbiór wektorów w przestrzeni. Każda wiązka to jedna kategoria dokumentów. Zastosowanie tego mechanizmu pozwala na klasyfikowanie tekstów, ale ocena zależy głównie od słów kluczowych dla dokumentów. Nie ma tu jeszcze słowa o ocenie subiektywnej. Do tej samej wiązki wektorów mogą należeć dokumenty, które mi się podobają i takie, które mi się nie podobają. Gęstość występowania słów nie jest tu dobrą miarą. Mój pomysł to użyć kilku metryk, po pierwsze właśnie tej wyżej opisanej czyli odległości między dokumentami, po drugie tej samej metryki dla dokumentów potraktowanych "kompresją synonimową" ;-)
Kompresja synonimowa polegać powinna na zastępowaniu słów w dokumencie ich najkrótszymi synonimami. Oczywiście prowadzić to może do absurdów, ale z drugiej strony daje nadzieje na zmniejszenie "szumów".
Trzecią metryką powinno być użycie czegoś na kształt łańcuchów markowa. Tutaj powinno to polegać na liczeniu prawdopodobieństw występowania 2 i 3 słów obok siebie oraz wzorców zbudowanych z 2-3 słów [z co najwyżej 2-3 słowami między]. Czyli szukamy w tekście najpierw zbitek 2-3 wyrazowych, i liczymy dla nich gęstość. Dopiero tych zbitek używamy do stworzenia wektorów... nie wiem czy to zadziała, musze sprawdzić po te półtora roku temu nie dotarłem do tego momentu ;-) To samo robimy na tekście potraktowanym "kompresją synonimową". Metryka dla wzorców wydaje się być trudniejsza do policzenia i nad tym musze się jeszcze zastanowić....
Później wyniki tych wszystkich metryk należy przedstawić bandzie agentów czyli prostych programików czy po prostu zestawowi współczynników i przepuścić go przez algorytm genetyczny. Rezultatem powinno być kilka agentów reagujących na teksty, które im się podobają....
Tak jest teoria, praktyka nie posunęła się jeszcze tak daleko ;-) Na razie udało mi się policzyć pierwszą metrykę i stworzyć system, który łazi po sieci śledząc linki na podstawie stron, które już zna.




Podobne postybeta
Co lubie :-)
Bawimy się w klasyfikacje dokumentów
Ekszperyment :-) czyli Podobne posty :-)
Go dla Java'owca ;-) odcinek 2 "kontenery dwa ;-)"
Statystyki przeglądarek, ktoś ma na pewno niemal doskonałe ;-)