Ciao ho un dubbio. Sto applicando l'algoritmo di lesk (modificato) per fare disambiguation ma non ci sto riuscendo.
Quello che ho attualmente è:
token -> pos_Tag ->stop_word remove-> stemmed
in output
tokens no stop
codice:[('I', 'PRP'), ('love', 'VBP'), ('supporting', 'VBG'), ('every', 'DT'), ('day', 'NN')]
token stemmed
codice:[(u'I', 'PRP'), (u'love', 'VBP'), (u'support', 'VBG'), (u'everi', 'DT'), (u'day', 'NN')]
avevo pensato di passare questa funzione per il disambiguation ma non penso sia corretta o pienamente attinente al mio codice... Qualcuno riesce ad aiutarmi? Magari se qualcuno lascia la mail riesco a mandare il mio file e l'eventuale collocazione così da darmi una bella dritta!
codice:def word_sense_disambiguate(word, wn_pos, tweet): senses = wordnet.synsets(word, wn_pos) if len(senses) >0: cfd = nltk.ConditionalFreqDist( (sense, def_word) for sense in senses for def_word in sense.definition.split() if def_word in tweet) best_sense = senses[0] # start with first sense for sense in senses: try: if cfd[sense].max() > cfd[best_sense].max(): best_sense = sense except: pass return best_sense else: return None

Rispondi quotando
