python学习 二 02 爬一个图片网站,获得主链接网址,并保存
python学习 二 03 爬一个图片网站-获得所有分页网址
python学习 二 04 爬一个图片网站-解析文件,获得所有图片链接
python学习 三 01 再爬一个网站,几行代码,搞定分类类别
python学习 三 03 再爬一个网站,根据分页,下载图片
将每一个文档进行分词,形成2维列表形式,列表的每一项是子列表,子列表存储的文档的分词
到此为止,我们已经将字符串列表,转换为了分词向量的形式。
但是,这样计算机还是不好处理,而且,也不好进行数学运算,如果能将他们表示成数学的方式,岂不是非常美妙的一件事。
怎么转换成数学表达形式呢?
其实这个肯定都用过,你没用过?不太可能吧,你肯定压缩过文件吧
压缩文件时,就有个字典选项,没错,就是通过字典,将文件中常用字用数字替代,这样就节省空间了。
这里的字典是什么呢?简单来说,就是字符串和数字的对应
而gensim提供了字符串向量向字典转换的函数
打印这个字典,可以看到,字符串与数字对应起来了 数字11 代表的就是字符串minors
有了字典,我们就可以将字符串用字典表示成数学整形向量了
Doc2bow 作用就是将字符串分词向量,转换为对应的整形向量
Bow是bag of word 直译为词袋,为啥叫词袋呢?个人以为是将字典作为原料,编织成袋子,将字典表示的各个分词向量,装在这个袋子里,个人理解,不必纠结。
下面将所有的文档,转换为词袋形式
上述转换为词袋语料用的是
corpus = [dictionary.doc2bow(text)fortextintexts]
texts 是分词向量列表,这个分词向量列表所有的子分词列表,都是加载到内存中的,对于大文件来说,很吃内存。
对此,gensim提供了流的形式,每次从硬盘上读取一段数据流,进行词袋转换,比如我想将上千本古典小说转换为词袋的形式,只能用这种方式一本本的转换,不能一下子放在内存中,我的内存才可怜的2G,一下子就撑爆了。
自定义一个类,迭代的方式读取文件数据。
这有啥作用呢?
用处就是,你可以不局限于内存大小,可以将任意数量的文本转换为整形向量了。比如我以后打算将1000本古典小说转换为整形向量,使用这种方法就可以了。
如果想构建一个大字典,比如上千本古典小说的大字典,也不可能一下子将上千本书加载到内存中,gensim也提供了流加载,逐步扩展字典的方法。
到目前为止,已经可以将字符串转换成整形向量语料形式了。
初始的向量空间,是由字典生成的整形向量空间
(字典ID, 该词在此子分词列表中出现的次数)
初始的向量空间,我自己称为初始语料,初始语料可以使用模型加工成其它语料
MmCorpus(9 documents, 12 features, 28 non-zero entries)
最简单的就是tfidf语料,除此之外还有lsi,lda等
这个转换很简单,使用初始语料,遍历一遍,计算频率
获取的结果是一个对象,使用这个对象,可以对初始的语料空间中的向量进行转换。
将初始语料,全部转换为tfidf语料
模型是干嘛的呢,简单的说,是对语料进行进一步的处理,从中利用数学关系,计算机算法,挖掘出潜在的信息。
常用的模型:tf-idf模型,lsi模型,lda模型
Tfidf模型
使用举例:
目前,只是传入了初始语料参数,生成了一个新的对象,但并没有进行语料的处理。真正的语料处理,还得调用如下方式实现
类似的还有:
LSI模型
num_topic的选项,指的潜在主题(topic)的数目,默认是300,在真实大量语料情况下,200-500,被认为是黄金标准。
LDA模型
Word2Vec模型
这个模型也很有意思,可以对词的相近性做比较,还有部分推理关系
字典、词袋的形成都是很耗费时间的,所以要将其保存起来,下次直接加载使用就可以了。
生成字典后,将文档转换为语料,然后利用这些语料进行后期的数学运算,最终用于相似性询问查找。
但是最终给出的结果,是索引的形式。
这时候,语料与文档的对应关系,需要我们自己解决
我是用来查询小说的,将小说每段作为文档来处理,这时候,我就要记录下段落在语料中的索引。
在此,我是用字典记录的,不同的应用,这个要做不同的处理,针对这个应用,我是这样处理的。
{0:第一段,1:第二段}
保存
加载
如:
保存
加载
在相似性查询时,对语料进行索引编码,索引信息也可以保存与加载
其实,就是搜索引擎,输入文字,查询与这个文字最相近的文档。
既然要查询哪些文档与输入的文字最相近,首先你得有这些文档吧,有了这些文档,还得转换成语料空间吧,这样才方便利用数学关系进行相似度查找吧。
首先,对语料进行索引编码
这里使用lsi语料为例
语料索引编码后,可以保存
如上,我们使用的lsi语料做的索引,所以查询字符串也要转换成lsi语料
查询的字符串---》初始整形语料----》ti-idf语料---》lsi语料
网友评论