Можем ли мы дать большой набор данных LDA? - PullRequest
0 голосов
/ 17 сентября 2018

На самом деле у меня большой набор данных, который составляет 1,6 ГБ.Он содержит общие данные.Итак, я подумал о разделении данных по темам.

Итак, я использовал LDA для того же.Но это занимает так много времени, чтобы дать результат.

Для небольших данных производительность хорошая.Но для больших данных это влияет на производительность.

Может кто-нибудь посоветовать мне то же самое ...

dataset.txt:

I love food.
I like cricket.
I like reading books.
Her samsung mobile is not great.

Не знаюлюблю теннис.

Мой код:

from gensim.models import ldamodel
import gensim.corpora;
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer;
from sklearn.decomposition import LatentDirichletAllocation
import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)

def load_data(filename):
    reviews = list()
    labels = list()
    with open(filename, encoding='utf-8') as file:
        file.readline()
        for line in file:
            line = line.strip().split()
            reviews.append(line[0])

    return reviews

data = load_data('/Users/abc/dataset.txt')
#print("Data:" , data)

def display_topics(model, feature_names, no_top_words):
    for topic_idx, topic in enumerate(model.components_):
        print ("Topic %d:" % (topic_idx))
        print (" ".join([feature_names[i]
                        for i in topic.argsort()[:-no_top_words - 1:-1]]))


no_features = 100

tf_vectorizer = CountVectorizer(max_df=0.95, min_df=2, max_features=no_features, stop_words='english')
tf = tf_vectorizer.fit_transform(data)
tf_feature_names = tf_vectorizer.get_feature_names()

no_topics = 2

lda = LatentDirichletAllocation(n_topics=no_topics, max_iter=5, learning_method='online', learning_offset=50.,random_state=0).fit(tf)
no_top_words = 10


display_topics(lda, tf_feature_names, no_top_words)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...