2016-05-15 2 views
0

Я начал работать с nltk, и я пытаюсь сгенерировать функцию, которая позволила бы мне передать прилагательное, извлечь первый синтаксис из wordnet и распечатать его вместе с антонимом. Ее мой код:Wordnet synset - странный индекс списка вне диапазона Ошибка

def placementOperator(wordItem): 
    wordnet_lemmatizer = WordNetLemmatizer() 
    placementItem = wordnet_lemmatizer.lemmatize(wordItem,'a') 
    print("The placementItem is: " + placementItem) 
    iterationSet = wn.synsets(placementItem, 'a') 
    if iterationSet[0]: 
     print(" This is the SS NAME : " + iterationSet[0].name()) 
     for j in iterationSet[0].lemmas(): 
      print(" This is the LEMMAAAA: " + j.name()) 
      if j.antonyms(): 
       print(" This is the RElATIONSHIP " + j.name(), j.antonyms()[0].name()) 
      else: print(" _______> NO ANTONYM!") 
    else: pass 

Я почти нет, за исключением того, что мой переводчик бросает «список из диапазона» исключения. Я знаю, что я не могу назвать позицию списка, которая не существует, и я знаю, что эта ошибка возникает, когда вы пытаетесь это сделать. Но поскольку я явно тестирую это с помощью , если iterationSet [0] Я не уверен, что в любом случае я получаю ошибку.

Любой совет будет высоко оценен.

Ее это ошибка:

Traceback (most recent call last): 
    File "C:/Users/Admin/PycharmProjects/momely/associate/associate.py", line 57, in <module> preProcessor(0) 
    File "C:/Users/Admin/PycharmProjects/momely/associate/associate.py", line 54, in preProcessor placementOperator(each_element[0]) 
    File "C:/Users/Admin/PycharmProjects/momely/associate/associate.py", line 31, in placementOperator if iterationSet[0]: 
IndexError: list index out of range 

ответ

1

Скорее всего, wn.synsets(placementItem, 'a') возвращается вам пустой список. Это может произойти, если placementItem не находится в wordnet.

Поэтому, когда вы сделали iterationSet[0], он выдает исключение за пределами допустимого диапазона. Вместо этого, вы можете изменить свой чек, чтобы быть:

if iterationSet: 
    print(.... 
    .... 

вместо

if iterationSet[0]: 
    print(... 
Смежные вопросы