2017-09-16 5 views
0

J'ai une question sur la modélisation de sujet (lda). Je ne comprends pas complètement les principes de la modélisation de sujet, donc la question peut sembler étrange. Est-ce à la fin que cette phrase est aléatoire, est-ce une fréquence élevée (probabilité)?Interprétation d'instruction dans la modélisation de sujet

test = ranking[:5] 

Quelle est la signification exacte de cette phrase?

Mon code récupérait autant de sujets que le nombre de documents (j'ai entendu dire qu'il n'était pas possible de le réduire plus que le nombre de documents). J'en extrait seulement une partie, certains disent le représentant, certains disent que la fréquence est élevée, je ne connais pas le principe de.

import os 

import numpy as np 
import sklearn.feature_extraction.text as text 

from sklearn import decomposition 

CORPUS_PATH = os.path.join('data', 'test') 
filenames = sorted([os.path.join(CORPUS_PATH, fn) for fn in 
os.listdir(CORPUS_PATH)]) 

len(filenames) 
filenames[:5] 
print(filenames) 

vectorizer = text.CountVectorizer(input='filename', stop_words='english', 
min_df=20, encoding='iso-8859-1') 
dtm = vectorizer.fit_transform(filenames).toarray() 
vocab = np.array(vectorizer.get_feature_names()) 
dtm.shape 
aaa = len(vocab) 

num_topics = 20 
num_top_words = 20 
clf = decomposition.NMF(n_components = num_topics, random_state=1) 

doctopic = clf.fit_transform(dtm) 

#print words associated with topics 
topic_words = [] 
for topic in clf.components_: 
    word_idx = np.argsort(topic)[::-1][0:num_top_words] 
    topic_words.append([vocab[i] for i in word_idx]) 

doctopic = doctopic/np.sum(doctopic, axis=1, keepdims=True) 

novel_names = [] 
for fn in filenames: 
    basename = os.path.basename(fn) 
    name, ext = os.path.splitext(basename) 
    name = name.rstrip('') 
    novel_names.append(name) 

novel_names = np.asarray(novel_names) 
doctopic_orig = doctopic.copy() 

num_groups = len(set(novel_names)) 

doctopic_grouped = np.zeros((num_groups, num_topics)) 

for i, name in enumerate(sorted(set(novel_names))): 
    doctopic_grouped[i, :] = np.mean(doctopic[novel_names == name, :], axis=0) 

doctopic = doctopic_grouped 

novels = sorted(set(novel_names)) 
print("Top NMF topics in...") 
for i in range(len(doctopic)): 
    top_topics = np.argsort(doctopic[i,:])[::-1][0:3] 
    top_topics_str = ' '.join(str(t) for t in top_topics) 
    print("{}: {}".format(novels[i], top_topics_str)) 

for t in range(len(topic_words)): 
    print("Topic {}: {}".format(t, ' '.join(topic_words[t][:15]))) 

austen_indices, cbronte_indices = [], [] 
for index, fn in enumerate(sorted(set(novel_names))): 
    if "Austen" in fn: 
     austen_indices.append(index) 
    elif "CBronte" in fn: 
     cbronte_indices.append(index) 

austen_avg = np.mean(doctopic[austen_indices, :], axis=0) 
cbronte_avg = np.mean(doctopic[cbronte_indices, :], axis=0) 
keyness = np.abs(austen_avg - cbronte_avg) 
ranking = np.argsort(keyness)[::-1] 
test = ranking[:5] 

print(test) 

Répondre

1

ranking[:5] est connu comme une tranche. C'est une copie d'une sous-liste de ranking. Il est équivalent à ranking[0:5] et prend les 5 premiers éléments de la liste. Ceci est expliqué plus en détail here. (Recherchez-le dans le tableau et surtout consultez la note 4.)