Python 3.x 用k-means和Word2Vec预测新数据点的聚类

Python 3.x 用k-means和Word2Vec预测新数据点的聚类,python-3.x,nlp,k-means,word2vec,Python 3.x,Nlp,K Means,Word2vec,我一直在做一个正聚类和负聚类的聚类评论项目(使用k-means)(数据集是amazon alexa评论)。 矢量化部分分别以两种方式完成: 使用CountVectorizer() 使用Word2Vec 现在,我能够使用这两种矢量化技术创建集群,但在预测新数据点的集群时(在我的案例中回顾),我使用了以下CountVectorizer()的代码 使用Countvectorizer()对数据进行矢量化 vect = CountVectorizer(max_df = 0.95, min_df = 50)

我一直在做一个正聚类和负聚类的聚类评论项目(使用k-means)(数据集是amazon alexa评论)。 矢量化部分分别以两种方式完成:

  • 使用
    CountVectorizer()
  • 使用
    Word2Vec
  • 现在,我能够使用这两种矢量化技术创建集群,但在预测新数据点的集群时(在我的案例中回顾),我使用了以下
    CountVectorizer()的代码

    使用
    Countvectorizer()对数据进行矢量化

    vect = CountVectorizer(max_df = 0.95, min_df = 50)
    count = vect.fit_transform(data_copy['reviews.text'])
    count0 = count.todense()
    count1 = count0.tolist()
    count_df = pd.DataFrame(count1, columns = vect.get_feature_names())
    
    w2v_model = Word2Vec(min_count=3,
                         window=4,
                         size=300,
                         sample=1e-5, 
                         alpha=0.03, 
                         min_alpha=0.0007, 
                         negative=20,
                         workers=multiprocessing.cpu_count()-1)
    w2v_model.build_vocab(sentences, progress_per=50000)
    w2v_model.train(sentences, total_examples=w2v_model.corpus_count, epochs=30, report_delay=1)
    
    w2v_model.init_sims(replace=True)
    word_vectors = Word2Vec.load("word2vec.model").wv
    
    预测新审查的集群

    print('Prediction')
    X = vect.transform(['worst'])
    predicted = model.predict(X)
    print(predicted)
    
    使用
    Word2Vec

    vect = CountVectorizer(max_df = 0.95, min_df = 50)
    count = vect.fit_transform(data_copy['reviews.text'])
    count0 = count.todense()
    count1 = count0.tolist()
    count_df = pd.DataFrame(count1, columns = vect.get_feature_names())
    
    w2v_model = Word2Vec(min_count=3,
                         window=4,
                         size=300,
                         sample=1e-5, 
                         alpha=0.03, 
                         min_alpha=0.0007, 
                         negative=20,
                         workers=multiprocessing.cpu_count()-1)
    w2v_model.build_vocab(sentences, progress_per=50000)
    w2v_model.train(sentences, total_examples=w2v_model.corpus_count, epochs=30, report_delay=1)
    
    w2v_model.init_sims(replace=True)
    word_vectors = Word2Vec.load("word2vec.model").wv
    
    现在我的问题是,在应用
    Word2Vec
    之后,如何预测一个新的数据点,就像我在应用
    CountVectorizer()之后所做的那样

    =>如何使用已构建的
    Word2Vec
    模型对新数据点进行矢量化?(基本上,什么是
    Word2Vec
    X=vect.transform(['best'])
    的等价物)


    提前谢谢

    您的
    Word2Vec
    代码没有显示您如何为集群算法的第一个应用程序对文本进行矢量化。但是:无论您当时做了什么,您都希望为新的数据点做些什么。(不管你做了什么,它都需要与创建集群的过程相同的字对字向量到文本向量的过程。)旁白:你为
    alpha
    min_alpha
    选择特殊的非标准值有什么特别的原因吗?)谢谢你的回答!这消除了我的疑虑,并为进一步的代码丢失而感到抱歉。另外,我对Word2Vec非常陌生,在一篇特别的文章中发现了这个模型实现,这篇文章与我的项目产生了最大的共鸣,因此我从那里开始使用它。你想建议任何修改吗?如果它建议对默认值进行那些特殊的修改,但没有解释原因,那么这不是一篇好文章。哦,谢谢你让我知道这一点,是的,同样没有解释。此外,我意识到我只是将单词转换为单词向量,而不是文本向量,因此代码缺失(我对Word2Vec非常陌生,因此不知道我必须将单词向量转换为文本向量)。你能帮我照一下吗?这将非常有帮助。如果您实际上没有使用
    Word2Vec
    进行文本矢量化和聚类,您可以更正您的问题,以反映您实际尝试和实现的内容。一种粗略的方法是将文本中的所有单词向量平均成一个摘要向量。对于一些广泛的任务来说,这是一个合理、快速、简单的短文基线,但在现实世界的挑战中可能做得不好。