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