python 小说数据挖掘_python 数据挖掘篇 三 gensim 使用

本教程介绍了如何使用gensim库将字符串列表转化为分词向量,并进一步转换为数学空间中的整形向量。通过字典映射,将字符串转换为数字表示,实现大文件的流式处理,避免内存溢出。讲解了如何构建大字典、转换为TF-IDF、LSI和LDA模型。同时,强调了保存和加载这些资源以提高效率。最后,讨论了相似性查询和搜索引擎的基本原理。
摘要由CSDN通过智能技术生成

第三章 Genism

3.1字符串列表到分词向量的转换

162

将每一个文档进行分词,形成2维列表形式,列表的每一项是子列表,子列表存储的文档的分词

145

到此为止,我们已经将字符串列表,转换为了分词向量的形式。

但是,这样计算机还是不好处理,而且,也不好进行数学运算,如果能将他们表示成数学的方式,岂不是非常美妙的一件事。

3.2分词向量转换为数学空间整形向量(语料)

怎么转换成数学表达形式呢?

其实这个肯定都用过,你没用过?不太可能吧,你肯定压缩过文件吧

433

压缩文件时,就有个字典选项,没错,就是通过字典,将文件中常用字用数字替代,这样就节省空间了。

这里的字典是什么呢?简单来说,就是字符串和数字的对应

3.2.1 字符串转换成整形向量

而gensim提供了字符串向量向字典转换的函数

73

64

打印这个字典,可以看到,字符串与数字对应起来了 数字11 代表的就是字符串minors

有了字典,我们就可以将字符串用字典表示成数学整形向量了

199

Doc2bow 作用就是将字符串分词向量,转换为对应的整形向量

Bow是bag of word 直译为词袋,为啥叫词袋呢?个人以为是将字典作为原料,编织成袋子,将字典表示的各个分词向量,装在这个袋子里,个人理解,不必纠结。

下面将所有的文档,转换为词袋形式

206

3.2.2 文件流的形式,分解转换语料

上述转换为词袋语料用的是

corpus = [dictionary.doc2bow(text) for text in texts]

texts 是分词向量列表,这个分词向量列表所有的子分词列表,都是加载到内存中的,对于大文件来说,很吃内存。

对此,gensim提供了流的形式,每次从硬盘上读取一段数据流,进行词袋转换,比如我想将上千本古典小说转换为词袋的形式,只能用这种方式一本本的转换,不能一下子放在内存中,我的内存才可怜的2G,一下子就撑爆了。

92

自定义一个类,迭代的方式读取文件数据。

59

266

这有啥作用呢?

用处就是,你可以不局限于内存大小,可以将任意数量的文本转换为整形向量了。比如我以后打算将1000本古典小说转换为整形向量,使用这种方法就可以了。

3.2.3 文件流的形式,扩展字典

如果想构建一个大字典,比如上千本古典小说的大字典,也不可能一下子将上千本书加载到内存中,gensim也提供了流加载,逐步扩展字典的方法。

185

到目前为止,已经可以将字符串转换成整形向量语料形式了。

3.3 向量空间转换

初始的向量空间,是由字典生成的整形向量空间

(字典ID, 该词在此子分词列表中出现的次数)

初始的向量空间,我自己称为初始语料,初始语料可以使用模型加工成其它语料

203

MmCorpus(9 documents, 12 features, 28 non-zero entries)

最简单的就是tfidf语料,除此之外还有lsi,lda等

Tfidf

51

这个转换很简单,使用初始语料,遍历一遍,计算频率

获取的结果是一个对象,使用这个对象,可以对初始的语料空间中的向量进行转换。

76

将初始语料,全部转换为tfidf语料

200

3.4 models 模型

模型是干嘛的呢,简单的说,是对语料进行进一步的处理,从中利用数学关系,计算机算法,挖掘出潜在的信息。

常用的模型:tf-idf模型,lsi模型,lda模型

Tfidf模型

使用举例:

32

目前,只是传入了初始语料参数,生成了一个新的对象,但并没有进行语料的处理。真正的语料处理,还得调用如下方式实现

38

类似的还有:

LSI模型

79

num_topic的选项,指的潜在主题(topic)的数目,默认是300,在真实大量语料情况下,200-500,被认为是黄金标准。

43

LDA模型

42

Word2Vec模型

这个模型也很有意思,可以对词的相近性做比较,还有部分推理关系

221

3.5 字典、语料、模型的保存

字典、词袋的形成都是很耗费时间的,所以要将其保存起来,下次直接加载使用就可以了。

3.5.1 语料与文档 对应关系的保存与加载

生成字典后,将文档转换为语料,然后利用这些语料进行后期的数学运算,最终用于相似性询问查找。

但是最终给出的结果,是索引的形式。

212

这时候,语料与文档的对应关系,需要我们自己解决

我是用来查询小说的,将小说每段作为文档来处理,这时候,我就要记录下段落在语料中的索引。

在此,我是用字典记录的,不同的应用,这个要做不同的处理,针对这个应用,我是这样处理的。

{0:第一段,1:第二段}

225

76

3.5.2 字典的保存与加载

保存

37

加载

33

如:

60

3.5.3 语料的保存与加载

保存

58

加载

49

3.5.4 模型的保存与加载

72

112

98

3.5.5 索引保存

在相似性查询时,对语料进行索引编码,索引信息也可以保存与加载

44

54

3.6 查询—Similarity

其实,就是搜索引擎,输入文字,查询与这个文字最相近的文档。

3.6.1 初始化

既然要查询哪些文档与输入的文字最相近,首先你得有这些文档吧,有了这些文档,还得转换成语料空间吧,这样才方便利用数学关系进行相似度查找吧。

首先,对语料进行索引编码

这里使用lsi语料为例

45

语料索引编码后,可以保存

54

3.6.2 对查询字符串做语料转换

如上,我们使用的lsi语料做的索引,所以查询字符串也要转换成lsi语料

查询的字符串---》初始整形语料----》ti-idf语料---》lsi语料

93

108

203

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值