Вы перебираете свой массив x
, начиная со слова tokens. В массиве нет 9 элементов, поэтому, когда i
пытается go выше 3, он не может найти индексированный элемент в списке.
Используйте длину массива x
в качестве диапазона:
import nltk
from nltk.tokenize import sent_tokenize
from nltk.tokenize import word_tokenize
from nltk.corpus import wordnet
mytext = "Hello Adam how are you? I hope everything is going well. Today is a good day, see you dude."
print(sent_tokenize(mytext))
y = sent_tokenize(mytext)
print(y[0])
x = word_tokenize(y[0])
print(x)
for i in range(len(x)):
syn = wordnet.synsets(x[i])
if syn:
syn = syn[0]
else:
print('no')
continue
w1 = wordnet.synset('play.n.01')
w2 = wordnet.synset(syn.name())
print(w1.wup_similarity(w2))
output
['Hello Adam how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']
Hello Adam how are you?
['Hello', 'Adam', 'how', 'are', 'you', '?']
0.42857142857142855
0.14285714285714285
no
0.2857142857142857
no
no
После прочтения документов я заметил, что ваш код w1 = wordnet.synset('play.n.01')
выполняет сравнение имен существительных. Так что 'no'
печатается не для существительных.