Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
import sys
import codecs
import nltk
import math
from nltk import bigrams
from operator import attrgetter
class DatiBigramma:
bigramma = ('','')
frequenza = 0.0
forzaAssociativa = 0.0
def analisiLinguistica(frasi):
tokens = []
tokensPOS = []
entitaPersona = []
entitaLuogo = []
bigrammi = []
for frase in frasi:
tok = nltk.word_tokenize(frase)
tokens = tokens + tok
tokensPOS = nltk.pos_tag(tokens)
bigrammi = bigrams(tokensPOS)
# Analisi name entity
analisi = nltk.ne_chunk(tokensPOS)
for nodo in analisi:
if hasattr(nodo, "node"):
if nodo.node in ["PERSON"]:
for partNE in nodo.leaves():
entitaPersona.append((partNE[0], nodo.node))
if nodo.node in ["GPE"]:
for partNE in nodo.leaves():
entitaLuogo.append((partNE[0], nodo.node))
return tokens, tokensPOS, entitaPersona, entitaLuogo, bigrammi
# Controlla che le occorrenze nel testo di ogni token della frase siano almeno 2
def occorrenzeTokensFraseMaggioriUno(fraseTokenizzata, listaTokens):
for token in fraseTokenizzata:
if listaTokens.count(token) < 2:
return False
return True
print "OBAMA"
print "Primi 20 tokens più frequenti:"
for element in distribuzioneObama:
if indice < 20:
print element, distribuzioneObama[element]
indice = indice + 1
print
print "Primi 10 POS:"
indice = 0
for element in distribuzionePOSObama:
if indice < 10:
print element, distribuzionePOSObama[element]
indice = indice + 1
print
indice = 0
print "Primi 10 Bigrammi in ordine di frequenza e forza associativa"
for element in bigrammiAnalizzatiObama:
if indice < 10:
print element.bigramma, "Freq:", element.frequenza, "LMI", element.forzaAssociativa
indice = indice + 1
print
print "Frase con probabilita massima:", fraseObamaProbabilitaMassima
print "Luoghi e persone nominati da Obama"
print "PERSONE"
for persone in nePersoneObama:
print persone, nePersoneObama[persone]
print "LUOGHI"
for luoghi in neLuoghiObama:
print luoghi, neLuoghiObama[luoghi]
indice = 0
print
print "************************************************************"
print
print "ROMNEY"
print "Primi 20 tokens più frequenti:"
for element in distribuzioneRomney:
if indice < 20:
print element, distribuzioneRomney[element]
indice = indice + 1
indice = 0
print
print "Primi 10 POS:"
for element in distribuzionePOSRomney:
if indice < 10:
print element, distribuzionePOSRomney[element]
indice = indice + 1
print
indice = 0
print "Primi 10 Bigrammi in ordine di frequenza e forza associativa"
for element in bigrammiAnalizzatiRomney:
if indice < 10:
print element.bigramma, "Freq:", element.frequenza, "LMI", element.forzaAssociativa
indice = indice + 1
print
print "Frase con probabilita massima:", fraseRomneyProbabilitaMassima
print "Luoghi e persone nominati da Romney"
print "PERSONE"
for persone in nePersoneRomney:
print persone, nePersoneRomney[persone]
print "LUOGHI"
for luoghi in neLuoghiRomney:
print luoghi, neLuoghiRomney[luoghi]
main(sys.argv[1], sys.argv[2])