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