Teraz kolejnym krokiem powinno być:
- dodanie tagów do istniejących postów, które nie mają taga,
- "automatyzacja" całego procesu, czyli budowania modeli tak by budowały się po każdej zmianie na blogu (a jeszcze lepiej wtedy gdy powinny ;-)),
- dodanie sprzężenia zwrotnego, jeśli algo doda tag do posta to jeśli go usunę to powinien to uszanować, ale powinien tego też użyć jako sygnału w kolejnym treningu
Oczywiście są przeszkody ;-)
Pierwsza jest taka, że wszystko na razie zhacowałem w Pythonie z Octave i niestety wszystko na razie działa jako taki pipeline:
- pobierz posty z tagami i zapisz do pliku,
- podziel posty na słowa i zbuduj dla każdego posta wektor słów,
- zbuduj macierze z danymi,
- uruchom Octave dla każdego z taga i zachowaj współczynniki dla każdego z modeli,
- użyj modeli do policzenia tagów
Problem z tym pipelinem jest, że łączy 2 błędy które zawsze robię w takich zadaniach ;p
Po pierwsze coś co wychodzi na wyjściu z kroku 2 wpływa na to co jest w ostatnim kroku, bądźmy szczerzy najbardziej czasochłonne jest trenowanie modeli dla każdego z klasyfikatorów i niestety jeśli wykonam 2 krok to wszystkie moje modele się unieważniają ;p
Po drugie często wszystko się dzieje w jednym kroku, tak naprawdę 2 i 3 są w jednym kroku.
Czyli 2 błędy które ZAWSZE popełniam w trakcie takiego hackowania to to, że robię dany kawałek do momentu jak spełnia swoje zadanie i go porzucam idąc do następnego ;-)
To jest świetne do hackowania, bo szybsze w pisaniu, ale jak jest moment by wyjść z hacka to trzeba dużo rzeczy pisać ;-)
(W pracy mam tego przykład, napisałem coś co mapuje różne rzeczy na mapie (ma 2 źródła danych z współrzędnymi i to wszystko podzielone jest na kafelki i dla każdego z elementów z 1 źródła w drugim szuka najbliższego... robi to ciut bardziej skomplikowanie) ale teraz ten skrypt mi przetwarza te ~10 GB danych w 11 minut i tak do końca by to usprawnić musiałbym nad tym przysiąść i spędzić z 2h żeby to przyspieszyć, a nigdy nie mam 2h ;-))
Do tego dochodzi to, że ponieważ te kroki są zależne od siebie to jeśli coś zmienię w pierwszym to muszę często uruchomić pozostałe ;-) i teraz chciałem sprawdzić jak wyglądają tagi przyznane z 0.9 wagą, bo jak chcę automatyzować ich dodawanie to dobrze to sprawdzić... ale muszę znów trenować klasyfikatory bo coś innego popsułem ;-) [listę słów]
Drugą przeszkodą jest to, że OK takie trenowanie z Octave to fajne jest do przetestowania czy to się w ogóle da zrobić, ale przecież prawdziwe trenowanie chcę zrobić w czymś w stylu Java'y czy Pythona (nie marzę o niczym w stylu CUDA, bo po pierwsze moje modele są malutkie ;-) po drugie ja chcę by to działało na Zima Board, a tam akceleratora graficznego nie ma ;-))... więc muszę poszukać/poczytać jak to tam zrobić.
Ale ogólnie jestem pozytywnie zaskoczony.
Chcę spróbować jeszcze parę innych rzeczy, zmniejszyć słownik, może spróbować z parami słów? ;-) (tak, model rośnie kwadratowo, więc najpierw bym musiał te pary słów wyrzucić ;p)
Sprawdzić jakie słowa są najbardziej znaczące dla którego taga.
Cieszy mnie to, że mam coś do kodowania ;-)
Podobne postybeta
Równoległe liczenie modeli przy pomocy Octave
Pomysł na projekt MLowy ;-)
Tagowanie MLem... ciąg dalszy ;-) nadal brak sukcesów ;p
Automagiczne tagowanie postów jest jednak większe niż myślałem...
"Ochidna" Echidna ;-) czyli jak się mają prace nad RDrive.
Brak komentarzy:
Prześlij komentarz