赞
踩
为了方便自己学习,翻译了官方的教程,原文:http://radimrehurek.com/gensim/tutorial.html。
本教程按照一系列的实例组织,用以突出gensim的各种特征。本教程的受众是熟悉Python,已经安装了gensim,而且阅读过介绍的读者。
本教程包括为以下几个部分:
- >>> import logging
- >>> logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
- >>> 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,这是一种简单的转换。它要求输入的文档用带有词频的词袋的方法表示,可以用来降低常用词的权重(相对地提高了罕见词的权重)。它还会把结果向量的长度调整为单位长度(指欧几里得范数)。
>>> 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个文档)与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. |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。