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 に答える