繁体   English   中英

此错误来自 IndexError: list index out of range

[英]this error comes IndexError: list index out of range

这个程序是为了找到 a 句子和单词之间的相似之处,以及它们在同义词中的相似之处 我已经下载了 nltk,当我第一次编码它时,它运行并且没有错误,但是在我运行程序几天后在此处输入图片说明

import nltk
nltk.download('stopwords')
nltk.download('wordnet')
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.corpus import wordnet as wn

filtered_uploaded_sentences = []
uploaded_sentence_synset = []
database_word_synset = []

uploaded_doc_sentence=" The issue of text semantics, such as word semantics and sentence semantics has received increasing attentions in recent years. However, rare research focuses on the document-level semantic matching due to its complexity. Long documents usually have sophisticated structure and massive information, which causes hardship to measure their semantic similarity. The semantic similarity between words, sentences, texts, and documents is widely studied in various fields, including natural language processing, document semantic comparison, artificial intelligence, semantic web, and semantic search engines. "
database_word=["car","complete",'focus',"semantics"]

stopwords = stopwords.words('english')
uploaded_sentence_words_tokenized = word_tokenize(uploaded_doc_sentence)

#filtering the sentence and synset

for word in uploaded_sentence_words_tokenized:
    if word not in stopwords:      
        filtered_uploaded_sentences.append(word)
print (filtered_uploaded_sentences)

for sentences_are in filtered_uploaded_sentences:
    uploaded_sentence_synset.append(wn.synsets(sentences_are))
    
print(uploaded_sentence_synset)

#for finding similrity in the words

for databasewords in database_word:
    database_word_synset.append(wn.synsets(databasewords)[0])
    
print(database_word_synset)

索引错误:列表索引超出范围
当uploaded_doc_sentence很短并且使用长句时会出现此错误

check.append(wn.wup_similarity(data,sen[0]))

我想比较句子和单词并存储结果。 这个类型

#the similarity main function for words

for data in database_word_synset:
    for sen in uploaded_sentence_synset :
        check.append(wn.wup_similarity(data,sen[0]))
print(check)

问题是,有包含在空列表uploaded_sentence_synset 我不确定您要做什么,但将最后一段代码修改为:

for data in database_word_synset:
    for sen in uploaded_sentence_synset:
        if sen:
            check.append(wn.wup_similarity(data, sen[0]))

如果没有 if-else 块,您实际上是在尝试索引列表的第一个元素,从而为您提供一个IndexError

通过从列表中删除空的 [] 列表块并将多维列表变成单维列表,问题就解决了

list2 = [x for x in main_sen if x != []]
print(list2)
result=list()
for t in list2: 
    for x in t: 
        result.append(x)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM