Python - Classificazione del testo

Molte volte, abbiamo bisogno di classificare il testo disponibile in varie categorie in base ad alcuni criteri predefiniti. nltk fornisce tale funzionalità come parte di vari corpora. Nell'esempio seguente esaminiamo il corpus di recensioni dei film e controlliamo la categorizzazione disponibile.

# 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)

Quando eseguiamo il programma sopra, otteniamo il seguente output:

['neg', 'pos']

Ora diamo un'occhiata al contenuto di uno dei file con una recensione positiva. Le frasi in questo file sono tokenizzate e stampiamo le prime quattro frasi per vedere l'esempio.

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])

Quando eseguiamo il programma sopra, otteniamo il seguente output:

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 .

Successivamente, tokenizziamo le parole in ciascuno di questi file e troviamo le parole più comuni utilizzando la funzione FreqDist di 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))

Quando eseguiamo il programma sopra, otteniamo il seguente output:

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