Python LDA主题建模输入数据

Python LDA主题建模输入数据,python,twitter,lda,topic-modeling,Python,Twitter,Lda,Topic Modeling,我是python新手。我刚刚开始在tweet上使用LDA主题建模的项目。我正在尝试以下代码: 本例使用在线数据集。我有一个csv文件,其中包括我需要使用的推文。有人能告诉我如何使用本地文件吗?我应该如何制作自己的歌曲和标题 我找不到解释如何为LDA准备材料的教程。他们都认为你已经知道怎么做了 来自未来导入部门,打印功能 将numpy作为np导入 进口lda 导入lda.dataset #文件术语矩阵 X=lda.datasets.load\u reuters() 打印(“类型(X):{}”。格

我是python新手。我刚刚开始在tweet上使用LDA主题建模的项目。我正在尝试以下代码:

本例使用在线数据集。我有一个csv文件,其中包括我需要使用的推文。有人能告诉我如何使用本地文件吗?我应该如何制作自己的歌曲和标题

我找不到解释如何为LDA准备材料的教程。他们都认为你已经知道怎么做了

来自未来导入部门,打印功能
将numpy作为np导入
进口lda
导入lda.dataset
#文件术语矩阵
X=lda.datasets.load\u reuters()
打印(“类型(X):{}”。格式(类型(X)))
打印(“形状:{}\n.”格式(X.shape))
#主唱
vocab=lda.datasets.load\u reuters\u vocab()
打印(“类型(vocab):{}”。格式(类型(vocab)))
打印(“len(vocab):{}\n”。格式(len(vocab)))
#每个故事的标题
titles=lda.dataset.load\u reuters\u titles()
打印(“类型(标题):{}”。格式(类型(标题)))
打印(“len(titles):{}\n”。格式(len(titles)))
文档id=0
word_id=3117
打印(“文档id:{}单词id:{}”。格式(文档id,单词id))
打印(“--count:{}”。格式(X[doc\u id,word\u id]))
打印(“--word:{}”。格式(vocab[word\u id]))
打印(“--doc:{}”。格式(标题[doc_id]))
模型=lda.lda(n_主题=20,n_iter=500,随机状态=1)
模型拟合(X)
topic\u word=model.topic\u word
打印(“类型(主题词):{}”。格式(类型(主题词)))
打印(“形状:{}”.format(topic_word.shape))
对于范围(5)内的n:
sum\u pr=sum(主题词[n,:])
打印(“主题:{}和:{}”。格式(n,和)
n=5
对于i,枚举中的topic\u dist(topic\u单词):
topic_words=np.array(vocab)[np.argsort(topic_dist)][:-(n+1):-1]
打印('*Topic{}\n-{}'。格式(i,,.join(Topic_单词)))
doc\u topic=model.doc\u topic_
打印(“类型(文档主题):{}”。格式(类型(文档主题)))

打印(“shape:{}.format(doc_topic.shape))
我知道这来得有点晚,但希望能有所帮助。首先,您必须了解LDA仅适用于DTM(文档术语矩阵)。因此,我建议您运行以下步骤:

  • 加载您的csv文件
  • 从文件中提取必要的tweet
  • 清理数据
  • 创建包含所生成语料库中每个单词的词典
  • 构建TDM结构
  • 使结构适合您的数据文件
  • 获取词汇表-TDM功能(词汇)
  • 继续使用上面的代码
  • 在这里,您可以提供此代码来帮助您开始-

    token_dict = {}
    
    for i in range(len(txt1)):
        token_dict[i] = txt1[i]
    
    len(token_dict)
    
    
    print("\n Build DTM")
    %time tf = CountVectorizer(stop_words='english')
    
    print("\n Fit DTM")
    %time tfs1 = tf.fit_transform(token_dict.values())
    
    # set the number of topics to look for
    num = 8
    
    model = lda.LDA(n_topics=num, n_iter=500, random_state=1)
    
    # we fit the DTM not the TFIDF to LDA
    print("\n Fit LDA to data set")
    %time model.fit_transform(tfs1)
    
    print("\n Obtain the words with high probabilities")
    %time topic_word = model.topic_word_  # model.components_ also works
    
    print("\n Obtain the feature names")
    %time vocab = tf.get_feature_names()