środa, października 26, 2016

ClickbaitDetector - to działa :-)

OK, wczoraj i dziś reimplementowałem clickBaitDetector'a.
Głównie opierałem się na implementację z "Machine Learning in Action", z tym, że oni to tam robią w Pythonie i NumPy, a ja w JavaScript'cie ;-)

Dla niezorientowanych ClickBaitDetector to moja zabawka, która ma wykrywać linki będące clickbaitami.
Opisałem idee i jej źródła kilka postów temu.

Dziś w końcu mam wersję, która używa naprawdę naiwnego klasyfikatora bayesowskiego.... i wydaje się działać.

Dla danych na których się uczy klasyfikator mam 98.5% skuteczności w rozpoznawaniu tytułów wrzuconych do clickbaitów i ~96% poprawnych tytułów.

Ogólnie klasyfikator jest trochę bardziej nastawiony na to, że dany link jest clickbaitem niż na to, że nie jest przez co jest trochę zbyt wyrywny.

Źródła jak zwykle na GitHub'ie.

Przy okazji przekonałem się jak przydatny jest NumPy. W Pythonie mnożenie wszystkich elementów jednego wektora przez wszystkie elementy drugiego wektora to vector1*vector2 i po ptokach ;-)
Suma z tego to sum(vector1*vector2), ja w JavaScript'cie musiałem coś takiego popełnić:


  var p1 = [];
var p0 = [];
var s1 = 0;
var s0 = 0;
for (var i=0; i<p0Vec.length; i++) {
p0[i]=vec2Classify[i]*Math.log(p0Vec[i]);
s0+=p0[i];
p1[i]=vec2Classify[i]*Math.log(p1Vec[i]);
s1+=p1[i];
}

Ale działa tak samo :-)

W źródłach script.js można znaleźć całą implementację trenowania, bo rozszerzenie wcześniej za każdym razem tworzyło model, teraz używa już wersji prekalkulowanej (która ma 202 KB :-)).

Teraz trzeba jeszcze będzie wyczyścić dane i powinno być jeszcze lepiej ;-)


Podobne postybeta
Clickbait detector ;-) - czyli próbujemy użyć naiwnego klasyfikatora Bayesowskiego do rozpoznawania clickbaitów ;-)
Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)
clickBaitDetector - wiem czemu nie działa ;-)
Dwie książki komputerowe na długi weekend :-)
Naiwny klasyfikator bayesowski nie jest jednak dobry do rozpoznawania clickbaitów ;-)