Gensim官方教程翻译(一)——快速入门
2015-07-02 13:41
281 查看
为了方便自己学习,翻译了官方的教程,原文:http://radimrehurek.com/gensim/tutorial.html。
本教程按照一系列的实例组织,用以突出gensim的各种特征。本教程的受众是熟悉Python,已经安装了gensim,而且阅读过介绍的读者。
本教程包括为以下几个部分:
语料库与向量空间
从字符串到向量
语料库流-一次一个文档
语料库格式
与NumPy和SciPy的兼容性
主题与转换
转换接口
可用的转换
相似性查询
相似性接口
接下来做什么?
对于英文维基百科的实验
准备语料库
潜在语义分析
隐含狄利克雷分配
分布式计算
为什么需要分布式计算?
先决条件
核心概念
可用的分布式算法
Gensim使用Python标准的日志类来记录不同优先级的各种事件,想要激活日志(可选的),运行如下代码:
如果你熟悉向量空间模型,你可能也知道如何将你的文档解析、转换为向量,并且也知道这些转换对接下来的应用的会产生什么影响。
接下来,让我们初始化一个转换
转换就是将文档的一种向量表示方法转换为另一种(,以便我们从特定的角度更好地分析数据):
转化方法详情,请看教程《主题与转换》
为了将整个语料库通过Tf-idf转化并索引,以便相似度查询,需要做如下准备:
为了查询我们需要的向量vec相对于其他所有文档的相似度,需要:
了解详细请看《相似度查询》教程。
本教程按照一系列的实例组织,用以突出gensim的各种特征。本教程的受众是熟悉Python,已经安装了gensim,而且阅读过介绍的读者。
本教程包括为以下几个部分:
语料库与向量空间
从字符串到向量
语料库流-一次一个文档
语料库格式
与NumPy和SciPy的兼容性
主题与转换
转换接口
可用的转换
相似性查询
相似性接口
接下来做什么?
对于英文维基百科的实验
准备语料库
潜在语义分析
隐含狄利克雷分配
分布式计算
为什么需要分布式计算?
先决条件
核心概念
可用的分布式算法
预备
所有的例子都可以复制到你的Python解释器窗口。IPython的cpaste命令对于复制-粘贴代码片段十分方便,包括开头无意义的“>>>”字符。Gensim使用Python标准的日志类来记录不同优先级的各种事件,想要激活日志(可选的),运行如下代码:
>>> import logging >>> logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
快速入门
首先,让我们导入gensim并创建一个小小的语料库,其中有9篇文档和12个属性[1]:>>> from gensim import corpora, models, similarities >>> >>> 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)]]语料库是一个简单的对象,我们能够通过不断迭代从中取出用稀疏向量代表的文档。如果你不熟悉向量空间模型,我们将会在下一个教程《语料库与向量空间》填平原始字符串、语料库、稀疏向量之间的鸿沟。
如果你熟悉向量空间模型,你可能也知道如何将你的文档解析、转换为向量,并且也知道这些转换对接下来的应用的会产生什么影响。
作者注:在这个例子中我们的整个语料作为一个Python List被存在内存中。但是,语料库接口仅仅规定一个语料库必须支持迭代取出其文档。对于特别大的语料库,最好将整个语料库存在硬盘上,并且按序一次取出一篇文档。所有的操作和转换通过一种语料库大小无关的方式实现,内存依赖较低。
接下来,让我们初始化一个转换
>>> tfidf = models.TfidfModel(corpus)
转换就是将文档的一种向量表示方法转换为另一种(,以便我们从特定的角度更好地分析数据):
>>> vec = [(0, 1), (4, 1)] >>> print(tfidf[vec]) [(0, 0.8075244), (4, 0.5898342)]在此,我们使用了Tf-Idf,这是一种简单的转换。它要求输入的文档用带有词频的词袋的方法表示,可以用来降低常用词的权重(相对地提高了罕见词的权重)。它还会把结果向量的长度调整为单位长度(指欧几里得范数)。
转化方法详情,请看教程《主题与转换》
为了将整个语料库通过Tf-idf转化并索引,以便相似度查询,需要做如下准备:
>>> index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=12)
为了查询我们需要的向量vec相对于其他所有文档的相似度,需要:
>>> 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个文档)与vec的相似度为0.466=46.6%,第二个文档与vec的相似度为19.1,依次类推。 因此,根据Tfidf文档表示方法和余弦相似度方法,与我们的查询文档vec最相似的文档为3号文档,相似度达到82.1%。注意:4-8号文档与vec没有任何公共的属性,因此相似度为0.0。
了解详细请看《相似度查询》教程。
[1] | This is the same corpus as used in Deerwester et al. (1990): Indexing by Latent Semantic Analysis, Table 2. |
相关文章推荐
- SVN使用教程总结
- Regex 例
- adt下sdk目录下各个文件夹下以及他们的作用
- is_file和file_exists效率比较
- boost::function和boost::bind 介绍
- MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)
- sqlite不同数据库的表数据复制
- 认真是一种态度
- 乐视入股酷派内幕:谈判超两年 360手机命运待解
- 软件开发就是软件工程吗?
- Android 之使用LocalBroadcastManager解决BroadcastReceiver安全问题
- MySQL增加表字'
- BaiduMap---百度地图官方Demo之短串分享功能(介绍关键词查询,suggestion查询和查看餐饮类Place详情页功能)
- 细说OpenSessionInView问题
- 【android】开发笔记系列UI篇
- iOS 键盘动画
- Android的v7包中的新控件——(一)RecyclerView(超级listview,传说会代替listview)
- 索引原理
- 19. Remove Nth Node From End of List
- Android如何查看应用签名信息--微信平台开发应用的签名