美文网首页程序员
python 数据挖掘篇 三 gensim 使用

python 数据挖掘篇 三 gensim 使用

作者: 古典小说 | 来源:发表于2018-01-22 12:27 被阅读0次

    Python安装

    python学习 一 python语法,及变量类型

    python学习 二 爬一个图片网站上

    python学习 二 02 爬一个图片网站,获得主链接网址,并保存

    python学习 二 03 爬一个图片网站-获得所有分页网址

    python学习 二 04 爬一个图片网站-解析文件,获得所有图片链接

    python学习 二 05 爬一个图片网站-下载图片链接

    python学习 二 06 爬一个图片网站-多线程方式下载

    python学习 三 01 再爬一个网站,几行代码,搞定分类类别

    python学习 三 02 再爬一个网站,获得所有分页

    python学习 三 03 再爬一个网站,根据分页,下载图片

    python学习 三 04 图片爬虫工程-组织框架

    Python 爬虫 上篇

    Python 爬虫 下篇

    python 数据挖掘篇 一 结巴分词

    python 数据挖掘篇 二 词云统计

    python 数据挖掘篇 三 gensim 使用

    python 数据挖掘篇四 小说数据挖掘实例


    第三章 Genism

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

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

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

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

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

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

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

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

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

    3.2.1 字符串转换成整形向量

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

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

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

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

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

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

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

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

    corpus = [dictionary.doc2bow(text)fortextintexts]

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

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

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

    这有啥作用呢?

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

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

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

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

    3.3 向量空间转换

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

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

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

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

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

    Tfidf

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

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

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

    3.4 models 模型

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

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

    Tfidf模型

    使用举例:

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

    类似的还有:

    LSI模型

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

    LDA模型

    Word2Vec模型

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

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

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

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

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

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

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

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

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

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

    3.5.2 字典的保存与加载

    保存

    加载

    如:

    3.5.3 语料的保存与加载

    保存

    加载

    3.5.4 模型的保存与加载

    3.5.5 索引保存

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

    3.6 查询—Similarity

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

    3.6.1 初始化

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

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

    这里使用lsi语料为例

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

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

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

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

    相关文章

      网友评论

        本文标题:python 数据挖掘篇 三 gensim 使用

        本文链接:https://www.haomeiwen.com/subject/ayjlaxtx.html