如何获得聚类词

2024-05-23 13:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能得到每一组的单词

我把他们分成几组


    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)

我可以得到文本和它的簇,但我如何才能学习的话,主要创造了这些群体


Tags: alphamodelcounttraincontentallminfit
1条回答
网友
1楼 · 发布于 2024-05-23 13:37:17

列出与任何文档或文档向量最相关的单词并不是Doc2Vec的固有特性(其他算法(如LDA)也会提供这种功能。)

因此,您可以编写自己的代码,一旦您将文档拆分为多个簇,就可以报告每个簇中“最过度表示”的单词

例如,计算每个词在整个语料库中的频率,然后计算每个词在每个聚类中的频率。对于每个聚类,报告聚类内频率为整个语料库频率最大倍数的N个单词。这是否会为您的数据提供有用的结果,以满足您的需求?你得试试

另外,关于Doc2Vec的使用:

  • 没有充分的理由将现有类TaggedDocument别名为一个奇怪的类名,如LabeldSentence1。直接使用TaggedDocument

  • 如果您像代码那样将语料库all_content_train提供给对象初始化,那么您就不需要同时调用train()。训练已经自动进行了。如果您确实需要超过默认训练量(epochs=5),只需为初始化提供更大的epochs

  • 您提供给train()start_alpha=0.002, end_alpha=-0.016的学习率值毫无意义&;破坏性的。很少有用户需要修改这些alpha值,但特别是,他们不应该像这些值那样,从训练周期的开始到结束都增加

  • 如果运行时在信息级别启用了日志记录,和/或密切关注输出,则可能会看到指示正在进行过多训练的读数和警告,或者使用了有问题的值

相关问题 更多 >