Forum >> Principianti >> analizzare un testo

Pagina: 1

Ciao a tutti, spero mi possiate aiutare!
Premetto che sono proprio impedita e sono alle prime armi.

Io devo lavorare ad un testo con Python, il testo l'ho copiato da internet. Il codice è già stato scritto, ma quando inizio a vedere se funziona non mi scrive l'output delle funzioni che definisco, ma non mi da nemmeno errore.


Vorrei capire se il testo lo devo salvare da qualche altra parte oppure c'è un altro tipo di problema..




Spero mi possiate aiutare! Grazie
Ciao e benvenuta.

Hai dato un po' poche informazioni, come ad esempio su che piattaforma ti trovi e che versione del linguaggi usi. Comunque sia, senza capire esattamente quale sia il problema, dai un'occhiata qui per iniziare.

Cya
Ops è vero. La versione è la 2.7 per mac.
Il codice è questo ma non mi da gli output delle funzioni, mentre una volta me li dava.

Non so spiegarmi meglio di così purtroppo.. :embarrassed:




import nltk


import pprint

import re

import random

global f,testo,tokens, lun

from nltk.collocations import *

f= open ('Morning has broken.txt', 'r') # apre il file in lettura

testo = f.read() # salva il file in una variabile

tokens= nltk.word_tokenize (testo) #divide il testo in token

lun = len(tokens)

def fun(): # definisce una funzione che stampa i token



print (tokens)




def conc(): # definisce una funzione che trova le occorrenze di una parola nel testo

print ("Scegli una parola")

parola = raw_input() #prende l'input da tastiera

x = nltk.Text(tokens)

conc = x.concordance(parola)

print (conc)




def conta(): # definisce una funzione che conta le parole del testo



print (" La lunghezza del testo è di " + str(lun)+ " parole")





# frequenza parole

def altaf():




x=0

y=0



lista_parole = re.split('\s+', testo) # prende una stringa che contiene parole e spazi e la trasforma in una lista di parole in base agli spazi

# Crea dizionario di parole

freq_diz = {}






# costruisce il dizionario

for word in lista_parole:





# conta

try:

freq_dizword += 1

except:

freq_dizword = 1







# crea una lista di tuple: perola & valore frequenza

freq_lista = [(val, key) for key, val in freq_diz.items()]




# ordina per livello di frequenza

freq_lista.sort(reverse=True)



# risultati

for freq, word in freq_lista:

if (freq!=1):

x+=1

print ("Frequenza: " + word + "," + str(freq))




else:

y+=1

print ("Hapax: " + word + "," + str(freq))







print ("Il numero di parole ripetute è "+str(x))

print("Il numero di Hapax é " + str(y))



# ricchezza lessicale

a=x+y #numero di type

b= float(a)/float(lun)

print ("La ricchezza lessicale corrisponde a "+ str(b))




# trova le prime 10 collocazioni

def coll():

bigram_measures = nltk.collocations.BigramAssocMeasures()

finder = BigramCollocationFinder.from_words(tokens)# trova le parole nella lista dei tokens

scored = finder.score_ngrams(bigram_measures.raw_freq)

r= sorted(bigram for bigram, score in scored)[:10]

print(r)



# conta il numero di caratteri presenti nel testo

def conta_caratteri ():

conteggio = {}

for c in testo:

if c in conteggio:

conteggioc += 1

else:

conteggio c = 1




return conteggio




# fa l'analisi sintattica di una frase nominale

def chunk():



print ("Esempio albero sintattico di una frase nominale")




nominale = "NP: {<DT>?<JJ>*<NN>}"

frase = [("Il", "DT"), ("mio", "JJ"), ("migliore", "JJ"), ("amico", "NN"), ("vegetariano", "NN")]

cp = nltk.RegexpParser(nominale)

risultato = cp.parse(frase)

print (risultato)




# classificatore Naive-Bayes per individuare il genere di una parola

def finale(word):



return {'Ultima lettera': word-1}






def genere():

from nltk.corpus import names

names = ([(name, 'male') for name in names.words('male.txt')] + [(name, 'female') for name in names.words('female.txt')])



random.shuffle(names)




featuresets = [(finale(n), g) for (n,g) in names]

train_set, test_set = featuresets[500:], featuresets[:500]

classifier = nltk.NaiveBayesClassifier.train(train_set)



print ("Inserisci di nuovo il nome")

word= raw_input()

print (classifier.classify(finale(word)))

ac= nltk.classify.accuracy(classifier, test_set) #calcolo la percentuale di risposte corrette del classificatore

print ("L'accuratezza del risultato è " + str(ac))







classifier.show_most_informative_features(5)

In Python la formattazione del codice è parte integrante del codice stesso. Per questo, anche e soprattutto se il file non è di poche righe, va formattato correttamente per far capire qualcosa a chi legge.

Per questo puoi usare il pulsante che formatta il codice (quello prima della tavolozza dei colori) o usare una piattaforma come Pastebin postando poi l'url.

Cosa intendi per avevi un riscontro ed ora non lo hai? Partiamo dalla cosa più banale, esiste il file Morning has broken.txt (Cat Stevens?) dove esegui lo script e contiene al suo interno qualcosa?

Cya
Si il file esiste e si chiama "morning has broken.txt". Praticamente quando faccio "run module" e inizio a digitare, esempio "def conta():" e invio mi manda alla riga successiva senza problemi ma non mi fa vedere il "risultato". ho cambiato il testo dopo aver finito il codice perché non mi convinceva e allora ho sostituito a f=open ('...', 'r') il file "morning has beoken.txt", forse è stato quello il problema..aiutoo ;(


Pagina: 1



Esegui il login per scrivere una risposta.