机器学习 - 文本分析案例 - 新闻分析

文本分析概念

停用词

语料中大量出现, 无用数据, 如下类似的这种词语

Tf  - 词频统计

TF 的计算方式有很多, 最常见的用 某词文章中出现次数 / 文章总词数

idf  - 逆文档频率

TF - idf   关键词提取

相似度

分词

语料库

词频

词频向量

整体流程

语料清洗 (去掉停用词, 去掉大量重复的非正常用语等)

计算公式

文本分析案例 - 新闻分析

样本数据

数据来源于 搜狗实验室新闻数据  

数据需要处理成  pandas 便于读取的数据才可以使用

import pandas as pd
import jieba

df_news = pd.read_table(‘./data/val.txt‘,names=[‘category‘,‘theme‘,‘URL‘,‘content‘],encoding=‘utf-8‘)
df_news = df_news.dropna() # 去除缺失值行
df_news.head()

样本数据结构

样本数据容量

df_news.shape #(5000, 4)

分词 - 使用结巴分词器

读取数据

结巴分词器需要传入的数据为 list , 这里进行一个转换

content = df_news.content.values.tolist()
print (type(content)) # <class ‘list‘>
print(content[1000])
阿里巴巴集团昨日宣布,将在集团管理层面设立首席数据官岗位(Chief Data Officer),阿里巴巴B2B公司CEO陆兆禧将会出任上述职务,向集团CEO马云直接汇报。>菹ぃ和6月初的首席风险官职务任命相同,首席数据官亦为阿里巴巴集团在完成与雅虎股权谈判,推进“one company”目标后,在集团决策层面新增的管理岗位。0⒗锛团昨日表示,“变成一家真正意义上的数据公司”已是战略共识。记者刘夏

分词处理

content_S = []
for line in content:
    current_segment = jieba.lcut(line)
    if len(current_segment) > 1 and current_segment != ‘\r\n‘: #换行符
        content_S.append(current_segment)
content_S[1000]

[‘阿里巴巴‘,
 ‘集团‘,
 ‘昨日‘,
 ‘宣布‘,
 ‘,‘,
 ‘将‘,
 ‘在‘,
 ‘集团‘,
 ‘管理‘,
 ‘层面‘,
 ‘设立‘,
 ‘首席‘,
 ‘数据‘,
 ‘官‘,
 ‘岗位‘,
 ‘(‘,
 ‘C‘,
 ‘h‘,
 ‘i‘,
 ‘e‘,
 ‘f‘,
 ‘\u3000‘,
 ‘D‘,
 ‘a‘,
 ‘t‘,
 ‘a‘,
 ‘\u3000‘,
 ‘O‘,
 ‘f‘,
 ‘f‘,
 ‘i‘,
 ‘c‘,
 ‘e‘,
 ‘r‘,
 ‘)‘,
 ‘,‘,
 ‘阿里巴巴‘,
 ‘B‘,
 ‘2‘,
 ‘B‘,
 ‘公司‘,
 ‘C‘,
 ‘E‘,
 ‘O‘,
 ‘陆兆禧‘,
 ‘将‘,
 ‘会‘,
 ‘出任‘,
 ‘上述‘,
 ‘职务‘,
 ‘,‘,
 ‘向‘,
 ‘集团‘,
 ‘C‘,
 ‘E‘,
 ‘O‘,
 ‘马云‘,
 ‘直接‘,
 ‘汇报‘,
 ‘。‘,
 ‘>‘,
 ‘菹‘,
 ‘ぃ‘,
 ‘和‘,
 ‘6‘,
 ‘月初‘,
 ‘的‘,
 ‘首席‘,
 ‘风险‘,
 ‘官‘,
 ‘职务‘,
 ‘任命‘,
 ‘相同‘,
 ‘,‘,
 ‘首席‘,
 ‘数据‘,
 ‘官亦为‘,
 ‘阿里巴巴‘,
 ‘集团‘,
 ‘在‘,
 ‘完成‘,
 ‘与‘,
 ‘雅虎‘,
 ‘股权‘,
 ‘谈判‘,
 ‘,‘,
 ‘推进‘,
 ‘“‘,
 ‘o‘,
 ‘n‘,
 ‘e‘,
 ‘\u3000‘,
 ‘c‘,
 ‘o‘,
 ‘m‘,
 ‘p‘,
 ‘a‘,
 ‘n‘,
 ‘y‘,
 ‘”‘,
 ‘目标‘,
 ‘后‘,
 ‘,‘,
 ‘在‘,
 ‘集团‘,
 ‘决策‘,
 ‘层面‘,
 ‘新增‘,
 ‘的‘,
 ‘管理‘,
 ‘岗位‘,
 ‘。‘,
 ‘0‘,
 ‘⒗‘,
 ‘锛‘,
 ‘团‘,
 ‘昨日‘,
 ‘表示‘,
 ‘,‘,
 ‘“‘,
 ‘变成‘,
 ‘一家‘,
 ‘真正‘,
 ‘意义‘,
 ‘上‘,
 ‘的‘,
 ‘数据‘,
 ‘公司‘,
 ‘”‘,
 ‘已‘,
 ‘是‘,
 ‘战略‘,
 ‘共识‘,
 ‘。‘,
 ‘记者‘,
 ‘刘夏‘]

content_S[1000]

分词数据

df_content=pd.DataFrame({‘content_S‘:content_S})
df_content.head()

数据清洗

停用词表

通用词表下载后直接读取进来即可

stopwords=pd.read_csv("stopwords.txt",index_col=False,sep="\t",quoting=3,names=[‘stopword‘], encoding=‘utf-8‘)
stopwords.head(5)

去除停用词

def drop_stopwords(contents,stopwords):
    contents_clean = []
    all_words = []
    for line in contents:
        line_clean = []
        for word in line:
            if word in stopwords:
                continue
            line_clean.append(word) # 没过滤掉的加入到列表
            all_words.append(str(word)) # 做词云用的列表
        contents_clean.append(line_clean)
    return contents_clean,all_words
    #print (contents_clean)

contents = df_content.content_S.values.tolist()   # 分词后正文转列表
stopwords = stopwords.stopword.values.tolist()  # 通用词转列表
contents_clean,all_words = drop_stopwords(contents,stopwords)

去除后停用词后的分词数据

df_content=pd.DataFrame({‘contents_clean‘:contents_clean})
df_content.head()

可以对比之前的未去除的数据, 可以看出很多常用词都被去除了

可以看出 一些字母还是没有去除掉, 如果有需要是可以在停用词表中计入即可

词云数据

词云数据是所有出现的非停用词的一个总的统计, 这里一起转换成df结构

df_all_words=pd.DataFrame({‘all_words‘:all_words})
df_all_words.head()

词频展示

词频计算

根据 all_words 分组后添加新一列 count 计数

然后根据 count 排序进行词频的计算

import numpy

words_count=df_all_words.groupby(by=[‘all_words‘])[‘all_words‘].agg({"count":numpy.size})
words_count=words_count.reset_index().sort_values(by=["count"],ascending=False)
words_count.head()

词云展示

from wordcloud import WordCloud
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib
matplotlib.rcParams[‘figure.figsize‘] = (10.0, 5.0)

wordcloud=WordCloud(font_path="./data/simhei.ttf",background_color="white",max_font_size=80)
word_frequence = {x[0]:x[1] for x in words_count.head(100).values} # 前 100 个词进行展示
wordcloud=wordcloud.fit_words(word_frequence)
plt.imshow(wordcloud)

关键词提取

jieba.analyse.extract_tags  方法可以对关键词进行提取, 指定提取数量

import jieba.analyse
index = 1000
print (df_news[‘content‘][index])
content_S_str = "".join(content_S[index])
print()
print ("  ".join(jieba.analyse.extract_tags(content_S_str, topK=5, withWeight=False)))
阿里巴巴集团昨日宣布,将在集团管理层面设立首席数据官岗位(Chief Data Officer),阿里巴巴B2B公司CEO陆兆禧将会出任上述职务,向集团CEO马云直接汇报。>菹ぃ和6月初的首席风险官职务任命相同,首席数据官亦为阿里巴巴集团在完成与雅虎股权谈判,推进“one company”目标后,在集团决策层面新增的管理岗位。0⒗锛团昨日表示,“变成一家真正意义上的数据公司”已是战略共识。记者刘夏

阿里巴巴  集团  首席  岗位  数据

LDA 主题模型

原文地址:https://www.cnblogs.com/shijieli/p/11883124.html

时间: 2024-11-12 16:31:07

机器学习 - 文本分析案例 - 新闻分析的相关文章

2016年,文本分析、情感分析和社交分析的10大趋势

文本分析.情感分析和社交分析帮助你在一定规模上转化成客户.病人.公众以及市场的“声音”.这项技术目前大量地应用于一系列的工业产品中,从医疗健康到金融.媒体.甚至客户市场.它们从线上.社交网络.企业数据源中提取商业洞察力. 它从文本中.音频中.图像中还有网络连接中提取洞察力,它可真是个有用的东西! 目前分析技术发展得还是相当不错的,尽管在某些领域,例如数字分析和市场研究有些稍稍落后.但是甚至是在例如“客户体验.社群聆听.用户交互”方面,还是有很多发展空间.这个快速发展的市场空间无论对于新加入的玩家

Spark学习四:网站日志分析案例

Spark学习四:网站日志分析案例 标签(空格分隔): Spark Spark学习四网站日志分析案例 一创建maven工程 二创建模板 三日志分析案例 一,创建maven工程 1,执行maven命令创建工程 mvn archetype:generate -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple -DremoteRepositories=http://scal

一个测试案例的分析

案例: 某软件公司在开发一个城镇居民保险系统时,在单元测试.集成测试阶段,为了追赶进度,开发人员与测试人员都没有介入测试工作. 系统测试阶段,测试小组借助缺陷管理工具和开发人员交互进行测试与缺陷修复工作.期间,发现"扭转文档无法归档"的严重错误,开发人员在修改时,认为难度太大,决定暂停修改,得到测试人员认可.在产品发布前,该问题在开发环境下得到解决. 回归测试结束后,开发人员把开发环境下的产品打包,发送给客户. 分析:在案例中,有几处显然不合理的地方: 1.测试介入太晚 2.回归测试做

Android 上千实例源码分析以及开源分析

Android 上千实例源码分析以及开源分析(百度云分享) 要下载的直接翻到最后吧,项目实例有点多. 首先 介绍几本书籍(下载包中)吧. 01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05_Android的JAVA虚拟机和JAVA环境 06_Android的GUI系统 07_Android的Audio系统 08_Android的Video 输入输出系统 09_Android的多媒体系统 10_

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

【转载】常用 Java 静态代码分析工具的分析与比较

摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团

[转载] 常用 Java 静态代码分析工具的分析与比较

转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺

安卓脱壳&amp;&amp;协议分析&amp;&amp;burp辅助分析插件编写

前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 本文以一个 app 为例,演示对 app脱壳,然后分析其 协议加密和签名方法,然后编写 burp 脚本以方便后面的测试. 文中涉及的文件,脱壳后的 dex 都在: 链接: https://pan.baidu.com/s/1nvmUdq5 密码: isrr 对于 burp 扩展和后面加解密登录数据包工具的的源码,直接用 jd-gui 反编译 jar 包即可. 正文

大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制

第1章 Mysql 简介1.1 概述1.2 高级 MySQL第2章 Mysql Linux 版的安装2.1 下载地址2.2 检查当前系统是否安装过 mysql2.3 修改 Mysql 配置文件位置2.4 修改字符集和数据存储路径2.5 MySQL 的安装位置说明2.6 Mysql 配置文件说明2.7 Mysql 的数据存放目录第3章 Mysql 逻辑架构介绍3.1 总体概览3.2 查询说明第4章 Mysql 性能优化4.1 影响 mysql 的性能因素4.2 查询与索引优化分析4.2.1 性能下