2012-11-21 6 views
17

Ich frage mich, wie man die punktweise gegenseitige Information für Textklassifikation berechnen würde. Um genauer zu sein, möchte ich Tweets in Kategorien einteilen. Ich habe einen Datensatz von Tweets (die kommentiert sind), und ich habe ein Wörterbuch pro Kategorie von Wörtern, die zu dieser Kategorie gehören. Wie ist es möglich, anhand dieser Informationen den PMI für jede Kategorie pro Tweet zu berechnen, um einen Tweet in einer dieser Kategorien zu klassifizieren?Punktweise gegenseitige Information über Text

Antwort

25

PMI ist ein Maß für die Zuordnung zwischen einem Feature (in Ihrem Fall ein Wort) und einer Klasse (Kategorie), nicht zwischen einem Dokument (Tweet) und einer Kategorie. Die Formel ist auf Wikipedia:

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

In dieser Formel X der Zufallsvariable ist, die Modelle, das Auftreten eines Wortes und Y Modelle des Auftreten einer Klasse. Für ein gegebenes Wort x und eine gegebene Klasse y können Sie PMI verwenden, um zu entscheiden, ob eine Funktion informativ ist oder nicht, und Sie können auf dieser Basis eine Funktion auswählen. Wenn Sie weniger Features haben, wird die Leistung Ihres Klassifizierungsalgorithmus oft verbessert und die Geschwindigkeit erheblich erhöht. Der Klassifizierungsschritt ist jedoch getrennt - PMI hilft Ihnen nur bei der Auswahl besserer Funktionen, die Sie in Ihren Lernalgorithmus einspeisen können.


Edit: Eine Sache, die ich nicht in der ursprünglichen Post erwähnt habe, ist, dass PMI zu Wort Frequenzen empfindlich ist. Lassen Sie uns die Formel umschreiben als

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

Wenn x und y perfekt korreliert sind, P(x|y) = P(y|x) = 1, so pmi(x,y) = 1/P(x). Weniger häufig x -es (Wörter) haben einen höheren PMI-Wert als häufig x -e, auch wenn beide perfekt mit y korreliert sind.

+0

Eine Folgefrage. Sie sagen "X ist die Zufallsvariable, die das Auftreten eines Wortes modelliert". Wie oft kommt das Wort im gesamten Datensatz vor? z.B. Ich habe 250.000 Sätze, das x ist dann wie oft das Wort im gesamten Datensatz vorkommt? Und was ist mit p (x, y), wie müsste ich das interpretieren? wie oft x und y zusammen in einem Satz vorkommen? – Ojtwist

+10

'P (x)' ist die Wahrscheinlichkeit, dass das Wort "x" (Kleinbuchstabe) auftritt. Dies ist das Verhältnis zwischen der Anzahl der Dokumente, die das Wort enthalten, und der Gesamtzahl der Dokumente. 'P (y)' ist die Wahrscheinlichkeit der Klasse (Kategorie) 'y', die auf ähnliche Weise berechnet wird. 'P (x, y)' wenn das Verhältnis zwischen der Anzahl der Dokumente, die * beide * des Etiketts "y" sind und das Wort "x" und die Gesamtzahl der Dokumente enthalten. – mbatchkarov

+0

Müssen Sie wirklich die Anzahl in Wahrscheinlichkeiten normalisieren, indem Sie durch die Anzahl der Dokumente dividieren? Ich weiß, dass Sie eine andere pmi() Zahl bekommen, aber das relative pmi() zwischen verschiedenen Paaren von (X, Y) bleibt gleich und der tatsächliche Wert des pmi bedeutet sowieso nichts, oder? Ich kann die Normalisierung nur nützlich sehen, wenn ich pmi über verschiedene Dokumentensätze hinweg (mit unterschiedlichen Belegzahlen) vergleiche – kane

Verwandte Themen