0

当我似乎偶然发现标题中提到的这个 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

欢迎任何建议。

4

1 回答 1

0

问题在于单个代码 -

tfidf_matrix[idx] = []

删除了这个,它工作得很好。

于 2015-09-18T04:36:50.017 回答