精华内容
下载资源
问答
  • Python大数据分析系列博客,包括网络爬虫、可视化分析、GIS地图显示、情感分析、舆情分析、主题挖掘、威胁情报溯源、知识图谱、预测预警及AI和NLP应用等。前文分享了疫情相关新闻数据爬取,并进行中文分词处理及文本...

    思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫、可视化分析、GIS地图显示、情感分析、舆情分析、主题挖掘、威胁情报溯源、知识图谱、预测预警及AI和NLP应用等。希望该系列线上远程教学对您有所帮助,也希望早点战胜病毒,武汉加油、湖北加油、全国加油。待到疫情结束樱花盛开,这座英雄的城市等你们来。

    首先说声抱歉,最近一直忙着学习安全知识,其他系列文章更新较慢,已经有一些人催更了。言归正传,前文分享了疫情相关新闻数据爬取,并进行中文分词处理及文本聚类、LDA主题模型分析。这篇文章将抓取微博话题及评论信息,采用SnowNLP进行简单的情感分析及文本挖掘,包括随时间的情感分布。希望这篇基础性文章对您有所帮助,也非常感谢参考文献中老师的分享,一起加油,战胜疫情!如果您有想学习的知识或建议,可以给作者留言~

    在这里插入图片描述

    展开全文
  • 该资源是针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫、可视化分析、GIS地图显示、情感分析、舆情分析、主题挖掘、威胁情报溯源、知识图谱、预测预警及AI和NLP应用等。希望该系列线上远程教学对您...
  • python数据分析-文本相似度分析

    千次阅读 2018-03-03 10:29:42
    Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度...

    由于本文设计较多知识点,在编写代码之前需要搞清楚这些知识点的含义。

    1。知识点解释

    • Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。
      gensim 以“文集”——文本文档的集合——作为输入,并生成一个“向量”来表征该文集的文本内容,从而实现语义挖掘。
    • TF-IDF.对于提取一篇文章的关键词,如果某个词很重要,它应该在这篇文章中多次出现。于是,我们进行”词频”(Term Frequency,缩写为TF)统计。现次数最多的词是—-“的”、”是”、”在”—-这一类最常用的词。它们叫做”停用词”(stop words),表示对找到结果毫无帮助、必须过滤掉的词。而对于我们需要的关键词,例如对于上篇博文中的《丰乳肥臀》,出现最多的前十个词中包括如:上官,女人,一个,地说,母亲。显然对于关键词:一个,地说,对反应文章的特性并没有其余几个好,这时,就是在词频的基础上,要对每个词分配一个”重要性”权重。最常见的词(”的”、”是”、”在”)给予最小的权重,较常见的词(”一个”)给予较小的权重,较少见的词(”上官”、”女人”)给予较大的权重。这个权重叫做”逆文档频率”(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。知道了”词频”(TF)和”逆文档频率”(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。这里写图片描述这里写图片描述+1为了防止分母出现0。了解了TF-IDF之后,又出现了新的词:语料库。参考一
    • 语料库(corpus)。理论上语料越大越好 ,百度百科的解释:⒈语料库中存放的是在语言的实际使用中真实出现过的语言材料,因此例句库通常不应算作语料库;⒉语料库是承载语言知识的基础资源,但并不等于语言知识;⒊真实语料需要经过加工(分析和处理),才能成为有用的资源。
    • 余弦相似性。简单的说,对于要要计算相似度的两个句子,步骤:分词-计算词频-将词频写成向量形式-计算向量相似程度(向量夹角)。这里写图片描述
      计算方式如下:
      这里写图片描述
      这里写图片描述
      假定a向量是[x1, y1],b向量是[x2, y2],那么可以将余弦定理改写成下面的形式。
      这里写图片描述
      余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,A是 [A1, A2, …, An] ,B是 [B1, B2, …, Bn] ,则A与B的夹角θ的余弦等于:
      这里写图片描述
      余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫”余弦相似性”。

      参考

      所以,对于要计算的两篇文章的相似度:
      (1)使用TF-IDF算法,找出两篇文章的关键词;
      (2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
      (3)生成两篇文章各自的词频向量;
      (4)计算两个向量的余弦相似度,值越大就表示越相似。

    2。代码

    #!/user/bin/env python
    #-*- coding:utf-8 -*-
    #author:M10
    import jieba
    from gensim import corpora,models,similarities
    from collections import defaultdict
    doc1 = '/Users/wangxingfan/Desktop/doc1.txt'
    doc2 = '/Users/wangxingfan/Desktop/doc2.txt'
    d1 = open(doc1).read()
    d2 = open(doc2).read()
    data1 = jieba.cut(d1)
    data2 = jieba.cut(d2)
    list1 = []
    list2 = []
    list = []
    for i in data1:
        list1.append(i)
    for i in data2:
        list2.append(i)
    list = [list1,list2]
    frequency = defaultdict(int)#如果键不存在则返回N/A,而不是报错,获取分词后词的个数
    for i in list:
        for j in i:
            frequency[j] +=1
    #创建词典
    dictionary = corpora.Dictionary(list)
    #词典保存到本地
    dictionary.save('/Users/wangxingfan/Desktop/dic1.txt')
    doc3 = '/Users/wangxingfan/Desktop/doc3.txt'
    d3 = open(doc3).read()
    data3 = jieba.cut(d3)
    data31 = []
    for i in data3:
        data31.append(i)
    new_doc = data31
    #稀疏向量.dictionary.doc2bow(doc)是把文档doc变成一个稀疏向量,[(0, 1), (1, 1)],表明id为0,1的词汇出现了1次,至于其他词汇,没有出现。
    new_vec = dictionary.doc2bow(new_doc)
    #获取语料库
    corpus = [dictionary.doc2bow(i) for i in list]
    tfidf = models.TfidfModel(corpus)
    #特征数
    featureNUM = len(dictionary.token2id.keys())
    #通过TfIdf对整个语料库进行转换并将其编入索引,以准备相似性查询
    index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNUM)
    #计算向量相似度
    sim = index[tfidf[new_vec]]
    print(sim)

    输出结果[ 0. 0.7104941]
    参考:
    gensim教程
    gensim:相似性查询
    如何计算两个文档的相似度(二)

    展开全文
  • 数据分析学习总结笔记09:文本分析

    千次阅读 2020-04-04 09:39:38
    数据分析学习总结笔记09:文本分析1 文本分析1.1 文本分析概述1.2 结构/非结构化数据1.3 文本数据特点1.4 自然语言处理——NLP1.5 文本挖掘的应用2 文本分词2.1 英文分词——KNIME2.2 中文分词2.2.1 中文分词工具...

    1 文本分析

    1.1 文本分析概述

    文本分析是指对文本的表示及其特征项的选取;文本分析是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化以表示文本信息1

    1.2 结构/非结构化数据

    • 结构化数据:指的就是可以用二维表组织、分析处理过程较为明确的信息,可以将这种结构化的二维表组织方式理解为一个表格,表格里的每一个元素都被明确标记并很容易被识别。数字、符号等属于结构化数据。
    • 非结构化数据:指多种信息的无结构混合,通常无法直接知道或明确理解其内部结构,只有经过识别、有条理的存储分析后才能体现其结构化特征,通过文本挖掘,发现价值。文本、图片、声音、视频等属于非结构化数据。
    • 半结构化数据:介于结构化数据和非结构化数据两者之间的数据称为半结构化数据,大多数文本,既包含标题、作者、分类等结构字段,又包含非结构化的文字内容,这类文本均属于半结构化数据。如,新闻等。

    1.3 文本数据特点

    (1)非结构化(非结构化数据占绝大部分)
    (2)海量数据
    (3)高维稀疏性
    (4)语义/情感

    1.4 自然语言处理——NLP

    自然语言处理(Natural Language Processing,NPL)作为计算机科学领域与人工智能领域中的一个重要方向,是处理文本信息的一种重要手段。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。主要包括以下内容:

    • 机器翻译
    • 自动摘要
    • 文本分类
    • 信息检索
    • 信息抽取
    • 自动问答
    • 情感分析
    • ……

    1.5 文本挖掘的应用

    • 词频分析
    • 关键词提取
    • 语义网
    • 文本分类
    • 情感分析
    • 主题模型
    • ……

    2 文本分词

    分词,是将连续字符组成的语句按照一定规则划分成一个个独立词语的过程。

    • 停用词:“This”,“that”,“的”、“地”、“啊”,……
    • 歧义词:我们需要有自主权→自主/主权
    • 未登录词:“喜大普奔”,“洪荒之力”,……
      分词

    2.1 英文分词——KNIME

    (1)软件官方下载地址:KNIME.org。
    (2)推荐原因:开源;具有丰富的案例;支持多种语言(Python,R等)。
    (3)处理步骤:

    • 分词:去除标点符号→删除特定字符→英文大小写规范→去停用词→英文时态规范……
      KNIME
      KNIME界面
    • 分词处理结果
      KNIME
      KNIME
    • 文本挖掘:分类(决策树,SVM支持向量机,K最近邻法)等

    2.2 中文分词

    2.2.1 中文分词工具

    • 软件NLPIR(ICTCLAS)、ROST、FudanNLP
    • 在线应用:SCWS、FudanNLP、LTP、NLPCN、Bosonnlp
      bosonnlp
    • 程序源码:LTP、CRF、smallseg、mmseg4j、盘古分词、Paoding、pynlpirjieba、Rwordseg
      pynlpir

    2.2.2 分词的方法

    • 基于规则:指基于人工标注的词性和统计特征对中文语料进行训练,得到对每一个字的类别标注,根据标注结果来进行分词,同时通过模型计算各种分词结果出现的概率,将概率最大的分词结果作为最终结果。
    • 基于统计:关注文本本身的词项构成,其基本思想是字符串频数分析。分词过程:将文本中所有相邻汉子按照某一长度构成字符串,遍历所有字符串组合并统计其出现的频数,字符串出现的频数越高表明其为固定搭配词的可能性越大,设定某一频数阈值,超过阈值时则将该字符串换分为固定搭配词。
    • 基于词典:指应用词典匹配、汉语词法或其他汉语语言知识进行分词的方法,使用的词典可以是庞大的统一化词典,或者是分行业的垂直词典,如中科院开发的汉语语法分析系统ICTCLAS等。其基本分词原理是,在文本输入后,依据一定策略将待分析的文本与词典进行词项匹配,匹配成功则提取该词。

    2.2.3 中文分词实操——pynlpir

    2.2.3.1 pynlpir准备

    • 简介:Pynlpir是对中文分词软件NLPIR/ICTCLAS做的Python封装,其本质是调用NLPIR/ICTCLAS的分词程序。项目地址:https://github.com/tsroten/pynlpir
    • 安装方法
      (1)pip install pynlpir
      (2)python setup.py install
    • 调用方法
      import pynlpir

    2.2.3.1 操作步骤

    1. 分词
    分词
    2. 发现新词

    • 因为分词工具的词典是通用词典,所以在对一些特定领域的文本进行分词时,可能不能准确地切出我们想要的词。
    • 因此,可以先通过发现新词功能,找出领域独有的词,然后加到用户词典里。
      发现新词
      3. 添加用户词典
      添加用户词典
      4. 文件分词
      文件分词

    3 中文关键词提取

    3.1 关键词提取概述

    关键词提取就是从文本里面把跟这篇文章意义最相关的一些词抽取出来。最早可追溯到文献检索初期,目前依然需要在论文中使用关键词。
    关键词在文本聚类、分类、摘要等领域发挥着重要作用。如,新闻关键词标签;淘宝评论标签;将某段时间中几个人的微博拼成一篇长文本,然后抽取关键词就可以知道他们主要在讨论些什么话题。

    3.2 关键词提取方法

    3.2.1 TF-IDF

    TF-IDF是一种用于信息检索与数据挖掘的常用加权技术,用以评估一字词对于一个文件集及或一个语料库中的其中一份文件的重要程度。

    • TF(Term Frequency)词频,某个词在文章中出现的次数或频率。如果某篇文章中的某个词出现多次,那这个词可能是比较重要的词。
    • IDF(Inverse Document Frequency)逆文档频率,指词语“权重”的度量。在词频的基础上,如果一个词在多篇文档中词频较低,也就表示这是一个比较少见的词,但却在某一篇文章中出现了很多次,则这个词IDF值越大,在这篇文章中的“权重”越大。即,当一个词越常见,其IDF值越低。
    • 当计算出TF和IDF值后,两数相乘即为TF-IDF某词的TF-IDF值越高,说明其在这篇文章中的重要性越高,越有可能是文章的关键词。
      TF-IDF

    3.2.2 TextRank

    TextRank算法是一种用于文本的基于图的排序算法。

    • 基本思想:来源于谷歌的PageRank算法,通过把文本分割成若干组成单元(单词、句子)并建立图模型,利用投票机制对文本中的重要成分进行排序。
    • 优点:不需要事先对多篇文档进行学习训练,仅利用单篇文档本身的信息即可实现关键词提取、文摘,因其简洁有效而得到广泛应用。

    PageRank:

    • PageRank最开始用来计算网页的重要性。整个互联网可以看做一张有向图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页B指向网页A的有向边。
      PageRank
    • 其中,S(Vi)是网页i的重要性(PR值),d是阻尼系数,一般设置为0.85,In(Vi)是存在指向网页i的链接的网页集合,Out(Vi)是网页j中的链接存在的链接指向网页的集合,|Out(Vi)|是集合中元素的个数。

    3.3 关键词提取实操——pynlpir

    1. 提取关键词
    提取关键词
    2. 抽取文件关键词
    抽取文件关键词
    优化输出结果:
    优化结果

    4 中文停用词过滤

    4.1 停用词概述

    停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。
    这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的2

    4.2 停用词实操——pynlpir

    1. 过滤停用词
    过滤停用词
    2. 文件过滤停用词
    文件过滤停用词

    5 中文词频统计

    5.1 NLTK简介

    NLTK是一个高效的Python构建的平台,用来处理人类自然语言数据。

    • 提供了易于使用的接口,通过这些接口可以访问超过50个语料库和词汇资源(如WordNet);
    • 用于分类、标记化、词干标记、解析和语义推理的文本处理库,以及工业级NLP库的封装器;
    • 活跃的讨论论坛。

    5.2 词频统计实操——NLTK

    词频统计NLTK

    6 中文命名实体识别

    6.1 命名实体识别概述

    命名实体识别(Named EntitiesRecognition,NER)指识别文中具有特定意义的实体,如人名、机构名、地名等专有名词和有意义的时间等,是信息检索、问答系统等技术的基础任务。

    • 举例:《华尔街日报》报道称,苹果公司CEO库克声称中国也在首批预售名单中。

    6.2 命名实体识别类型

    1. 模板元素任务(Template Element)
      指提取文本中相关的命名实体,包括各种专有名词、时间表达式、数量表达式等。
    2. 模板关系任务(Template Relation)
      指提取命名实体之间的各种关系事实等。如,“Location of, Employee of, Product of”等关系。
    3. 脚本模板任务(Scenario Template)
      指提取指定的事件,包括参与这个事件的各个实体、属性或关系。

    6.3 命名实体识别方法

    1. 隐马尔可夫模型(Hidden Markv Model, HMM)
    2. 支持向量机(Supper Vector Machine, SVM)
    3. 最大熵(Maximum Entropy, ME)
    4. 条件随机场(Conditional Random Field, CRF)

    6.4 命名实体识别实操——pynlpir

    6.4.1 pynlpir实体分类结构

    • 7个一级实体类型:人、职能、地点、产品、组织机构、数量、时间。
    • 32个二级实体类型。

    6.4.2 pynlpir实操

    1. 显示词性
    显示词性
    2. 提取特定词性
    提取特定词性
    3. 提取命名实体
    命名实体识别
    4. 文件的命名实体识别
    文件命名实体识别
    文件命名实体识别优化
    特定词性

    相关笔记:

    1. Python相关实用技巧01:安装Python库超实用方法,轻松告别失败!
    2. Python相关实用技巧02:Python2和Python3的区别
    3. Python相关实用技巧03:14个对数据科学最有用的Python库
    4. Python相关实用技巧04:网络爬虫之Scrapy框架及案例分析
    5. Python相关实用技巧05:yield关键字的使用
    6. Scrapy爬虫小技巧01:轻松获取cookies
    7. Scrapy爬虫小技巧02:HTTP status code is not handled or not allowed的解决方法
    8. 数据分析学习总结笔记01:情感分析
    9. 数据分析学习总结笔记02:聚类分析及其R语言实现
    10. 数据分析学习总结笔记03:数据降维经典方法
    11. 数据分析学习总结笔记04:异常值处理
    12. 数据分析学习总结笔记05:缺失值分析及处理
    13. 数据分析学习总结笔记06:T检验的原理和步骤
    14. 数据分析学习总结笔记07:方差分析
    15. 数据分析学习总结笔记07:回归分析概述
    16. 数据分析学习总结笔记08:数据分类典型方法及其R语言实现
    17. 数据分析学习总结笔记09:文本分析
    18. 数据分析学习总结笔记10:网络分析

    本文主要根据个人学习(媒体大数据挖掘与案例实战MOOC),并搜集部分网络上的优质资源总结而成,如有不足之处敬请谅解,欢迎批评指正、交流学习!


    1. 媒体大数据挖掘与案例实战MOOC ↩︎

    2. 停用词百度百科 ↩︎

    展开全文
  • python文本数据分析案例—新闻分类

    千次阅读 多人点赞 2020-04-21 16:21:49
    1新闻分类 1.1案例背景 新闻分类是文本分类中常见的应用场量。在传统分类模式下,往往层通过人工对新闻内合进行核对,从而将新闻划分到合适的类别中。... ◆能够对文本数据进行预处理。【文本清洗, ...

    前言

    数据分析不只是对数值型数据的分析,对文本数据的分析也是十分常见的。大家常看到的新闻类APP,如:今日头条,UC头条等,通常都已按新闻类型分好类别,读者可根据自己的喜好查看相应的新闻内容。本案例从数据预处理,数据可视化,文本向量化以及建立模型实现了新闻分类全过程。

    1概述

    1.1案例背景

    新闻分类是文本分类中常见的应用场量。在传统分类模式下,往往是通过人工对新闻内容进行核对,从而将新闻划分到合适的类别中。这种方式会消耗大量的人力资源,并且效率不高。

    1.2任务与实现

    我们的任务在于,根据新闻文本中的内容,进行文本预处理,建模等操作,从而可以自动将新闻划分到最可能的类别中,节省人力资源。 具体实现内容包括:

       ◆能够对文本数据进行预处理。【文本清洗, 分词,去除停用词,文本向量化等操作。】
       ◆能够通过Python统计词频,生成词云图。【描述性统计分析】
       ◆能够通过方差分析,进行特征选择。【验证性统计分析】
       ◆能够根据文本内容,对文本数据进行分类。【统计建模】
    

    1.3任务扩展

    新闻分类是文本分类的常见场景,本案例的实现也可以应用到其他根据文本内容来实现分类的场景,例如,垃圾邮件过滤,情感分析等。

    1.4数据集描述

    数据集为2016年1月1日~ 2018年10月9日期间新闻联播的数据,包括:
    | 列名 | 说明 |
    | date | 新闻日期 |
    | tag | 新闻类别 |
    | headline | 新闻标题 |
    | content | 新闻内容 |

    2.加载数据

    2.1准备工作

    使用anaconda3环境下的jupyter notebook,需要安装jieba,wordcloud库。

    2.2加载数据并预览

    在这里插入图片描述

    3 数据预处理

    3.1 文本数据

    3 .1. 1 结构化数据与非结构化数据

    结构化数据,是可以表示成多行多列的形式,并且,每行( 列) 都有着具体的含义。非结构化数据,无法合理地表示为多行多列的形式,即使那样表示,每行(列)也没有具体的含义。

    3 .1 . 2 文本数据预处理

    文本数据,是一种非结构化数据,与我们之前分析的结构化数据有所不同。因此,其预处理的步骤与方式也会与结构化数据有所差异。文本数据预处理主要包含:

      ◆缺失值处理
      ◆重复值处理
      ◆文本内容洁洗
      ◆分词
      ◆停用词处理
    

    3.2 缺失值处理

    在这里插入图片描述
    content字段存在缺失值,根据实际情况选择用headline字段对应值填充并检查填充后结果。

    3.3重复值处理

    在这里插入图片描述

    查找重复值并删除。

    3.4文本内容清洗

    文本中存在对分析作用不大的标点符号与特殊字符,使用re库中正则匹配方法去除:在这里插入图片描述

    3.5分词

    分词是将连续的文本,分割成语意合理的若干词汇序列,中文分词需要用jieba库中的方法实现分词功能在这里插入图片描述
    这里使用jieba.cut()返回生成器,占用内存较少。随机选择5行数据预览。

    3.6停用词处理

    停用词,指的是在我们语句中大量出现,但却对语义分析没有帮助的词。对于这样的词汇,我们通常可以将其删除,这样的好处在于:
    可以降低存储空间消耗、可以减少计算时间消耗。
    对于哪些词属于停用词,已经有统计好的停用词列表,我们直接使用就好。
    在这里插入图片描述
    定义函数remove_stopword():遍历文本数据词汇,保留不存在于停用词表的词汇。

    4数据可视化分析

    4.1类别数量分布

    统计新闻联播中每种类别的数量
    在这里插入图片描述

    4.2年份数量分布

    按年、月、日统计新闻数量
    在这里插入图片描述

    4.3词汇统计

    4.3.1统计在所有新闻中出现频数最多的N个词汇

    在这里插入图片描述

    4.3.2可视化

    出现最多的15个词汇的频数、频率做条形图在这里插入图片描述

    4.3.3频数分布统计

    绘制所有词汇频数分布直方图
    在这里插入图片描述

    4.4生成词云图

    可以利用python中的wordcloud库生成词云图
    在这里插入图片描述

    5文本向量化

    对文本数据进行建模,有两个问题需要解决:

        ◆模型进行的是数学运算, 因此需要数值类型的数据, 而文本不是数值类型数据。
        ◆模型需要结构化数据, 而文本是非结构化数据。
    

    将文本转换为数值特征向量的过程,称为文本向量化。将文本向量化可以分为如下步骤:

       ◆对文本分词, 拆分成更容处理的单词。
       ◆将单词转换为数值类型, 即使用合适的数值来表示每个单词。
    

    同样,需要注意的是,文本是非结构化数据,在向量化过程中,需要将其转换为结构化数据。

    5 .1 词袋模型

    词袋模型,直观上理解,就是一个装满单词的袋子。实际上,词袋模型是一种能够将文本向量化的方式。在词袋模型中,每个文档为一个样本,每个不重复的单词为一个特征,单词在文档中出现的次数作为特征值。例如,给定如下的文档集:在这里插入图片描述

    如果转换为词袋模型, 则结果为:
    在这里插入图片描述

    这样,我们就成功对文档实现了向量化的作,同时,运词袋模型,我们也将文本数据转换为结构化数据。

    在这里插入图片描述
    这里需要留意的是,默认情况下,CountVectorizer 只会对字符长度不小于2 的单词进行处理,如果单词长度小于2 ( 单词仅有一个字符) ,则会忽略该单词,例如,上例中的单词“ a ” ,并没有作为特征进行向量化。经过训练后,countvectorizer 就可以对未知文档( 训练集外的文档) 进行向量化。当然,向量化的特征仅为训练集中出现的单词特征,如果未知文档中的单词不在训练集中,则在词袋模型中无法体现。
    在这里插入图片描述
    从结果可知,像第2 个文档中,"pain’ 等词汇,在训练集中是没有出现的,而文本向量化是根据训练集中出现的单词作为特征,因此,这些词汇在转换的结果中无法体现。

    5.2 TF-IDF

    通过CountVectorizer 类,我们能够将文档向量化处理。在向量化过程中,我们使每个文档中单词的频数作为对应待征的取值。这是合理的,因为,单词出现的次数越多,我们就认为该单词理应比出现次数少的单词更加重要。然而,这是相对的,有些单词,我们不能仅以当前文档中的频数来进行衡量,还要考虑其在语料库中,在其他文档中出现的次数。因为有些单词,确实是非常常见的,其在语料库所有的文档中,可能都会频繁出现,对于这样的单词,我们就应该降低其重要性。例如,在新闻联播中,”中国“、”发展“等单词,在语料库中出现的频率非常高,即使这些词在某篇文档中频繁出现,也不能说明这些词对当前文档是非常重要的,因为这些词并不含有特别有意义的信息。
    TF-IDF 可以用来调整单词在文档中的权重,其由两部分组成:

     ◆ TF (Term-Frequency) 词频, 指一个单词在文档中出现的次数。
     ◆ IDF (lnverse Document-Frequency)逆文档频率。
    

    计算方式为:
    在这里插入图片描述
    使用TfidfTransformer进行TF-IDF转化,此外,scikit-learn 同时提供了一个类TfidfVectorizer, 其可以直接将文档转换为TF-IDF值,也就是说,该类相当于集成了CountVectorizer 与TfidfTransformer两个类的功能,十分便利。
    在这里插入图片描述

    6建立模型

    6.1 构建训练集与测试集

    我们需要将每条新闻的词汇进行整理。目前,我们文本内容已经完成了分词处理,但词汇是以列表类型呈现的,为了方便后续的向量化操作( 文本向量化需要传递空格分开的字符串数组类型) ,我们将每条新闻的词汇组合在一起,成为字符串类型,使用空格分隔。将标签列(tag列)转换为离散值,之后对样本数据进行切分,构建训练集与测试集。
    在这里插入图片描述

    6.2特征选择

    6.2.1特征维度-方差分析

    大家需要注意,到目前为止,数据集X还是文本类型,我们需要对其进行向量化操作。这里,我们使用TfidfVectorizer类,在训练集上进行训练,然后分别对训练集与测试集实施转换。
    使用词袋模型向量化后,会产生过多的特征,这些特征会对存储与计算造成巨大的压力,同时,并非所有的特征都对建模有帮助,基于以上原因,我们在将数据送入模型之前,先进行特征选择。这里,我们使用方差分析(ANOVA) 来进行特征选择,选择与目标分类变量最相关的20000 个特征。方差分析用来分析两个或多个样本( 来自不同总体) 的均值是否相等,进而可以用来检验分类变量与连续变量之间是否相关。
    在这里插入图片描述

    6.3分类模型评估

    混淆矩阵:可以来评估模型分类的正确性。该矩阵是一个方阵, 矩阵的数值来表示分类器预测的结果, 包括真正例(True Positive ) 假正例(FaIsePositive) 真负例(True Negative )假负例(False Negative)
    在这里插入图片描述
    分类模型的评估标准一般最常见使用的是准确率,即预测结果正确的百分比。准确率是相对所有分类结果;精确率、召回率、F1-score是相对于某一个分类的预测评估标准。
    准确率(Accuracy):预测结果正确的百分比 —— (TP+TN)/(TP+TN+FP+FN)
    精确率(Precision):预测结果为正例样本中真实为正例的比例(查的准)—— TP/(TP+FP)
    召回率(Recall):真实为正例的样本中预测结果为正例的比例(查的全)—— TP/(TP+FN)
    综合指标(F1-score):综合评估准确率与召回率,反映了模型的稳健型 —— 2PrecisionRecall/(Precision+Recall)
    可调用如下方法做出评估:

       · sklearn.metrics.classification_report(y_true, y_pred, target_names=None)
       · y-true : 真实目标值
       · y-pred : 估计器预测的目标值
       · target-names : 目标类别名称
       · return: 每个类别预测的精确率、召回率、F1-score
    

    6.4逻辑回归

    在这里插入图片描述
    准确率(Accuracy): 0.90
    精确率(Precision):0.68
    召回率(Recall):0.60
    综合指标(F1-score):0.63

    6.5KNN

    在这里插入图片描述
    准确率(Accuracy): 0.86
    精确率(Precision):0.64
    召回率(Recall):0.07——过低,大量真实为类别1的未能准确预测为类别1
    综合指标(F1-score):0.86

    6.6决策树

    在这里插入图片描述
    准确率(Accuracy): 0.89
    精确率(Precision):0.62
    召回率(Recall):0.58
    综合指标(F1-score):0.89

    6.7多层感知器

    在这里插入图片描述
    准确率(Accuracy): 0.90
    精确率(Precision):0.74
    召回率(Recall):0.47
    综合指标(F1-score):0.90

    6.8朴素贝叶斯

    在这里插入图片描述
    准确率(Accuracy): 0.91
    精确率(Precision):0.65
    召回率(Recall):0.82
    综合指标(F1-score):0.91
    各项指标来看,在本次案例中,朴素贝叶斯拟合效果较好。

    展开全文
  • 数据分析师Seth Grimes曾指出“80%的商业信息来自非结构化数据,...KDnuggets的编辑、机器学习研究者和数据科学家Matthew Mayo就在网站上写了一个有关文本数据分析的文章系列。本文是该系列的第一篇,主要讲述了文本...
  • Python数据分析文本相似度

    千次阅读 2019-05-03 14:30:38
    Python数据分析文本相似度 文本相似度: 度量文本间的相似性 使用词频表示文本特征 文本中单词出现的频率或次数 将文本表示成向量 向量间相似度 余弦相似度 sim⁡(A,B)=cos⁡(θ)=A⋅B∥A∥B∥ \operator...
  • 接上一篇《【Python数据分析文本情感分析——电影评论分析(一)》。 目录文本向量化词袋模型 文本向量化   文本要进行模型训练,进而判断文本是积极的还是消极,而此时的文本依然是字符串形式,机器学习只能...
  • Python文本数据分析--实战视频教学

    千人学习 2017-07-26 09:33:02
    购买课程后,添加小助手微信(微信号:csdn500)回复【唐宇迪】 进入...案例中实例演示如何从杂乱的文本数据开始进行分词预处理到后应用贝叶斯算法进行分类预测。 专属会员卡更超值:http://edu.csdn.net/lecturer/1079
  • 情感分析文本分类的一种,从一段话分析出褒义还是贬义。使用场景,商品、服务客户的反馈,分析顾客评价。适用于一般文本分类:垃圾邮件分类、新闻分类。
  • 数据分析——文本文件

    千次阅读 2021-03-16 19:25:08
    1、将文本文件转换为列表 with open('C:/Users/wxscn/Desktop/predefined_classes.txt', 'r', encoding='utf-8') as f: classList = f.read().split('\n') print(classList) 运行结果:[‘气孔’, ‘夹渣’, ‘焊...
  • 2019大数据分析软件介绍

    千次阅读 2019-03-25 18:07:31
    大数据分析是什么?大数据分析软件有哪些?这是现在这个信息时代每一个企业管理者、经营参与者都需要了解的。今天,小编就来针对性地总结一下,什么是大数据分析,以及2019年主流的商业大数据分析软件。 一、大数据...
  • 文本数据在我们的生活中无处不在:在微信朋友圈、微博中发表的感想;在论坛上发表的评价商品的帖子;由应用后台自动生成的机器日志等。这类数据本身包含了大量有用的信息,但由于文本表达方式可以很灵活,在不需要...
  • 利用Python进行文本分类,  可用于过滤垃圾文本 1. 抽样 2. 人工标注样本文本中垃圾信息 3. 样本建模 4. 模型评估 5. 新文本预测 参考:  http://scikit-learn.org/stable/user_guide.html PYTHON自然语言...
  • Python数据分析之逐块读取文本

    千次阅读 2018-02-05 11:31:17
    《利用Python进行数据分析》,第6章的数据加载操作read_xxx,有chunksize参数可以进行逐块加载。经测试,它的本质就是将文本分成若干块,每次处理chunksize行的数据,最终返回一个TextParser对象,对该对象进行迭代...
  • 爬虫1.1 整体思路1.2 网页爬取和解析1.3 数据存储反爬虫对抗2 探索性分析文本数据预处理2.1 探索性分析2.2 数据预处理2.3词云展示3 文本的情感分析3.1 先上结果3.2 文本特征提取(TF-IDF)3.3 机器学习建模3.4 ...
  • COAE2014微博文本倾向性分析评测数据
  • python数据分析:新闻文本聚类

    万次阅读 多人点赞 2019-02-26 14:12:54
    文本聚类应用场景:提供规模文档集进行类别划分并提取公共内容的概括和总览;找到潜在的各个文档间的相似度以进行相似度判别、类别修正,以减少浏览相似文档和信息的时间和精力。 通常,聚类分析(也包括其他算法...
  • 温馨提示:本文是《数据分析中,文本分析远比数值型分析重要!》的上篇,聊的是文本分析的一些基本知识,下篇将以一个实际案例来聊聊基于大数据的文本分析是如何应用在商业场景中的,将于明天推送,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 472,448
精华内容 188,979
关键字:

文本大数据分析