Gensim-主题模型攻略:安装、惊鸿一瞥

Gensim-主题模型攻略

What’s Gensim?

Gensim 是一个免费Python库,可以用来进行文本语义分析,文本语义相似度检索,统计语义计算,主题建模等。

安装

终端输入如下指令:

pip install --upgrade gensim

如果是conda环境,则:

conda install -c conda-forge gensim

编码依赖下面的python库:

Python >= 2.7 (tested with versions 2.7, 3.5 and 3.6)
NumPy >= 1.11.3
SciPy >= 0.18.1
Six >= 1.5.0
smart_open >= 1.2.1

初体验

前记:所有代码可以直接拷贝到Python解释器中运行,Ipython尤其顺手,即便拷入代码引导符>>>也不妨事。Gensim用了Python标准模logging记录各种优先任务,激活下面代码在执行gensim代码时可以显示代码执行时优先信息。

>>> import logging
>>> logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
惊鸿一瞥

现在让我们来导入gensim库,创建一个包含9个文档和20个特征的小型语料库。(该语料库曾用在隐含语义分析索引(Indexing by Latent Semantic Analysis)。)

>>> from gensim import corpora, models, similarities

Ipython返回如下信息:
C:\Users\TF\Anaconda3\lib\site-packages\gensim\utils.py:855: UserWarning: detected Windows; aliasing chunkize to chunkize_serial
warnings.warn(“detected Windows; aliasing chunkize to chunkize_serial”)
可以直接忽略上述信息,或者输入下面代码忽略信息:

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')

继续输入语料库:

>>> corpus = [[(0, 1.0), (1, 1.0), (2, 1.0)],
>>>           [(2, 1.0), (3, 1.0), (4, 1.0), (5, 1.0), (6, 1.0), (8, 1.0)],
>>>           [(1, 1.0), (3, 1.0), (4, 1.0), (7, 1.0)],
>>>           [(0, 1.0), (4, 2.0), (7, 1.0)],
>>>           [(3, 1.0), (5, 1.0), (6, 1.0)],
>>>           [(9, 1.0)],
>>>           [(9, 1.0), (10, 1.0)],
>>>           [(9, 1.0), (10, 1.0), (11, 1.0)],
>>>           [(8, 1.0), (10, 1.0), (11, 1.0)]]

我们可以看到,语料库是一个列表,列表内部是九个可以表述成稀疏向量的列表,也就是文本,每个文本包含数个元组,元组第一个元素是整型,后面是浮点数。
接下来进行初始化变形:

>>> tfidf = models.TfidfModel(corpus)

如果先前导入logging及第二行信息,则会显示如下内容:
2018-09-03 09:03:24,887 : INFO : collecting document frequencies
2018-09-03 09:03:24,887 : INFO : PROGRESS: processing document #0
2018-09-03 09:03:24,887 : INFO : calculating IDF weights for 9 documents and 11 features (28 matrix non-zeros)
如果没有导入logging则什么也不显示。
初始化变形其实是把文本从一个向量转变成另一个,我们可以试一下:

>>> vec = [(0, 1), (4, 1)]
>>> print(tfidf[vec])
[(0, 0.8075244), (4, 0.5898342)]

这里,我们用的TF-Idf模型,将输入文本进行了一个简单的变形,它将文本表示成词袋计数,并增加一个权重,用以计数常见词。
进行相似度检索并编制索引:

>>> index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=12)

试一下:

>>> sims = index[tfidf[vec]]
>>> print(list(enumerate(sims)))
[(0, 0.4662244), (1, 0.19139354), (2, 0.24600551), (3, 0.82094586), (4, 0.0), (5, 0.0), (6, 0.0), (7, 0.0), (8, 0.0)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值