注:学习笔记基于文彤老师文本挖掘的系列课程
全文基于《射雕英雄传》语料库,下面是读入数据的一个基于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进行处理,非常感谢!