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

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

全文基于《射雕英雄传》语料库,下面是读入数据的一个基于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日

相关推荐