progress2

[22.4.2008]

Poprawielem szukanie fraz - calkowity czas dla wszystkich dokumentow to ~2 sekundy. Chyba niezle...

[23.42008]

Jest ~7000 fraz dla wszystkich dokumentow. Czesc z nich jest jedno wyrazowych, a inna czesc to te, ktore zaczynaja sie od przecinka badz spacji. Mozna je zignorowac - wtedy zostaje ~5000. Niektore z tych fraz sa podfrazami innych, wiec pytanie czy mozna podfrazy tez zingnorowac jakos sensownie? Bo jesli mamy:

artificial_neural_networks dynamic_fuzzy_neural_networks neural_networks networks

to interesuja nas wszyskie, jednak niektore z fraz skladaja sie do jednej duzej, ktora nie wnosi zadnego sensu. Boje sie, ze nie dojde do konca procesu tagowania, pytania czy to jest sensowne slowo itp., ale zobaczymy jak to wyjdzie w praktyce...

wiec dalej...

Tak wygladaja wszystkie frazy: [|frazy.txt]

Preprocessing wywala praktycznie wszystkie smieci, zostawia interpuncje: kropki potrzebne do indentyfikacji nazwisk, przecinki sa traktowane jako unikalne znaczniki co lamie frazy.

Proba otagowania koncepcji wyglada to tak(liczba fraz zostala zredukowana o pojedyncze wyrazy i frazy zaczynajace sie od smieci): [|proba.txt]

Czyli: - zostaje kilka tysiecy fraz do rozpatrzenia pod katem przydatnosci + pojedyncze wyrazy z wiecej niz jednym sensem w wordnecie - smietelne, - scalanie fraz w najdluzsza zawierajaca wszystkie podfrazy? - no raczej nie, bo wtedy w wordnecie nic nie bedzie - chyba ze jakies wariacje z wyrazow, - stemmingu nie zrobilem, ale wydaje mi sie ze to tylko wydluzy frazy co jest problemem na tym etapie, - slownik offline skrotowcow z dziedziny informatyka-elektronika, ktory znalazlem,: http://shree-electronics.com/ - traktowanie kropek, tak jak przecinkow na pewno zredukuje liczbe fraz, ale mozna zapomniec o imionach, - ciekawostka: w wordnecie jesli A ma synonimy {A, B, C} to C ma tez {A, B, C} w obrebie jednego sensu,

Jeszcze jeden test, najdluzsza fraza rzeczownikowa w WordNecie ma 9 wyrazow, a tak wyglada rozklad:

1 - 57505 2 - 51522 3 - 7107 4 - 1265 5 - 271 6 - 73 7 - 25 8 - 20 9 - 9

[14.5.2008] Zaprogramowalem tagowanie fraz i wyrazow, gdzie uzytkownik decyduje, co jest sensowne, a co nie. W ty wypadku nie mozliwe jest przebrniecie przez wszystkie frazy i wyrazy - co prawda indeksuje tu wyrazy nalezace do frazy (ale bez tego nie da rady bo w wordnecie sa braki). Uruchomilem z automatu zeby program bral pierwszy sens jesli istnieje kilka i tagowal odpowiednie synonimy. Caly proces trwal ~20 minut. W programie zaimplementowalem wyszukiwanie osob, ktore "interesuja sie" konkretna rzecza. Program do pobrania - [|Projekt].

Ciezko jest mi wyobrazic sobie dzialanie tego programu, gdyz jakos nie widze uzytkownika, ktory przez kilka/kilkanascie/kilkadziesiat minut klika i wybiera odpowidnie sensy, a pozniej jeszcze decyduje czy to jest poprawne rozszerzenie imienia, czy to jest region, a czy to jest jeszcze cos innego.

Pisze prace...

Zaimplementowalem algorytm generowania macierzy HAL. W przypadku prostego porownywania slow dla NTU (jest ich 63516) proces zajmuje ~ 30 minut. Implemetacje zrobilem w/g opisu z przeslanej pracy + wlasne optymalizacje. Napisalem do Pana Juliana Szymańskiego z prosba o udostepnienie materialow Marka Koszałki (jego algorytm + dane) w celu porownania wydajnosci. Po porownaniu zamieszcze wyniki skolerowanych par: slowo/slowo oraz slowo/fraza.

Przeprowadzilem maly eksperyment na artykule z wikipedi http://en.wikipedia.org/wiki/Computer_virus wyniki zawieraja pierwszych 500 par z najmniejsza odlegloscia

1) okno = 5, bez fraz i bez stemmingu [|virus_5.txt] 2) okno = 10, bez fraz i bez stemmingu [|virus_10.txt] 3) okno = 5, frazy i stemming [|virus_5_stem_phrase.txt] 4) okno = 10, frazy i stemming [|virus_10_stem_phrase.txt]

Wydaje mi sie, ze okno = 10 przynosi lepsze rezulaty, ale mimo wszystko wiele par slow jest bez sensu (rowniez dlatego, ze jest to caly artukul z wiki, ktory zawiera troche zdan i slow nie zwiazanych z tematem). Jak sie uda przyspieszyc to zobacze jak wyjdzie na danych z NTU.

Aha, niektore frazy zdaja sie byc bez sensu, ale to tylko dlatego, ze stosuje prosta metode zamiany fraz z "stem_stem" -> "slowo_slowo" (slowo = najkrotsze slowo z mapowania stem -> (slowo, slowo, slowo)). To bylo w celu dopasowanie wiekszej ilosc fraz.

[17.11.2008] Dostalem implementacje programu od dr Juliana Szymanskiego i okazalo sie ze moj algorytm jest szybszy, ale zorientowalem sie, ze popelnilem blad. Zlepialem caly korpus w jeden dokument co powodowalo ze program probowal liczyc podobienstwa miedzy slowami z roznych dokumentow, mimo ze dla wiekszosci nie bylo takiej relacji. Jutro zamieszcze wyniki z NTU.

...albo teraz... Dla kilku testowych słow działa b. dobrze [|some.txt] + screen z semantic browser dla "fuel" [|shot.png] (wyniki dla okna = 10 bez setemmingu i stoplisty)

[18.11.2008] Wydaje mi sie, ze do wizualizacji nada sie [|Aduna] a wyglada to tak [|aduna.png] Jest udostepnione bibiloteka do tego, troche dziwnie to wyglada bo zalozenie jest ze jeden klaster powinien zawierac kilka obiektow (co jest normalne), ale wizualizacja polega na zaleznosciach pomiedzy klastrami, czyli klastry-podklastry itp. Mozna zrobic tak, ze "Adunowy klaster" zawiera maxymalnie po jednym elemencie co da wtedy zamierzony efekt. [|test.png]