当我似乎偶然发现标题中提到的这个 IndexError 时,我试图重写 TFIDF 函数(供我自己使用)。现在,我对此进行了一些阅读,但仍然无法正确理解其含义-这似乎暗示具有此索引的元素不存在,但事实并非如此(据我所知) . 将非常感谢对我的这个愚蠢错误的一些帮助。感谢您的帮助。
代码如下 -
tfidf_matrix = [[0 for x in range(len(txt2))] for j in set(nltk.word_tokenize(full1))]
def search1(vocab1,searchFor):
m=0
for word,indexNo in vocab1.items():
if word==str(searchFor):
m=indexNo
break
else:
m=len(vocab1)+10
return m
j=0
for idx in range(len(txt2)):
post = txt2[idx]
tfidf_matrix[idx] = []
for term in set(nltk.word_tokenize(post)):
k = search1(vocab,str(term))
if k<len(vocab):
tfidf_matrix[k][idx] = tfidf(term,post,txt2)
else:
vocab[str(term)]= j
tfidf_matrix[j][idx] = tfidf(term,post,txt2)
j=j+1
txt2 是我的语料库。它有 2415 个文档。full1 是 txt1 的串联版本,即 txt1 的所有字符串串联,以便我事先知道要制作 tfidf 矩阵的列数。
回溯如下:
Traceback (most recent call last):
File "<ipython-input-6-5cb754d2e391>", line 23, in <module>
tfidf_matrix[j][idx] = tfidf(term,post,txt2)
IndexError: list assignment index out of range
欢迎任何建议。