Punktowe wzajemne informacje na temat tekstu
Zastanawiałem się, jak można obliczyć punktowe wzajemne informacje dla klasyfikacji tekstu. Mówiąc dokładniej, chcę sklasyfikować tweety w kategoriach. Mam zbiór danych tweetów (które są adnotowane) i mam słownik dla kategorii słów, które należą do tej kategorii. Biorąc pod uwagę te informacje, jak można obliczyć PMI dla każdej kategorii na tweeta, aby zaklasyfikować tweeta do jednej z tych kategorii.
1 answers
PMI jest miarą związku między cechą (w Twoim przypadku słowem) i klasą (kategorią), a nie między dokumentem (tweetem) a kategorią. Wzór jest dostępny na Wikipedii :
P(x, y)
pmi(x ,y) = log ------------
P(x)P(y)
W tym wzorze {[2] } jest zmienną losową, która modeluje występowanie słowa, a Y
modeluje występowanie klasy. Dla danego słowa x
i danej klasy y
, możesz użyć PMI, aby zdecydować, czy funkcja ma charakter informacyjny, czy nie. ta podstawa. Posiadanie mniejszej liczby funkcji często poprawia wydajność algorytmu klasyfikacji i znacznie przyspiesza jego działanie. Etap klasyfikacji jest jednak oddzielny - PMI pomaga tylko wybrać lepsze funkcje, które będą wykorzystywane w algorytmie uczenia się.
Edytuj: Jedną z rzeczy, o której nie wspomniałem w oryginalnym poście, jest to, że PMI jest wrażliwy na częstotliwości słów. Przepisz wzór jako
P(x, y) P(x|y)
pmi(x ,y) = log ------------ = log ------------
P(x)P(y) P(x)
Gdy x
i y
są doskonale skorelowane, P(x|y) = P(y|x) = 1
, więc pmi(x,y) = 1/P(x)
. Mniej częste x
-es (słowa) będą miały wyższy wynik PMI niż częste x
- es, nawet jeśli oba są doskonale skorelowane z y
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-12 20:07:58