> Try backdenting that statement. You're currently doing it at every
> 
> iteration of the loop - that's why it's so much slower.

Thanks. I works now.

>>> def average_polysemy(pos):
        synset_list = list(wn.all_synsets(pos))
        sense_number = 0
        lemma_list = []
        for synset in synset_list:
                lemma_list.extend(synset.lemma_names)           
        for lemma in list(set(lemma_list)):
                sense_number_new = len(wn.synsets(lemma, pos))
                sense_number = sense_number + sense_number_new
        return sense_number/len(set(lemma_list))

>>> average_polysemy('n')
1

 
> But you'll probably find it better to work with the set directly,
> 
> instead of uniquifying a list as a separate operation.

Yes, the following second methods still runs faster if I don't give a separate 
variable name to list(set(lemma_list)). Why will this happen?

>>> def average_polysemy(pos):
        synset_list = list(wn.all_synsets(pos))
        sense_number = 0
        lemma_list = []
        for synset in synset_list:
                lemma_list.extend(synset.lemma_names)           
        for lemma in list(set(lemma_list)):
                sense_number_new = len(wn.synsets(lemma, pos))
                sense_number = sense_number + sense_number_new
        return sense_number/len(set(lemma_list))

>>> average_polysemy('n')
1
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to