Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取簇词_Python_K Means_Doc2vec - Fatal编程技术网

Python 如何获取簇词

Python 如何获取簇词,python,k-means,doc2vec,Python,K Means,Doc2vec,如何获取每个簇的单词 我把他们分成几组 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 text

如何获取每个簇的单词

我把他们分成几组


    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)


我可以获得文本及其簇,但如何学习主要创建这些组的单词

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

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

例如,计算整个语料库中每个单词的频率,然后计算每个集群中每个单词的频率。对于每个簇,报告簇内频率为整个语料库频率最大倍数的N个单词。这会为您的数据提供有用的结果吗?你得试试

另外,关于使用
Doc2Vec

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

  • 如果您将语料库,
    all\u content\u train
    提供给对象初始化,就像您的代码那样,那么您不需要调用
    train()
    。培训将自动进行。如果您确实需要超过默认训练量(
    epochs=5
    ),只需为初始化提供更大的
    epochs
    值即可

  • 您提供给
    train()
    start\u alpha=0.002,end\u alpha=-0.016
    –的学习率值是无意义的和破坏性的。很少有用户需要修改这些
    alpha
    值,但尤其是,他们不应该像这些值那样从训练周期的开始到结束增加

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