文本挖掘学习笔记(二):文档信息向量化与主题关键词提取

注:学习笔记基于文彤老师文本挖掘的系列课程

全文基于《射雕英雄传》语料库,下面是读入数据的一个基于Pandas的通用操作框架。

读入为数据框

txt
0 全本全集精校小说尽在:http://www.yimuhe.com/u/anglewing26…
1 更多资源下载:http://qqzone.ctdisk.com
2 ※声明:本电子书仅供读者预览,请在下载24小时内删除,不得用作商业用途;如果喜欢请购买正版图书!※
3 ——————————————
4 “金庸作品集”新序

加入章节标识

txt head mid len
0 全本全集精校小说尽在:http://www.yimuhe.com/u/anglewing26… -1 55
1 更多资源下载:http://qqzone.ctdisk.com -1 31
2 ※声明:本电子书仅供读者预览,请在下载24小时内删除,不得用作商业用途;如果喜欢请购买正版图书!※ -1 49
3 —————————————— -1 42
4 “金庸作品集”新序 -1 9
txt chap
0 全本全集精校小说尽在:http://www.yimuhe.com/u/anglewing26… 0.0
1 更多资源下载:http://qqzone.ctdisk.com 0.0
2 ※声明:本电子书仅供读者预览,请在下载24小时内删除,不得用作商业用途;如果喜欢请购买正版图书!※ 0.0
3 —————————————— 0.0
4 “金庸作品集”新序 0.0

提取出所需章节

txt chap
33 第一回 风雪惊变 1.0
34 1.0
35 1.0
36 那说话人五十来岁年纪,一件青布长袍早洗得褪成了蓝灰带白。只听他两片梨花木板碰了几下,左手… 1.0
37 几处败垣围故井,向来一一是人家。” 1.0

1.文档信息的向量化

1.1词袋模型(BOW)

词袋模型 计算频数,词集模型,不计算频数

词袋模型的gensim实现

gensim的安装
pip install genism

安装完成后如果使用word2vec时报错,建议去gensim官网下载MS windows install的exe程序进行安装:https://pypi.python.org/pypi/gensim

建立字典
Dictionary类用于建立word<->id映射关系,把所有单词取一个set(),并对set中每个单词分配一个Id号的map

class gensim.corpora.dictionary.Dictionary(

documents=None : 若干个被拆成单词集合的文档的集合,一般以list in list形式出现
prune_at=2000000 : 字典中的最大词条容量
)

Dictionary类的属性

token2id 字典形式

dict of (str, int) – token -> tokenId.

id2token:反过来的字典

dict of (int, str) – 反向token2id,以延迟方式初始化以节省内存。

dfs

dict of (int, int) – Document frequencies: token_id -> in how many documents contain this token.(第几个词条被几个文档包含)

num_docs

int – 处理的文档数。

num_pos

int – 语料库位置的总数(处理过的单词数)。

num_nnz

int – Total number of non-zeroes in the BOW matrix.(矩阵中非零的总数。)

转换为BOW稀疏向量

补充:密集向量和稀疏向量的区别: 密集向量的值就是一个普通的Double数组 而稀疏向量由两个并列的 数组indices和values组成 例如:向量(1.0,0.0,1.0,3.0)用密集格式表示为[1.0,0.0,1.0,3.0],用稀疏格式表示为(4,[0,2,3],[1.0,1.0,3.0]) 第一个4表示向量的长度(元素个数),[0,2,3]就是indices数组,[1.0,1.0,3.0]是values数组 表示向量0的位置的值是1.0,2的位置的值是1.0,而3的位置的值是3.0,其他的位置都是0

dct.doc2bow( # 转换为BOW格式:list of (token_id, token_count)

)

输出结果(前id号,后频数)

[(0, 2), (1, 2)],表明在文档中id为0,1的词汇各出现了2次,至于其他词汇则没有出现
return_missing = True时,输出list of (int, int), dict of (str, int)

转换为BOW长向量

可考虑的思路:

1.从稀疏格式自行转换。

2.直接生成文档-词条矩阵。(方便常用)

doc2idx( # 转换为list of token_id

document : 用于转换的词条list
unknown_word_index = -1 : 为不在字典中的词条准备的代码

输出结果

按照输入list的顺序列出所出现存在的各词条ID

1.2生成文档-词条矩阵(常用)

1.2.1用Pandas库实现

基本程序框架:

原始文档分词并清理,拼接为同一个df,汇总并转换为文档-词条矩阵格式,最后去除低频词

来源:★追梦赤子心★

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月2日
下一篇 2022年6月2日

相关推荐