python学习(十三)--Gensim中ndarray、vector的用法及LDA的使用、主题数目的选择
(2014-12-17 18:07:05)
标签:
贝叶斯统计后验概率ldagensimpython |
分类: 计算机技术 |
1.将corpus转化为ndarray
from gensim import matutils
numpy_matrix =
matutils.corpus2dense(corpus_tfidf,len(dictionary))
2.接下来我需要根据指定行号,抽出两个向量出来
实际上numpy_matrix[1,:]就抽取出第二行了
3.计算两个向量的cosine值
from nltk.cluster import util
util.cosine_distance(numpy_matrix[2,:], numpy_matrix[5,:])
4.然而,对于超过3000篇以上的文本,如果每个文本都不大的话,很可能一篇文本只和几篇十几篇其他文本有相同词汇,而与其他文档都没有相同词汇,换句话说,大多数文档与目标文档的cosine数值是0,显然,这种情况并不适合对文本进行聚类,因而需要降维,降维的目的在于使用主题空间替代词汇空间,来容纳文档集合,从而压缩文档之间的距离,使基于文本相似度的聚类成为可能。
这里可以使用LSI建立主题空间,也可以使用LDA建立主题空间,LSI模型无论道理还是操作都很容易,LDA虽然对数学功底有要求,不过从操作层面上讲,Gensim已经提供了所有需要的基本功能,现在我需要对一个语料库建立主题空间,然后比较这个语料库中指定的两两文档之间的相似度。
(1) from gensim import corpora,models,similarities
(2) 将每个文档中的主题都列出来
-
show_topic(topicid, topn=10)
= LdaModel(corpus, num_topics=10) lda
#接下来计算文档相似度--得到矩阵中文档间距离的方阵
#然后我们就可以对给定文档,找出与其最相似文档
5.主题数目的选择
(待完成)