wordnet NLTK Re: AttributeError: 'list' object has no attribute 'lower'

Token Type typetoken at gmail.com
Sat Sep 8 13:32:59 EDT 2012


I don't know why lemma_list = [synset.lemma_names for synset in synset_list] will lead to such an error. 

I have to use extend to solve the problem for lemma_list. The following codes are successful, take all the nouns as an example:

>>> 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 lemma_list:
     sense_number_new = len(wn.synsets(lemma, pos))
     sense_number = sense_number + sense_number_new
  return sense_number/len(synset_list)

>>> average_polysemy('n')
3

> 
> I wrote the following function to solve it. However, it pops up "AttributeError: 'list' object has no attribute 'lower'". Quite confused, I supposed [synset.lemma_names for synset in synset_list] has made all the lemma into a list, hasn't it?
> 
> 
> 
> >>> def average_polysemy(pos):
> 
> 	synset_list = list(wn.all_synsets(pos))
> 
> 	lemma_list = [synset.lemma_names for synset in synset_list]
> 
> 	sense_number = 0
> 
> 	for lemma in lemma_list:
> 
> 		sense_number_new = len(wn.synsets(lemma, pos))
> 
> 		sense_number = sense_number + sense_number_new
> 
> 	return sense_number/len(synset_list)
> 
> 
> 
> >>> average_polysemy('n')
> 
> 
> 
> Traceback (most recent call last):
> 
>   File "<pyshell#54>", line 1, in <module>
> 
>     average_polysemy('n')
> 
>   File "<pyshell#53>", line 6, in average_polysemy
> 
>     sense_number_new = len(wn.synsets(lemma, pos))
> 
>   File "C:\Python27\lib\site-packages\nltk\corpus\reader\wordnet.py", line 1191, in synsets
> 
>     lemma = lemma.lower()
> 
> AttributeError: 'list' object has no attribute 'lower'
> 
> 
> 
> Thanks for your tips



More information about the Python-list mailing list