-
1. Data: 2018-07-09 06:01:15
Temat: Uczenie maszynowe - detekcja UTF
Od: Borneq <b...@a...hidden.pl>
Robię detekcję tekstu czy jest UTF8/binarnym (na razie jeden
kubełek,potem rozdzielam innym, dobrym sposobem),
czy jest UTF16 czy Little Endian czy Big Endian, czy UTF32 - tak samo.
W ten sposób że robię 4 histogramy, kolejne bajty wrzucam do 0,1,2,3
histogramu.
W histogramach zliczam nie tyle niezerowe elementy, ale niezerowe i
niezbyt małe na podstawie kwantyli.
I mam :
dla binarnego na prykład: 186,196,174,193, jeśli duży badany plik,
rośnie do 230, w przeciwnym przypadku maleje.
Dla UTF16Le:
60,1,64,1 - dla tekstu z polskimi, 66,1,65,1 dla cyrylicy (podobnie)
Dla UTF16Be:
1,60,1,64 - dla tekstu z polskimi, 1,66,1,65 dla cyrylicy, czyli tylko
zamiana parzystych z nieparzystymi.
Utf32LE:
tekst grecki: 59,1,1,1
Utf32BE: grecki 1,1,1,59
Robiłem w ten sposób że dla każdego kubełka miałem punkty i dla danej
cechy typu - parzyste podobne do nieparzystego dodawałem punkty, potem
odejmowałem. I liczyłem ilość punków w stosunku do maksymalnej ilości
dla tego kubełka.
Im mniej tekstu badam, tym histogramy mniej pomagają, ale w pewnym
momencie wystarczyło zaledwie 30(!) bajtów tekstu by poselekcjonować
wszystkie przykłady.
Ale zmieniłem przykłady i muszę na nowo dostrajać: jest A powinno być B,
więc robię cięższy test A i luzuję B,
ale znowu kłopot z C itd. Największy kłopot jest z UTF32.
Teraz przychodzę do sedna: zamiast dostrajać, jak nauczyć maszynowo?
sieci neuronowe, niekoniecznie głębokie,
Bayes?(może tak!) , maszyna wektorów nośnych SVM ?
czy jest jakaś metoda, która wskaże błąd, gdy nie podoła?