2012-11-21 12 views
17

Zastanawiałem się, w jaki sposób można obliczyć wzajemne informacje punktowe dla klasyfikacji tekstu. Dokładniej, chcę klasyfikować tweety w kategoriach. Mam zestaw danych z tweetami (które są opatrzone przypisami) i mam słownik na kategorię słów, które należą do tej kategorii. Biorąc pod uwagę te informacje, w jaki sposób można obliczyć PMI dla każdej kategorii na tweet, aby sklasyfikować tweet w jednej z tych kategorii.Poufna wzajemna informacja na temat tekstu

Odpowiedz

25

PMI jest miarą powiązania między cechą (w twoim przypadku wyrazem) a klasą (kategorią), a nie między dokumentem (tweetem) a kategorią. Formuła jest dostępny na Wikipedia:

    P(x, y) 
pmi(x ,y) = log ------------ 
        P(x)P(y) 

W tym wzorze, X jest zmienną losową, że modele wystąpieniu słowo, a Y modeluje wystąpienie klasy. Dla danego słowa x i danej klasy y można użyć PMI, aby zdecydować, czy dana funkcja ma charakter informacyjny, czy nie, i na tej podstawie można dokonać wyboru cech. Posiadanie mniejszej ilości funkcji często poprawia wydajność twojego algorytmu klasyfikacji i znacznie go przyspiesza. Etap klasyfikacji jest jednak oddzielny - PMI pomaga tylko wybrać lepsze funkcje, które można zastosować w algorytmie uczenia się.


Edit: Jedno nie wspomnieć w oryginalnym wątku jest to, że PMI jest wrażliwy na częstotliwościach słownych. Załóżmy przepisać wzór jak

    P(x, y)    P(x|y) 
pmi(x ,y) = log ------------ = log ------------ 
        P(x)P(y)    P(x) 

Kiedy x i y są doskonale skorelowane, P(x|y) = P(y|x) = 1, więc pmi(x,y) = 1/P(x). Rzadziej x -es (słowa) będzie miał wyższy wynik PMI niż częste x -es, nawet jeśli oba są doskonale skorelowane z y.

+0

Następne pytanie. Mówisz "X jest zmienną losową, która modeluje wystąpienie słowa". Czy tak wiele razy słowo pojawia się w całym zestawie danych? na przykład Mam 250 000 zdań, x to ile razy słowo pojawia się w całym zestawie danych? A co z p (x, y), w jaki sposób powinienem to interpretować? ilość razy x i y występują razem w zdaniu? – Ojtwist

+10

'P (x)' to prawdopodobieństwo wystąpienia słowa "x" (małe litery), które jest stosunkiem liczby dokumentów zawierających słowo do całkowitej liczby dokumentów. 'P (y)' oznacza prawdopodobieństwo klasy (kategorii) "y", która jest obliczana w podobny sposób. 'P (x, y)' jeśli stosunek między liczbą dokumentów, które są * obie * etykiety "y" i zawierają słowo "x" oraz całkowitą liczbę dokumentów. – mbatchkarov

+0

Czy naprawdę potrzebujesz znormalizować liczenia jako prawdopodobieństwa, dzieląc przez liczbę dokumentów? Wiem, że otrzymujesz inną liczbę pmi(), ale względna pmi() pomiędzy różnymi parami (X, Y) pozostaje taka sama, a rzeczywista wartość pmi nic nie znaczy, tak czy inaczej? Mogę tylko zobaczyć, że normalizacja jest przydatna przy porównywaniu pmi w różnych zestawach dokumentów (z różną liczbą dokumentów). – kane

Powiązane problemy