2016-05-15 7 views
0

Ich begann mit nltk zu arbeiten und versuche eine Funktion zu generieren, die es mir erlaubt, ein Adjektiv einzugeben, das erste synset aus dem wordnet zu extrahieren und neben seinem Antonym auszudrucken. Sie ist mein Code:Wordnet synset - seltsamer Listenindex außerhalb des Bereichs Fehler

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 

ich fast da bin, mit der Ausnahme, dass mein Dolmetscher ‚außerhalb des zulässigen Bereichs Liste‘ exception eine wirft. Ich weiß, dass ich nicht eine Listenposition aufrufen kann, die nicht existiert, und ich weiß, dass dieser Fehler auftritt, wenn man versucht, dies zu tun. Aber da ich dies explizit mit teste, wenn iterationSet [0] bin ich mir nicht sicher, wie ich mit dem Fehler sowieso enden werde.

Jeder Rat würde sehr geschätzt werden.

ihr der Fehler ist:

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 

Antwort

1

Höchstwahrscheinlich wn.synsets(placementItem, 'a') zurück Sie eine leere Liste. Dies kann passieren, wenn placementItem nicht in Wordnet ist.

Wenn Sie also iterationSet[0] getan haben, wird eine Ausnahme außerhalb des Bereichs ausgelöst. Stattdessen können Sie Ihren Scheck ändern:

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

statt

if iterationSet[0]: 
    print(... 
Verwandte Themen