The tutorials are organized as a series of examples that highlight various features of gensim. It is assumed that the reader is familiar with the Python language, has installed gensim and read the introduction.
本教程由一系列能够展示gensim不同特点的例子组成。假设读者对python语言比较熟悉,并已经安装了gensim,可以阅读介绍。
The examples are divided into parts on:
Corpus Streaming – One Document at a Time
Compatibility with NumPy and SciPy
Experiments on the English Wikipedia
Available distributed algorithms
Preliminaries
所有例子的代码可以直接copy到你的python解释器中。IPtyhon的cpase命令对于copy代码片段特别有用,包含引导符号>>>。
Gensim使用python的标准logging库来输出不同级别的日志;要激活logging(可选),运行
教程里的许多主题也可以在Jupyter记事本上演示,它可以通过Binder project(不需要安装)运行在你的浏览器上,点击这儿
快速示例:
首先,导入gensim并创建一个小的具有9个文档12个特征的语料库
在gensim中语料库是一个简单的对象,当被迭代的时候,返回其中的已经表示成稀疏向量的文档。在这种情况下我们使用了一个元祖数组。如果你不熟悉向量空间模型,我们在下个教程语料库和向量空间中补充相关的原始文本,语料库和稀疏向量。
如果你熟悉向量空间模型,你可能会知道,你把文档转换成空间的方式对你后续使用有较大的影响。
注意:
在这个例子中,整个语料库作为一个python list存储在内存中。然而,语料库接口只规定语料库必须支持对其组成文档的迭代。对于非常大的语料库, 最好将语料库保留在磁盘上, 并按顺序访问其文档, 一次一个。所有的操作和转换都是以这样一种方式实现的, 使它们不依赖于内存大小。
接下来,让我们初始化一个转换:
转换用于将文档从一个矢量表示转换为另一个矢量表示:
在这里, 我们使用了 Tf-Idf, 这是一个简单的转换, 它将表示为小字袋的文档计数, 并采用了一个权重方法, 该权重方法对常用的term进行降权(或者说,提升稀少term的权重)。它还将生成的向量缩放为单位长度 (在欧几里得范数中)。
关于主题和转换的教程中详细介绍了转换。
利用 TfIdf 转换整个语料库并对其进行索引, 为相似性查询做准备:
并查询我们的查询向量 vec 与语料库中的每个文档的相似性:
如何解读这个结果?文档编号为零 (第一个文档) 的相似性分数为 0.46 6 6 = 46.6%, 第二个文档的相似性分数为19.1% 等等。
因此, 根据 TfIdf 文档表示和余弦相似度度量, 与我们的查询文档 vec 最相似的是文档 3, 相似度评分为82.1。请注意, 在 TfIdf 表示中, 任何与 vec 不共享任何共同特征的文档 (文档 4-8) 的相似度得分为0.0。有关详细信息, 请参阅相似查询教程。
[1]This is the same corpus as used in Deerwester et al. (1990): Indexing by Latent Semantic Analysis, Table 2.