2017-08-17 1 views
1

自分のファイルに対してldaモデルを実行しようとしています。まず、トークン化や単語削除のような前処理を行いました。私は複数のファイルに対してこれをやっていますが、最終出力をldaモデルに渡すとエラーになり、ldaが複数のファイルを入力として受け取ることがGoogleで分かりました。 今、私は各ファイルの出力を配列に格納し、その配列を入力として渡したいが、IndexError:リスト割り当てインデックスが範囲外です。私は何が問題なのか分かりません。どんな助けでも大変感謝しています!複数のファイルの出力を配列に渡す方法

# URDU STOP WORDS REMOVAL 
    doc_clean = [] 
    stopwords_corpus = UrduCorpusReader('./data', ['stopwords-ur.txt'])  
    stopwords = stopwords_corpus.words() 
    count = 1 
    # print(stopwords) 
    for infile in (wordlists.fileids()): 
     words = wordlists.words(infile) 
     finalized_words = remove_urdu_stopwords(stopwords, words) 
     doc_clean[count] = finalized_words 
     print(doc_clean) 
     count =count+1 
     print("\n==== WITHOUT STOPWORDS ===========\n") 
     print(finalized_words) 
     id2word = corpora.Dictionary(doc_clean) 
     mm = [id2word.doc2bow(text) for text in texts] 
     lda = models.ldamodel.LdaModel(corpus=mm, id2word=id2word, num_topics=3, update_every=1, chunksize=10000, passes=1) 
+1

どのラインでエラーが発生しますか?あなたはスタックトレースを持っていますか? 問題は 'count = 1'で始まっていると思います。後で 'doc_clean [count]'を呼び出します。これは明らかに0ではなくインデックス1で始まります。 –

+0

'doc_clean.append(finalized_words)'を使います。 'append'はリストに項目を追加するためのリストメソッドです。 –

+0

@MaxM空リストでは、このような要素にアクセスしたり追加したりすることができないため、エラーが発生します。 –

答えて

0

ここではcount変数を使用する必要はありません。リストには、リストに要素を追加する関数appendがあります。の2番目の要素にして、あなたは空のリストとしてdoc_clean定義しますが、最初の反復であなたは、カウント= 1で[カウント] doc_clean参照この

doc_clean.append(finalized_words) 
+0

それは働いていましたが、それは1つの場所でテキストファイルのすべての出力を組み合わせています。どうすればいいですか?doc_clean = [doc1、doc2、doc3、doc3 .....] – user3778289

+0

@ user3778289 'doc_clean.append([finalized_words])'これを行う –

+0

私はそれをしました。しかし、それは1つのファイル内のすべてのファイルを結合しています。 – user3778289

0


変更この

doc_clean[count] = finalized_words 

空リスト

そして、もう数の使用がない

doc_cleanappend(finalized_words) 

doc_clean[count]=finalized_words 

を交換してください。

+0

doc_clean.append(finalized_words)。これは、配列を作成しますか?私の出力がtextfile1、textfile2などのようないくつかのファイルのようなものなら、このappendはすべてを追加します?? – user3778289

関連する問題