唐宇迪《python数据分析与机器学习实战》学习笔记
16Python文本数据分析:新闻分类任务 (贝叶斯算法应用实例)
**
一、流程分析
**
数据如下图:content为主体内容,
1.1 停用词:在语料中大量出现又没啥大用,会干扰统计分析,因此去掉。(例如:一个、一切、¥、#等),网上搜索停用词表,匹配过滤。
1.2 Tf-idf:关键词提取 :
这里修改一下:词频=(某个词在文章出现次数)/(文章总的词汇量)
1.3 相似度
1.4 总结大致流程:语料—清洗(停用词)—分词—构造向量(词频转为向量;词转为向量word2vector、Gensim;整篇文章转为向量不切实)
**
二、案例实战
1、文本的分析操作
1.1 数据采集及导入
**
首先安装jieba模块,本来打开cmd中输入: pip install jieba 就行,但是我这里报错:Could not find a version that satisfies the requirement skimage (from versions: ) ,这是网络原因,需要使用国内豆瓣的镜像加速。
这里改为: pip install jieba -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 成功安装。
接着导入库:
import pandas as pd
import jieba
数据的话使用搜狗实验室的数据,数据源:http://www.sogou.com/labs/resource/ca.php,需要提取里面的数据。
这里直接用现成数据。
df_news = pd.read_table('./data/val.txt',names=['category','theme','URL','content'],encoding='utf-8')
df_news = df_news.dropna()
df_news.head()
1.2 转换为list
content = df_news.content.values.tolist()
#结巴分词器,需要把数据的列拿出来再转换list
content[1000]
‘阿里巴巴集团昨日宣布,将在集团管理层面设立首席数据官岗位(Chief\u3000Data\u3000Officer),阿里巴巴B2B公司CEO陆兆禧将会出任上述职务,向集团CEO马云直接汇报。>菹ぃ和6月初的首席风险官职务任命相同,首席数据官亦为阿里巴巴集团在完成与雅虎股权谈判,推进“one\u3000company”目标后,在集团决策层面新增的管理岗位。0⒗锛团昨日表示,“变成一家真正意义上的数据公司”已是战略共识。记者刘夏’
1.3 分词:使用结巴分词器
content_S = [] #存待会分词后的结果
for line in content: #遍历二维list
current_segment = jieba.lcut(line) #把这句话分词
if len(current_segment) > 1 and current_segment != '\r\n':
#确实有分词,而且不包含换行符
content_S.append(current_segment)
content_S[1000]
1.4 转换dataframe格式
df_content = pd.DataFrame({'content_S':content_S})
df_content.head()