2017-08-17 3 views
1

J'essaie d'exécuter le modèle lda sur mes fichiers. Tout d'abord j'ai fait un peu de pré-traitement comme tokenization et arrêter la suppression de mots. Je fais ceci pour plusieurs fichiers, mais quand je passe la sortie finale au modèle lda cela me donne une erreur et j'ai vu dans Google que lda prend plusieurs fichiers comme entrée. Maintenant, je veux stocker la sortie de chaque fichier dans un tableau, puis passer ce tableau comme une entrée, mais il me donne aussi une erreur IndexError: indice d'attribution de liste hors de portée. Je ne sais pas quel est le problème. Toute aide serait grandement appréciée, merci!comment passer la sortie de plusieurs fichiers à un tableau

# 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

À quelle ligne l'erreur se produit-elle? Avez-vous un stacktrace? Je suppose que le problème commence avec 'count = 1'. Plus tard, vous appelez 'doc_clean [count]' qui commence évidemment par l'index 1 au lieu de 0 –

+0

Utilisez 'doc_clean.append (finalized_words)' où 'append' est une méthode de liste pour ajouter des éléments dans la liste. –

+0

@MaxM Il donnera toujours une erreur car dans une liste vide vous ne pouvez pas accéder ou ajouter des éléments comme celui-ci. –

Répondre

0

Pas besoin d'utiliser la variable count ici. La liste fournit la fonction append pour ajouter des éléments dans une liste.
Modifier cette

doc_clean[count] = finalized_words 

Pour ce

doc_clean.append(finalized_words) 
+0

cela a fonctionné, mais il combine toute la sortie des fichiers texte en un seul endroit.Comment puis-je le faire doc_clean = [doc1, doc2, doc3, doc3 .....] – user3778289

+0

@ user3778289 'doc_clean.append ([mots finalisés])' faites-le –

+0

je l'ai fait. mais il combine tous les fichiers dans un fichier. – user3778289

0

Vous définissez doc_clean liste vide, mais dans la première itération vous faites référence [count] doc_clean avec count = 1, donc au deuxième élément d'un liste vide.

Remplacer la

doc_clean[count]=finalized_words 

avec

doc_cleanappend(finalized_words) 

alors il n'y a pas utiliser de compter plus.

+0

doc_clean.append (finalized_words). Cela fera un tableau? Comme si ma sortie est comme de certains fichiers comme textfile1, textfile2 et ainsi de suite.ce append ajoutera le tout? – user3778289