NLTK Wordnet получает список Synsets в Python - PullRequest
0 голосов
/ 02 июля 2018

Я создаю леммы и наборы для итальянского языка, используя NLTK Wordnet, все выглядит хорошо:

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')]

Но я пытаюсь получить после последней операции не только одно значение списка, но и список со всеми значениями для всех наборов, которые у меня есть в ll.

Используется пара подходов, но они не работают:

Первый, все еще использующий NLTK:

lemmas = wn.lemmas(ll, lang="ita")
'list' object has no attribute 'lower'

И еще один с циклом:

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

Как это можно решить?

1 Ответ

0 голосов
/ 03 июля 2018

Использовать понимание списка

[synset.lemmas(lang='ita') for synset in ll]

выход

[[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')]]
...