как получить слова кластеров - PullRequest
       24

как получить слова кластеров

0 голосов
/ 23 сентября 2019

Как я могу получить слова каждого кластера

Я разделил их на группы


    LabeledSentence1 = gensim.models.doc2vec.TaggedDocument
    all_content_train = []
    j=0
    for em in train['KARMA'].values:
        all_content_train.append(LabeledSentence1(em,[j]))
        j+=1
    print('Number of texts processed: ', j)


    d2v_model = Doc2Vec(all_content_train, vector_size = 100, window = 10, min_count = 500, workers=7, dm = 1,alpha=0.025, min_alpha=0.001)
    d2v_model.train(all_content_train, total_examples=d2v_model.corpus_count, epochs=10, start_alpha=0.002, end_alpha=-0.016)```



    ```kmeans_model = KMeans(n_clusters=10, init='k-means++', max_iter=100)
    X = kmeans_model.fit(d2v_model.docvecs.doctag_syn0)
    labels=kmeans_model.labels_.tolist()
    l = kmeans_model.fit_predict(d2v_model.docvecs.doctag_syn0)
    pca = PCA(n_components=2).fit(d2v_model.docvecs.doctag_syn0)
    datapoint = pca.transform(d2v_model.docvecs.doctag_syn0)

Я могу получить текст и его кластер, но как я могу выучить слова, которые в основном создалиэти группы

1 Ответ

0 голосов
/ 23 сентября 2019

Это не присущая Doc2Vec возможность перечислять слова, наиболее связанные с любым документом или вектором документа.(Другие алгоритмы, такие как LDA, предложат это.)

Таким образом, вы можете написать свой собственный код после разделения документов на кластеры, чтобы сообщать о словах, которые «наиболее широко представлены».«в каждом кластере.

Например, вычислите частоту каждого слова во всем корпусе, а затем частоту каждого слова в каждом кластере.Для каждого кластера укажите N слов, чья частота внутри кластера является наибольшим кратным полной частоте корпуса.Даст ли это полезные результаты для ваших данных, для ваших нужд?Вы должны попробовать это.

Отдельно, относительно вашего использования Doc2Vec:

  • нет веских оснований для псевдонима существующего класса TaggedDocument для странного имени класса, такого как LabeldSentence1.Просто используйте TaggedDocument напрямую.

  • , если вы предоставляете свой корпус, all_content_train, для инициализации объекта - как это делает ваш код - тогда вы не нужно также позвонить train().Обучение уже произошло автоматически.Если вы хотите больше, чем объем обучения по умолчанию (epochs=5), просто укажите большее значение epochs для инициализации.

  • значения скорости обучения, которые вы указалидо train() - start_alpha=0.002, end_alpha=-0.016 - бессмысленно и разрушительно.Немногим пользователям нужно вообще возиться с этими alpha значениями, но особенно, они никогда не должны увеличивать с начала и до конца тренировочного цикла, как это делают значения.

  • Если вы работаете с включенным ведением журнала на уровне INFO и / или внимательно следите за выходными данными, вы, скорее всего, увидите показания и предупреждения, указывающие на чрезмерное обучение или использование проблемных значений.,

...