Python - Textklassifizierung

Oft müssen wir den verfügbaren Text nach vordefinierten Kriterien in verschiedene Kategorien einteilen. nltk bietet eine solche Funktion als Teil verschiedener Korpora. Im folgenden Beispiel sehen wir uns das Korpus der Filmkritik an und überprüfen die verfügbare Kategorisierung.

# Lets See how the movies are classified
from nltk.corpus import movie_reviews
all_cats = []
for w in movie_reviews.categories():
    all_cats.append(w.lower())
print(all_cats)

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:

['neg', 'pos']

Schauen wir uns nun den Inhalt einer der Dateien mit einer positiven Bewertung an. Die Sätze in dieser Datei sind tokenisiert und wir drucken die ersten vier Sätze, um das Beispiel zu sehen.

from nltk.corpus import movie_reviews
from nltk.tokenize import sent_tokenize
fields = movie_reviews.fileids()
sample = movie_reviews.raw("pos/cv944_13521.txt")
token = sent_tokenize(sample)
for lines in range(4):
    print(token[lines])

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe -

meteor threat set to blow away all volcanoes & twisters !
summer is here again !
this season could probably be the most ambitious = season this decade with hollywood churning out films 
like deep impact , = godzilla , the x-files , armageddon , the truman show , 
all of which has but = one main aim , to rock the box office .
leading the pack this summer is = deep impact , one of the first few film 
releases from the = spielberg-katzenberg-geffen's dreamworks production company .

Als nächstes tokenisieren wir die Wörter in jeder dieser Dateien und finden die häufigsten Wörter mithilfe der FreqDist-Funktion von nltk.

import nltk
from nltk.corpus import movie_reviews
fields = movie_reviews.fileids()
all_words = []
for w in movie_reviews.words():
    all_words.append(w.lower())
all_words = nltk.FreqDist(all_words)
print(all_words.most_common(10))

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe -

[(,', 77717), (the', 76529), (.', 65876), (a', 38106), (and', 35576), 
(of', 34123), (to', 31937), (u"'", 30585), (is', 25195), (in', 21822)]