Wordnet synset - 奇怪的列表索引超出范围错误

时间:2016-05-15 14:35:21

标签: python nltk wordnet

我开始使用nltk,我正在尝试生成一个允许我传入形容词的函数,从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 个答案:

答案 0 :(得分:1)

最有可能的是,wn.synsets(placementItem, 'a')返回了一个空列表。如果placementItem不在wordnet中,就会发生这种情况。

因此,当您执行iterationSet[0]时,它会抛出超出范围的异常。相反,您可以将支票更改为:

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

而不是

if iterationSet[0]:
   print(...