基于英语维基百科的实验——gensim

(需要结合原英文文档来看)

为了测试gensim的性能,我们对英语维基百科版本进行测试。

这一篇是获得和处理维基百科,所以你们可以重现结果。只要你合理安装了gensim

准备语料库

1.首先从 http://download.wikimedia.org/enwiki/下载维基百科的文章。文章有8G.

2.将文章变成清晰的文本,并以稀疏TF-IDF向量存储。在python中,这是不需要去解压的,因为在gensim中有一个脚本去运行的:

$ python -m gensim.scripts.make_wiki 

Latent Semantic Analysis

首先加载迭代器和词典,在上面第二步创建的。

然后进行英文维基百科的LSA

  在gensim中的算法只需要看输入文档一次,因此它适合于文档作为不可重复流的环境,或者在多次存储/迭代语料库的成本过高的环境中。

Latent Dirichlet Allocation

第一步同上面一样。

 我们将运行在线LDA,它的算法是获取一堆文档,更新LDA模型,再获取另一堆文档,更新LDA模型(takes a chunk of documents, updates the LDA model, takes another chunk, updates the model etc)即在one pass中。在线LDA和批处理LDA是不同的(one full pass),(批处理LDA为updates the model, then another pass, another update...)。不同的是,给一个合理的稳定的文档流(没有太多主题漂移),在叫较小的文档中在线更新挺好的,使得模型更快收敛。因此,我们将会只需要对语料库1次完整地处理(one pass):如果语料库有3百万文章,我们需要每1万更新一次,这意味着需要在一次full pass中更新300次。这样就很可能有非常精确的估计。

   在使用LDA时,当增加新的文档是需要注意的,批量使用LDA,其中整个训练语料库是预先已知的或不显示主题漂移,是确定和不受影响.

 为了使用批处理LDA运行,可以使用:

>>> # extract 100 LDA topics, using 20 full passes, no online updates
>>> lda = gensim.models.ldamodel.LdaModel(corpus=mm, id2word=id2word, num_topics=100, update_every=0, passes=20)xuya

posted on 2017-02-28 20:12  水滴石穿—敏  阅读(614)  评论(0)    收藏  举报

导航