Reputation: 3158
I'm creating lemmas and synsets for Italian language using NLTK Wordnet, it looks okay:
from nltk.corpus import wordnet as wn
ll=wn.synsets('carta', lang='ita')
ll
[Synset('card.n.01'),
Synset('map.n.01'),
Synset('sheet.n.02'),
Synset('document.n.01'),
Synset('charter.n.01'),
Synset('menu.n.01'),
Synset('paper.n.01')]
hypernyms[0].lemmas(lang="ita")
[Lemma('paper.n.01.carta')]
But I'm trying to receive after the last operation not only one list value but list with all values for all synsets I have in ll
.
Used couple approaches but they don't work:
First one, still using NLTK:
lemmas = wn.lemmas(ll, lang="ita")
'list' object has no attribute 'lower'
And another with a loop:
i = iter(list(range(6)))
for i in ll[i].lemmas(lang='ita'):
print(ll[i].lemmas(lang='ita'))
list indices must be integers or slices, not list_iterator
How this could be solved?
Upvotes: 0
Views: 976
Reputation: 401
Use list comprehension
[synset.lemmas(lang='ita') for synset in ll]
output
[[Lemma('card.n.01.carta')],
[Lemma('map.n.01.carta'),
Lemma('map.n.01.carta_geografica'),
Lemma('map.n.01.cartina'),
Lemma('map.n.01.mappa')],
[Lemma('sheet.n.02.carta'), Lemma('sheet.n.02.foglio')],
[Lemma('document.n.01.atto'),
Lemma('document.n.01.carta'),
Lemma('document.n.01.documento'),
Lemma('document.n.01.incartamento'),
Lemma('document.n.01.scrittura')],
[Lemma('charter.n.01.carta'), Lemma('charter.n.01.statuto')],
[Lemma('menu.n.01.carta'), Lemma('menu.n.01.menu'), Lemma('menu.n.01.menù')],
[Lemma('paper.n.01.carta')]]
Upvotes: 2