① word文本中的文档部件里的域 打开之后不是一个方框,而是一个代码是怎么回事
编者按
文本情感分析是对带有主观感情色彩的文本进行分析、处理、归纳和推理的过程。互联网上每时每刻都会产生大量文本,这其中也包含大量的用户直接参与的、对人、事、物的主观评价信息,比如微博、论坛、汽车、购物评论等,这些评论信息往往表达了人们的各种主观情绪,如喜、怒、哀、乐,以及情感倾向性,如褒义、贬义等。基于此,潜在的用户就可以通过浏览和分析这些主观色彩的评论来了解大众舆论对于某一事件或产品的看法。
百分点认知智能实验室基于前沿的自然语言处理技术和实际的算法落地实践,真正实现了整体精度高、定制能力强的企业级情感分析架构。从单一模型到定制化模型演变、文本作用域优化、多模型(相关度)融合、灵活规则引擎、以及基于实体的情感倾向性判定,探索出了一套高精准、可定制、可干预的智能分析框架,为舆情客户提供了高效的预警研判服务。
本文作 者: 常全有 刘政
一、
情感分析概述
文本情感分析,即 Sentiment Analysis(SA),又称意见挖掘或情绪倾向性分析。 针对通用场景下带有主观描述的中文文本,自动判断该文本的情感极性类别并给出相应的置信度,情感极性分为积极、消极、中性等。
在文本分析的基础上,也衍生出了一系列细粒度的情感分析任务,如:
基于方面的情感分析(ABSA):一般称作 Aspect Based Sentiment Analysis。旨在识别一条句子中一个指定方面(Aspect)的情感极性。常见于电商评论上,一条评论中涉及到关于价格、服务、售后等方面的评价,需要区分各自的情感倾向。
基于实体的情感倾向性判定(ATSA): 一般称作 Aspect-Term Sentiment Analysis。对于给定的情感实体,进行情感倾向性判定。在一句话中不同实体的情感倾向性也是不同的,需要区别对待。
核心目标和价值
舆情系统的最核心需求,是能够精准及时的为客户甄别和推送负面,负面识别的准确性直接影响信息推送和客户体验,其中基于文本的情感分析在舆情分析中的重要性不言而喻,下图简要展示了文本分析以及情感分析在舆情体系中的作用。
舆情数据通过底层的大数据采集系统,流入中间层的 ETL 数据处理平台,经过初级的数据处理转化之后,向上进入数据挖掘核心处理环节;此阶段进行数据标准化、文本深度分析,如地域识别、智能分词、情感判定、垃圾过滤等,经过文本处理的结果,即脱离了原始数据的状态,具备了客户属性,基于客户定制的监测和预警规则,信息将在下一阶段实时的推送给终端客户,负面判定的准确度、召回率,直接影响客户的服务体验和服务认可度。
难点与挑战
舆情业务中的情感分析难点,主要体现在以下几个方面:
1.舆情的客户群体是复杂多样的,涉及行业多达24个(如下图所示),不同行业数据特点或敏感判定方案不尽相同,靠一个模型难以解决所有问题;
2.舆情监测的数据类型繁多, 既有常规的新闻、微信公众号等媒体文章数据,又有偏口语化的微博、贴吧、问答数据,情感模型往往需要针对不同渠道类型单独训练优化,而渠道粒度的模型在不同客户上效果表现也差别巨大;
3.客户对情感的诉求是有差异的,有些客户会有自己专属的判定条件。通用的情感模型难以适应所有客户的情感需求。
4.随着时间推移,客户积累和修正的情感数据难以发挥价值。无法实现模型增量训练和性能的迭代提高。
5.对于关注品牌、主体监测客户,需要进行特定目标(实体)情感倾向性(ATSA)判定。那么信息抽取就是一个难题。
6.对于新闻类数据,通常存在标题和正文两个文本域。如何提取有价值的文本信息作为模型输入也是面临的困难。
二、
情感分析在百分点舆情的发展历程
从2015年开始,百分点舆情便开始将机器学习模型应用在早期的负面判定中;到2020年,我们已经将深度迁移学习场景化和规模化,也取得了不错的成果;
2015年:抓取百万级别的口碑电商评论数据,使用逻辑回归进行建模,做为情感分析的BaseLine;
2016年:主要侧重于技术上的递进,进入深度学习领域。引入word2vec在大规模语料集上进行训练,获得具有更好语义信息的词向量表示,替代基于Tfidf等传统的统计特征。随后在TextCnn、TextRnn等深度学习算法进行更新迭代,尽管得到数字指标的提高,但是对于实际业务的帮助还是不足。
2017年:结合舆情全业务特点,需要能做到针对品牌、主体的情感监测。提出 Syntax and Ruler-based Doc sentiment analysis的方式,依据可扩充的句法规则以及敏感词库进行特定的分析。该方式在敏感精准度指标上是有提升的,但是却有较低的召回。同时在进行规则扩充时,也比较繁琐。
2019年上半年:以Bert为代表的迁移学习诞生,并且可以在下游进行fine-tune,使用较小的训练数据集,便能取得不错的成绩。进行以舆情业务数据为基础,构建一个简易的文本平台标注平台,在其上进行训练数据的标注,构建了一个通用的情感模型分类器。评测指标 F1值为 0.87,后续对 ERNIE1.0 进行尝试,有两个百分点的提升。
2019年下半年:主要从舆情的业务问题入手,通过优化提取更加精准、贴近业务的情感摘要作为模型输入,使用定制化模型以及多模型融合方案,联合对数据进行情感打标。并提出基于情感实体(主体)的负面信息监测,下述统称ATSA(aspect-term sentiment analysis),使用 Bert-Sentence Pair 的训练方式, 将 摘要文本、实体联合输入,进行实体的情感倾向性判定。在定点客户上取得不错的成绩,最后的F1值能达到 0.95。
2020年:将细化领域做到客户级别,定制私有化情感模型。同时将加大对特定实体的细粒度情感分析(ATSA)的优化;同时,通过内部 AI训练平台的规模化应用,做到模型的全生命周期管理,简化操作流程,加强对底层算力平台的资源管控。
三、
预训练语言模型与技术解析
下图大致概括了语言模型的发展状况(未完全统计):
在2019年度情感分析实践中,率先使用预训练语言模型 Bert,提高了情感分析的准确率。后来具有更小参数量的ALBERT的提出,使生产环境定制化情感模型成为可能。这里就主要介绍BERT以及ALBERT。
BERT
BERT(Bidirectional Encoder Representations from Transformerss)的全称是基于 Transformer 的双向编码器表征,其中「双向」表示模型在处理某一个词时,它能同时利用前面的词和后面的词两部分信息(如下图所示)。
在BERT中, 主要是以两种预训练的方式来建立语言模型。
1.MLM(Masked LM)
MLM可以理解为完形填空,作者会随机mask每一个句子中15%的词,用其上下文来做预测,例如:my dog is hairy → my dog is [MASK]。此处将hairy进行了mask处理,然后采用非监督学习的方法预测mask位置的词是什么,具体处理如下:
80%是采用[mask],my dog is hairy → my dog is [MASK]
10%是随机取一个词来代替mask的词,my dog is hairy -> my dog is apple
10%保持不变,my dog is hairy -> my dog is hairy
之后让模型预测和还原被遮盖掉或替换掉的部分。
2.NSP(Next Sentence Prediction)
首先我们拿到属于上下文的一对句子,也就是两个句子,之后我们要在这两段连续的句子里面加一些特殊 token: [cls] 上一句话,[sep] 下一句话. [sep]
也就是在句子开头加一个 [cls],在两句话之中和句末加 [sep],具体地就像下图一样:
Token Embeddings:是词向量,第一个单词是CLS标志,可以用于之后的分类任务。
Segment Embeddings:用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务。
Position Embeddings:让BERT学习到输入的顺序属性。
BERT在文本摘要、信息检索、数据增强、阅读理解等任务中,也有实际的应用和发展。更多关于Bert相关介绍,请参照百分点认知智能实验室往期文章。
ALBERT
ALBERT的全称是A Lite BERT for Self-supervised Learning of Language Representations(用于语言表征自监督学习的轻量级BERT),相对于Bert而言,在保证参数量小的情况下,也能保持较高的性能。当然同样的模型还有 DistilBERT、TinyBERT。
1.ALBERT 和BERT的比较
下图是BERT和ALBERT在训练速度和性能上的整体比较:
ALBERT-xxlarge的表现完全超过BERT-large,同时参数量只有其占比的70%,但是Bert-large的速度要比ALBERT-xxlarge快三倍左右。
BERT-xlarge的性能相对于Bert-base是低效的,表明大参数模型相对于小参数模型更加难训练。
2.ALBERT的目标
在基于预训练语言模型表征时,增加模型大小一般可以提升模型在下游任务中的性能。但是通过增加模型大小会带来以下问题:
内存问题
训练时间会更长
模型退化
在将Bert-large的隐层单元数增加一倍, Bert-xlarge在基准测试上准确率显著降低。
ALBERT核心目标就是解决上述问题, 下面就来介绍ALBERT在精简参上的优化。
3.ALBERT模型优化
明确参数的分布,对于有效可靠的减少模型参数十分有帮助。ALBERT同样也只使用到Transformer的Encoder阶段,如下图所示:
图中标明的蓝色方框和红色方框为主要的参数分布区域:
Attention feed-forward block(上图中蓝色实线区域):
参数大小: O(12 * L * H * H)
L:编码器层数 eg:12
H:隐藏层大小 eg:768
参数量占比:80%
优化方法:采用参数共享机制
Token embedding projection block(上图中红色实线区域):
参数大小:(V * E)
V:词表大小 eg:30000
E:词嵌入大小 eg:768
参数量占比: 20%
优化方法:对Embedding进行因式分解
>E,所以ALBERT的词向量的维度是小于encoder输出值维度的。在NLP任务中,通常词典都会很大,embedding matrix的大小是E×V。 ALBERT采用了一种因式分解(Factorized embedding parameterization)的方法来降低参数量。首先把one-hot向量映射到一个低维度的空间,大小为E,然后再映射到一个高维度的空间,当E<
具体参数优化如下:
Factorized embedding parameterization(对Embedding因式分解)
ALBERT认为,token embedding是没有上下文依赖的表述,而隐藏层的输出值不仅包括了词本身的意思还包括一些上下文信息,因此应该让H>>E,所以ALBERT的词向量的维度是小于encoder输出值维度的。在NLP任务中,通常词典都会很大,embedding matrix的大小是E×V。
ALBERT采用了一种因式分解(Factorized embedding parameterization)的方法来降低参数量。首先把one-hot向量映射到一个低维度的空间,大小为E,然后再映射到一个高维度的空间,当E<
可以看到,经过因式分解。参数量从O(V * H) 变为O(V*E + E*H),参数量将极大减小。如下图所示:在H=768条件下,对比E=128和E=768,参数量减少17%,而整体性能下降0.6%。
在后续的实验环境(所有的优化汇总后),对 embedding size 的大小进行评估,得出在 E=128时,性能达到最佳。
Cross-layer parameter sharing(跨层参数共享)
下图是对BERT-Base Attention分布的可视化。对于一个随机选择的句子,我们可视化来自不同Layer的Head的Attention分布。可以看到,底层的Attention分布类似于顶层的Attention分布。这一事实表明在某种程度上,它们的功能是相似的。
Transformer中共享参数有多种方案,只共享feed-forward层,只共享attention层,ALBERT结合了上述两种方案,feed-forward层与attention层都实现参数共享,也就是说共享encoder内的所有参数。但是需要主要的是,这只是减少了参数量,推理时间并没有减少。如下图所示:在采用 all-shared模式下,参数量减少70%,性能下降小于3%。
在经过上述的参数优化后,整体参数量有了极大的缩减,训练速度也极大加快。后续作者又在模型变宽和模型变深上做了几组实验。如下:
模型变宽
当我们增加 H 大小时,性能会逐渐提高。在H=6144时,性能明显下降。如下图所示:
模型变深
在以ALBERT-large为基础参数,设置不同的layer大小,发现layer=48的性能要差于layer=24的性能,如下图所示:
一些实验表示NSP(BERT-style)非但没有作用,反而会对模型带来一些损害。作者接着提出SOP(ALBERT-style)的优化模式。具体如下:
Inter-sentence coherence loss(句子连贯性)
在ALBERT中,为了去除主题识别的影响,提出了一个新的任务 sentence-order prediction(SOP),SOP的正样本和NSP的获取方式是一样的,负样本把正样本的顺序反转即可。SOP因为是在同一个文档中选的,只关注句子的顺序并没有主题方面的影响。并且SOP能解决NSP的任务,但是NSP并不能解决SOP的任务,该任务的添加给最终的结果提升了一个点。
在后续的实验中, ALBERT在训练了100w步之后,模型依旧没有过拟合,于是乎作者果断移除了dropout,没想到对下游任务的效果竟然有一定的提升。
当然作者对于增加训练数据和训练时长也做了详尽的对比和测试,这里不再进行描述。
在最初的 ALBERT发布时,是只有中文的。感谢数据工程师徐亮以及所在的团队,于 2019 年 10 月,开源了首个中文预训练的中文版 ALBERT 模型。
项目地址:
https://github.com/brightmart/albert_zh
四、
情感分析在舆情的应用实践
业务调研
2019上半年,舆情服务的整体情感判定框架已经迁移到以Bert训练为基础的情感模型上,得出的测试指标 F1 值为 0.86,相较于旧版模型提升显著; 但是虽然数据指标提升明显,业务端实际感受却并不明显。因此我们对代表性客户进行采样调查,辅助我们找出生产指标和实验室指标差异所在。同时针对上文提到的关于舆情业务中情感分析的痛点和难点,进行一次深度业务调研:
1.客户情感满意度调查
2.文本作用域(模型输入文本选择)调研
这里将文本作用域分为以下几个层次,分布情况如下图所示:
标题:正常文章的标题
全文: 标题和正文的统称
情感摘要:依据客户的输入特征词,从文章中抽取一段摘要;长度在256字符内。
关键词周边:只关注所配置关键词周边的文本作用域,一般是一句话。
主体(实体)词周边:依据客户所配置的品牌词、主体词,选取对应的文本作用域。
3.情感判定因素
这里对判定因素做以下介绍:
自然语义:是指符合人们的情感判定标准,像 色情、暴力、违禁、邪教、反动等言论都是敏感信息的范畴。比如:"#28天断食减肥[超话]#美柚说我还有4天就来姨妈了,所以是快要来姨妈了体重就掉的慢甚至不掉了吗,心塞。" 属于敏感。
主体(实体)情感:一般涉及到的是 人名、地名、机构名、团体名、产品名、品牌名、”我“、”作者“等; 如果监测主体为美柚,那么上述文本的情感倾向性就是非敏感。再举例如下:”墨迹天气又忘记签到了,这个记性越来越差“,墨迹天气是监测主体,那么属于非敏感。
业务规则: 是指以一种可表示、可量化、可总结、可表达的形式总结知识和规则,已经不符合自然语义的理解范畴。
业务规则&自然语义:客户的负面信息判定是结合业务规则,并且是符合自然语义判定标准的。
我们针对上述调研结果进行详尽分析,最终确定走情感细粒度模型的道路。
情感分析的落地实践
精简版本的情感架构概览如下:
接下来会基于此进行讲述,大致分为如下几个层次:
1.输入层
这里主要是获取相应文本输入,以及客户的文本作用域规则和检索词、主体词,供下游的文本作用域生成提供对应的条件。
2.文本作用域
依据文本作用域规则,生成对应的模型输入,请参照上文对文本作用域的阐述。这里实验内容针对的是情感摘要。首先将文本进行分句,然后依据对每一个句子和检索词进行匹配,通过BM25计算相关性。这里限制的文本长度在256内。在文本域优化后, 对线上的10家客户进行对比分析,实验条件如下:
客户数目:10
数据分布:从舆情系统中按照自然日,为每个客户选取100条测试数据
对比条件:情感摘要、标题
进行对比分析(客户名称已脱敏),每个客户的情感摘要和文本标题效果依次展示。如下图所示:
可以发现整体效果是有极大提升的。但是也可以看到部分客户的敏感精准率是偏低的,这个和客户的敏感分布有关,大部分的敏感占比只有总数据量的 10% ~20%,有些甚至更加低。所以面临一个新的问题,如何提升非均匀分布的敏感精准度。这个会在下文进行陈述。
3.情感判定因素
由上文的情感因素分布得知, 情感对象(实体)的因素占54%,基于实体的情感倾向性判定(ATSA)是一个普适需求。如果这里直接使用通用情感分析判定(SA),在舆情的使用场景中会存在高召回,低精准的的情况。接下来会对此进行相关解决方案的的论述。
4.模型层
通用情感模型
在19年初, 使用Bert-Base(12L,768H)进行fine-tune,得到如下指标:情感准确性:0.866, 敏感精准率: 0.88,敏感召回:0.84,F1: 0.867;后来在ERNIE1.0上进行尝试,情感准确性能提升2个百分点。不过因为PaddlePaddle的生态问题,没有选择ERNIE。这是一个符合自然语义的情感模型, 但是对于舆情客户来说,这还远远不够。
相关度模型
对生产环境的埋点日志分析,发现客户存在大量的屏蔽操作。选取近一个月屏蔽最多的10个话题进行分析,如下图所示:
通过调研和分析发现,这些数据虽然命中关键词,但是数据相关度比较低。在情感判定之前引入相关度判定, 对于非相关的数据,一律判定为非敏感。对于精准数据再次进行情感分析判定,大大提升敏感精准率。在工程上选取ALBERT进行模型训练可以达到部署多个模型的目的。观测到,单个模型在推理阶段,在Gpu(RTX 2080)上占用的显存大约在600MiB,极大节省资源。
部分客户相关度模型效果如下:
客户名称
准确率
正样本数量
负样本数量
数据来源
C1
0.95
619
1141
收藏、屏蔽数据
C2
0.97
5085
5244
收藏、屏蔽数据
C3
0.93
450
450
收藏、屏蔽数据
C4
0.94
136
487
收藏、屏蔽数据
部分客户实施相关度判定,由于数据特征比较明显,可以很容易达到比较精准的数据效果,但是并不适用于所有客户。相关度模型的引入,即达到筛选相关数据的目的,也能减少情感判定噪音数据的干扰,提升敏感精准度。
5.ATSA-面向情感实体的情感倾向性分析
ATSA(aspect-term sentiment analysis) 要解决就是在特定情感实体下的情感倾向性判定问题。这里主要借鉴《Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence》文中的思想。这个工作做得非常聪明,它把本来情感计算的常规的单句分类问题,通过加入辅助句子,改造成了句子对匹配任务。很多实验证明了:BERT是特别适合做句子对匹配类的工作的,所以这种转换无疑能更充分地发挥BERT的应用优势。
舆情中要解决的问题如下:
A公司和B公司的情感倾向性是非敏感的, 而C公司却是敏感的。要解决这个问题,要面临两个问题:
实体识别和信息抽取问题
实体级别的情感倾向性判定
在舆情的业务场景中,可以简化问题,由于情感实体是提前给定的, 所以不需要做实体识别和信息抽取, 只需要对特定实体的情感倾向性进行判定。整体流程如下:
主要是利用 Bert Sentence-Pair,文本与实体联合训练,得到输出标签。目前实验证明,经过这种问题转换,在保证召回率提升的情况下,准确率和精准率都得到了提高。选取一个客户进行对比测试,如下所示:
实验条件
实验方式
准确率
精准率
召回率
F1
按照自然日采样,测试样本为912条,其中敏感数据108条
ATSA
0.95
0.8
0.85
0.82
情感摘要
0.84
0.4
0.7
0.51
上述是一个正负样本及其不均匀的情况,增加敏感精准率将提高客户的满意度。目前的实现的机制还略显简单,未来还将持续投入。
6.情感规则引擎
在部分客户场景中, 他们的业务规则是明确的或者是可穷举的。这里会做一些长尾词挖掘、情感新词发现等工作来进行辅助, 同时要支持实时的干预机制,快速响应。比如某些客户的官方微博经常会发很多微博,他们会要求都判定成非敏感。这里不再做过多介绍。
五、
长期规划
AI 训练平台的构建
软件开发领域和模型开发领域的流程是不同的,如下所示:
可以看到,构建模型是困难的。在舆情架构发展中,线上多模型是必然的趋势,也就意味着需要一个平台能够快速支持和构建一个定制化模型,来满足真实的应用场景。这就需要从底层的算力资源进行管控、舆情数据的标准化制定和积累、模型的生命周期管理等多方面进行衡量。关于 AI 训练平台的构建以及在舆情领域的应用实践,我们将在后续文章做进一步阐述。
持续学习,增量迭代
随着舆情客户对系统的深度使用,一般会有情感标签的人工纠正。所以需要保证模型可以进行增量迭代,减少客户的负反馈。
多实体的情感倾向分析
对包含有多个实体信息的文本,针对每一个系统识别到的实体,做自动情感倾向性判断(敏感、非敏感),并给出相应的置信度,包括实体库的构建。
提升垂直类情感情感分析效果
在垂类上(App、餐饮、酒店等)情感倾向性分析准确率上加大优化力度。
随着舆情业务的发展,各领域客户都沉淀了大量与业务贴近的优质数据,如何有效使用这些数据,形成情感效果联动反馈机制,为业务赋能,是情感分析领域面临的新的挑战。在2019年的实践中,通过场景化的情感分析框架落地应用,对情感效果做到了模型定制化干预,真正提高了客户满意度。这种机制具有整体精度高、定制能力强、业务感知明显的特点。在后续工作中,将以 模型训练自动化与人工反馈相结合的方式,将模型定制能力规模化、平台化,实现情感分析在舆情场景下千人千面的效果。
百分点舆情洞察系统
百分点舆情洞察系统(MediaForce)是一款沉淀多年的互联网公开舆情 SAAS 分析系统,覆盖全网主流资讯站点及社交媒体的公开数据,帮助企业迅速发现舆情热点,掌握负面和舆论动向,为上万客户提供精准的舆情分析服务。
Refer:
Chi Sun, Luyao Huang, Xipeng Qiu: Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence. NAACL-HLT (1) 2019: 380-385
Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL-HLT (1) 2019: 4171-4186
Yifan Qiao, Chenyan Xiong, Zheng-Hao Liu, Zhiyuan Liu: Understanding the Behaviors of BERT in Ranking. arXiv preprint arXiv:1904.07531 (2019).
Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Ra Soricut:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations.arXiv:1909.11942 [cs.CL]
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin:Attention Is All You Need.arXiv:1706.03762 [cs.CL]
Linyuan Gong, Di He, Zhuohan Li, Tao Qin, Liwei Wang, Tieyan Liu ; Proceedings of the 36th International Conference on Machine Learning, PMLR 97:2337-2346, 2019:Efficient Training of BERT by Progressively Stacking
https://github.com/thunlp/PLMpapers
http://jalammar.github.io/illustrated-bert/
https://www.bilibili.com/video/BV1C7411c7Ag?p=4
② 如何用python做舆情时间序列可视化
如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧。
痛点
你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价。从前,你苦恼的是顾客不爱写评价。最近因为餐厅火了,分店越来越多,写评论的顾客也多了起来,于是你新的痛苦来了——评论太多了,读不过来。
从我这儿,你了解到了情感分析这个好用的自动化工具,一下子觉得见到了曙光。
你从某知名点评网站上,找到了自己一家分店的页面,让助手把上面的评论和发布时间数据弄下来。因为助手不会用爬虫,所以只能把评论从网页上一条条复制粘贴到Excel里。下班的时候,才弄下来27条。(注意这里我们使用的是真实评论数据。为了避免对被评论商家造成困扰,统一将该餐厅的名称替换为“A餐厅”。特此说明。)
好在你只是想做个试验而已,将就了吧。你用我之前介绍的中文信息情感分析工具,依次得出了每一条评论的情感数值。刚开始做出结果的时候,你很兴奋,觉得自己找到了舆情分析的终极利器。
可是美好的时光总是短暂的。很快你就发现,如果每一条评论都分别运行一次程序,用机器来做分析,还真是不如自己挨条去读省事儿。
怎么办呢?
序列
办法自然是有的。我们可以利用《贷还是不贷:如何用Python和机器学习帮你决策?》一文介绍过的数据框,一次性处理多个数据,提升效率。
但是这还不够,我们还可以把情感分析的结果在时间序列上可视化出来。这样你一眼就可以看见趋势——近一段时间里,大家是对餐厅究竟是更满意了,还是越来越不满意呢?
我们人类最擅长处理的,就是图像。因为漫长的进化史逼迫我们不断提升对图像快速准确的处理能力,否则就会被环境淘汰掉。因此才会有“一幅图胜过千言万语”的说法。
准备
首先,你需要安装Anaconda套装。详细的流程步骤请参考《 如何用Python做词云 》一文。
助手好不容易做好的Excel文件restaurant-comments.xlsx,请从这里下载。
用Excel打开,如果一切正常,请将该文件移动到咱们的工作目录demo下。
因为本例中我们需要对中文评论作分析,因此使用的软件包为SnowNLP。情感分析的基本应用方法,请参考《如何用Python做情感分析?》。
到你的系统“终端”(macOS, Linux)或者“命令提示符”(Windows)下,进入我们的工作目录demo,执行以下命令。
pip install snownlp
pip install ggplot
运行环境配置完毕。
在终端或者命令提示符下键入:
jupyter notebook
如果Jupyter Notebook正确运行,下面我们就可以开始编写代码了。
代码
我们在Jupyter Notebook中新建一个Python 2笔记本,起名为time-series。
首先我们引入数据框分析工具Pandas,简写成pd以方便调用。
import pandas as pd
接着,读入Excel数据文件:
df = pd.read_excel("restaurant-comments.xlsx")
我们看看读入内容是否完整:
df.head()
结果如下:
注意这里的时间列。如果你的Excel文件里的时间格式跟此处一样,包含了日期和时间,那么Pandas会非常智能地帮你把它识别为时间格式,接着往下做就可以了。
反之,如果你获取到的时间只精确到日期,例如"2017-04-20"这样,那么Pandas只会把它当做字符串,后面的时间序列分析无法使用字符串数据。解决办法是在这里加入以下两行代码:
from dateutil import parser
df["date"] = df.date.apply(parser.parse)
这样,你就获得了正确的时间数据了。
确认数据完整无误后,我们要进行情感分析了。先用第一行的评论内容做个小实验。
text = df.comments.iloc[0]
然后我们调用SnowNLP情感分析工具。
from snownlp import SnowNLP
s = SnowNLP(text)
显示一下SnowNLP的分析结果:
s.sentiments
结果为:
0.6331975099099649
情感分析数值可以正确计算。在此基础上,我们需要定义函数,以便批量处理所有的评论信息。
def get_sentiment_cn(text):
s = SnowNLP(text) return s.sentiments
然后,我们利用Python里面强大的apply语句,来一次性处理所有评论,并且将生成的情感数值在数据框里面单独存为一列,称为sentiment。
df["sentiment"] = df.comments.apply(get_sentiment_cn)
我们看看情感分析结果:
df.head()
新的列sentiment已经生成。我们之前介绍过,SnowNLP的结果取值范围在0到1之间,代表了情感分析结果为正面的可能性。通过观察前几条数据,我们发现点评网站上,顾客对这家分店评价总体上还是正面的,而且有的评论是非常积极的。
但是少量数据的观察,可能造成我们结论的偏颇。我们来把所有的情感分析结果数值做一下平均。使用mean()函数即可。
df.sentiment.mean()
结果为:
0.7114015318571119
结果数值超过0.7,整体上顾客对这家店的态度是正面的。
我们再来看看中位数值,使用的函数为median()。
df.sentiment.median()
结果为:
0.9563139038622388
我们发现了有趣的现象——中位数值不仅比平均值高,而且几乎接近1(完全正面)。
这就意味着,大部分的评价一边倒表示非常满意。但是存在着少部分异常点,显著拉低了平均值。
下面我们用情感的时间序列可视化功能,直观查看这些异常点出现在什么时间,以及它们的数值究竟有多低。
我们需要使用ggplot绘图工具包。这个工具包原本只在R语言中提供,让其他数据分析工具的用户羡慕得流口水。幸好,后来它很快被移植到了Python平台。
我们从ggplot中引入绘图函数,并且让Jupyter Notebook可以直接显示图像。
%pylab inlinefrom ggplot import *
这里可能会报一些警告信息。没有关系,不理会就是了。
下面我们绘制图形。这里你可以输入下面这一行语句。
ggplot(aes(x="date", y="sentiment"), data=df) + geom_point() + geom_line(color = 'blue') + scale_x_date(labels = date_format("%Y-%m-%d"))
你可以看到ggplot的绘图语法是多么简洁和人性化。只需要告诉Python自己打算用哪个数据框,从中选择哪列作为横轴,哪列作为纵轴,先画点,后连线,并且可以指定连线的颜色。然后,你需要让X轴上的日期以何种格式显示出来。所有的参数设定跟自然语言很相似,直观而且易于理解。
执行后,就可以看到结果图形了。
在图中,我们发现许多正面评价情感分析数值极端的高。同时,我们也清晰地发现了那几个数值极低的点。对应评论的情感分析数值接近于0。这几条评论,被Python判定为基本上没有正面情感了。
从时间上看,最近一段时间,几乎每隔几天就会出现一次比较严重的负面评价。
作为经理,你可能如坐针毡。希望尽快了解发生了什么事儿。你不用在数据框或者Excel文件里面一条条翻找情感数值最低的评论。Python数据框Pandas为你提供了非常好的排序功能。假设你希望找到所有评论里情感分析数值最低的那条,可以这样执行:
df.sort(['sentiment'])[:1]
结果为:
情感分析结果数值几乎就是0啊!不过这里数据框显示评论信息不完全。我们需要将评论整体打印出来。
print(df.sort(['sentiment']).iloc[0].comments)
评论完整信息如下:
这次是在情人节当天过去的,以前从来没在情人节正日子出来过,不是因为没有男朋友,而是感觉哪哪人都多,所以特意错开,这次实在是馋A餐厅了,所以赶在正日子也出来了,从下午四点多的时候我看排号就排到一百多了,我从家开车过去得堵的话一个小时,我一看提前两个小时就在网上先排着号了,差不多我们是六点半到的,到那的时候我看号码前面还有才三十多号,我想着肯定没问题了,等一会就能吃上的,没想到悲剧了,就从我们到那坐到等位区开始,大约是十分二十分一叫号,中途多次我都想走了,哈哈,哎,等到最后早上九点才吃上的,服务员感觉也没以前清闲时周到了,不过这肯定的,一人负责好几桌,今天节日这么多人,肯定是很累的,所以大多也都是我自己跑腿,没让服务员给弄太多,就虾滑让服务员下的,然后环境来说感觉卫生方面是不错,就是有些太吵了,味道还是一如既往的那个味道,不过A餐厅最人性化的就是看我们等了两个多小时,上来送了我们一张打折卡,而且当次就可以使用,这点感觉还是挺好的,不愧是A餐厅,就是比一般的要人性化,不过这次就是选错日子了,以后还是得提前预约,要不就别赶节日去,太火爆了!
通过阅读,你可以发现这位顾客确实有了一次比较糟糕的体验——等候的时间太长了,以至于使用了“悲剧”一词;另外还提及服务不够周到,以及环境吵闹等因素。正是这些词汇的出现,使得分析结果数值非常低。
好在顾客很通情达理,而且对该分店的人性化做法给予了正面的评价。
从这个例子,你可以看出,虽然情感分析可以帮你自动化处理很多内容,然而你不能完全依赖它。
自然语言的分析,不仅要看表达强烈情感的关键词,也需要考虑到表述方式和上下文等诸多因素。这些内容,是现在自然语言处理领域的研究前沿。我们期待着早日应用到科学家们的研究成果,提升情感分析的准确度。
不过,即便目前的情感分析自动化处理不能达到非常准确,却依然可以帮助你快速定位到那些可能有问题的异常点(anomalies)。从效率上,比人工处理要高出许多。
你读完这条评论,长出了一口气。总结了经验教训后,你决定将人性化的服务贯彻到底。你又想到,可以收集用户等候时长数据,用数据分析为等待就餐的顾客提供更为合理的等待时长预期。这样就可以避免顾客一直等到很晚了。
祝贺你,经理!在数据智能时代,你已经走在了正确的方向上。
下面,你该认真阅读下一条负面评论了……
讨论
除了情感分析和时间序列可视化,你觉得还可以如何挖掘中文评论信息?除了点评网站之外,你还知道哪些舆情分析的数据来源?欢迎留言分享给大家,我们一起交流讨论。
如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。
如果你身边有好友正在做舆情分析的研究工作,也欢迎你把这篇文章转发给他们,共同学习和提高。
③ 大数据专业都需要学习哪些软件啊
大数据处理分析能力在21世纪至关重要。使用正确的大数据工具是企业提高自身优势、战胜竞争对手的必要条件。下面让我们来了解一下最常用的30种大数据工具,紧跟大数据发展脚步。
第一部分、数据提取工具
Octoparse是一种简单直观的网络爬虫,可以从网站上直接提取数据,不需要编写代码。无论你是初学者、大数据专家、还是企业管理层,都能通过其企业级的服务满足需求。为了方便操作,Octoparse还添加了涵盖30多个网站的“任务模板 (Task Templates)”,操作简单易上手。用户无需任务配置即可提取数据。随着你对Octoparse的操作更加熟悉,你还可以使用其“向导模式 (Wizard Mode)”来构建爬虫。除此之外,大数据专家们可以使用“高级模式 (Advanced Mode)”在数分钟内提取企业批量数据。你还可以设置“自动云提取 (Scheled Cloud Extraction)”,以便实时获取动态数据,保持跟踪记录。
02
Content Graber
Content Graber是比较进阶的网络爬网软件,具有可用于开发、测试和生产服务器的编程操作环境。用户可以使用C#或VB.NET调试或编写脚本来构建爬虫。Content Graber还允许你在爬虫的基础上添加第三方扩展软件。凭借全面的功能,Content Grabber对于具有基本技术知识的用户来说功能极其强大。
Import.io是基于网页的数据提取工具。Import.io于2016年首次启动,现已将其业务模式从B2C转变为B2B。2019年,Import.io并购了Connotate,成为了一个网络数据集成平台 (Web Data Integration Platform)。凭借广泛的网络数据服务,Import.io成为了商业分析的绝佳选择。
Parsehub是基于网页的数据爬虫。它可以使用AJax,javaScript等等从网站上提取动态的的数据。Parsehub提供为期一周的免费试用,供用户体验其功能。
Mozenda是网络数据抓取软件,提供企业级数据抓取服务。它既可以从云端也可以从内部软件中提取可伸缩的数据。
第二部分、开源数据工具
01Knime
KNIME是一个分析平台,可以帮助你分析企业数据,发现潜在的趋势价值,在市场中发挥更大潜能。KNIME提供Eclipse平台以及其他用于数据挖掘和机器学习的外部扩展。KNIME为数据分析师提供了2,000多个模块。
02OpenRefine(过去的Google Refine)是处理杂乱数据的强有力工具,可用于清理、转换、链接数据集。借助其分组功能,用户可以轻松地对数据进行规范化。
03R-Programming
R大家都不陌生,是用于统计计算和绘制图形的免费软件编程语言和软件环境。R语言在数据挖掘中很流行,常用于开发统计软件和数据分析。近年来,由于其使用方便、功能强大,得到了很大普及。
04RapidMiner
与KNIME相似,RapidMiner通过可视化程序进行操作,能够进行分析、建模等等操作。它通过开源平台、机器学习和模型部署来提高数据分析效率。统一的数据科学平台可加快从数据准备到实施的数据分析流程,极大地提高了效率。
第三部分、数据可视化工具
01
Datawrapper
Microsoft PowerBI既提供本地服务又提供云服务。它最初是作为Excel附加组件引入的,后来因其强大的功能而广受欢迎。截至目前,它已被视为数据分析领域的领头羊,并且可以提供数据可视化和商业智能功能,使用户能够以较低的成本轻松创建美观的报告或BI仪表板。
02
Solver
Solver专用于企业绩效管理 (CPM) 数据可视化。其BI360软件既可用于云端又可用于本地部署,该软件侧重于财务报告、预算、仪表板和数据仓库的四个关键分析领域。
03
Qlik
Qlik是一种自助式数据分析和可视化工具。可视化的仪表板可帮助公司有效地“理解”其业务绩效。
04
Tableau Public
Tableau是一种交互式数据可视化工具。与大多数需要脚本的可视化工具不同,Tableau可帮助新手克服最初的困难并动手实践。拖放功能使数据分析变得简单。除此之外,Tableau还提供了入门工具包和丰富的培训资源来帮助用户创建报告。
05
Google Fusion Tables
Fusion Table是Google提供的数据管理平台。你可以使用它来收集,可视化和共享数据。Fusion Table与电子表格类似,但功能更强大、更专业。你可以通过添加CSV,KML和电子表格中的数据集与同事进行协作。你还可以发布数据作品并将其嵌入到其他网络媒体资源中。
06
Infogram
Infogram提供了超过35种交互式图表和500多种地图,帮助你进行数据可视化。多种多样的图表(包括柱形图,条形图,饼形图和文字云等等)一定会使你的听众印象深刻。
第四部分、情感分析工具
01
HubSpot’s ServiceHub
HubSpot具有客户反馈工具,可以收集客户反馈和评论,然后使用自然语言处理 (NLP) 分析数据以确定积极意图或消极意图,最终通过仪表板上的图形和图表将结果可视化。你还可以将HubSpot’s ServiceHub连接到CRM系统,将调查结果与特定联系人联系起来。这样,你可以识别不满意的客户,改善服务,以增加客户保留率。
02
Semantria
Semantria是一款从各种社交媒体收集帖子、推文和评论的工具。Semantria使用自然语言处理来解析文本并分析客户的态度。通过Semantria,公司可以了解客户对于产品或服务的感受,并提出更好的方案来改善产品或服务。
03
Trackur
Trackur的社交媒体监控工具可跟踪提到某一用户的不同来源。它会浏览大量网页,包括视频、博客、论坛和图像,以搜索相关消息。用户可以利用这一功能维护公司声誉,或是了解客户对品牌和产品的评价。
04
SAS Sentiment Analysis
SAS Sentiment Analysis是一款功能全面的软件。网页文本分析中最具挑战性的部分是拼写错误。SAS可以轻松校对并进行聚类分析。通过基于规则的自然语言处理,SAS可以有效地对消息进行分级和分类。
05
Hootsuit Insight
Hootsuit Insight可以分析评论、帖子、论坛、新闻站点以及超过50种语言的上千万种其他来源。除此之外,它还可以按性别和位置对数据进行分类,使用户可以制定针对特定群体的战略营销计划。你还可以访问实时数据并检查在线对话。
第五部分、数据库
01
Oracle
毫无疑问,Oracle是开源数据库中的佼佼者,功能丰富,支持不同平台的集成,是企业的最佳选择。并且,Oracle可以在AWS中轻松设置,是关系型数据库的可靠选择。除此之外,Oracle集成信用卡等私人数据的高安全性是其他软件难以匹敌的。
02
PostgreSQL
PostgreSQL超越了Oracle、MySQL和Microsoft SQL Server,成为第四大最受欢迎的数据库。凭借其坚如磐石的稳定性,它可以处理大量数据。
03
Airtable
Airtable是基于云端的数据库软件,善于捕获和显示数据表中的信息。Airtable提供一系列入门模板,例如:潜在客户管理、错误跟踪和申请人跟踪等,使用户可以轻松进行操作。
04
MariaDB
MariaDB是一个免费的开源数据库,用于数据存储、插入、修改和检索。此外,Maria提供强大的社区支持,用户可以在这里分享信息和知识。
05
Improvado
Improvado是一种供营销人员使用自动化仪表板和报告将所有数据实时地显示在一个地方的工具。作为营销和分析领导者,如果你希望在一个地方查看所有营销平台收集的数据,那么Inprovado对你再合适不过了。你可以选择在Improvado仪表板中查看数据,也可以将其通过管道传输到你选择的数据仓库或可视化工具中,例如Tableau、Looker、Excel等。品牌,代理商和大学往往都喜欢使用Improvado,以大大节省人工报告时间和营销花费。
④ 求一份计算机本科的毕业设计,题目只要计算机类的就可以
计算机毕业设计
基于Python的SIFT和KCF的运动目标匹配与跟踪 毕业论文+项目源码
基于Python决策树算法的学生学习行为数据分析 设计报告+代码及数据
基于Sring+bootstrap+MySQL的住房公积金管理系统 课程报告+项目源码及数据库文件
基于C++的即时通信软件设计 毕业论文+项目源码
基于JavaWeb+MySQL的图书管理系统 课程报告+项目源码及数据库文件
基于Android Studio+Android SDK的手机通讯录管理软件设计 课程报告+项目源码
基于jsP+MySQL的校园网上订餐系统 毕业论文+项目源码及数据库文件
基于AndroidStudio的花艺分享平台APP设计 报告+源码及APK文件
基于Python的酒店评论情感分析 课程报告+答辩PPT+项目源码
基于QT的教务选课管理系统设计与实现 毕业论文+项目源码
基于Android+Springboot+Mybatis+Mysql的个人生活APP设计 说明书+项目源码
基于Vue.js+Go的Web3D宇宙空间数据可视化系统 设计报告+前后端源码及数据
基于java+android+SQLite的保健型果饮在线销售APP设计 毕业论文+源码数据库及APK文件
基于Vue.js+SpringBoot+MyBatis+MySQL的高校综合资源发布分享社交二手平台 毕业论文+项目源码及数据库文件+演示视频
基于Delphi+MySQL的大学生竞赛发布及组队系统 设计报告+源码数据库及可执行文件+使用说明书
基于Android的名片信息管理系统设计与实现 毕业论文+任务书+外文翻译及原文+演示视频+项目源码
基于Python的电影数据可视化分析系统 设计报告+答辩PPT+项目源码
基于JavaWeb的企业公司管理系统设计与实现 毕业论文+答辩PPT+演示视频+项目源码
高校成绩管理数据库系统的设计与实现 毕业论文+项目源码
基于JavaWeb的家庭食谱管理系统设计与实现 毕业论文+项目源码及数据库文件
基于Python+SQLSERVER的快递业务管理系统的设计与实现 毕业论文+项目源码及数据库文件
基于Python的语音词频提取云平台 设计报告+设计源码
在推荐系统中引入 Serendipity 的算法研究 毕业论文+参考文献+项目源码
基于Html+Python+Django+Sqlite的机票预订系统 毕业论文+项目源码及数据库文件
基于Python的卷积神经网络的猫狗图像识别系统 课程报告+项目源码
基于C++的云安全主动防御系统客户端服务端设计 毕业论文+项目源码
基于JavaSSM的学生成绩管理APP系统设计与实现 毕业论文+答辩PPT+前后台源码及APK文件
基于JavaSwing+MySQL的清朝古代名人数据管理系统设计 毕业论文+任务书+项目源码及数据库文件
基于Python_Django的社会实践活动管理系统设计与实现 毕业论文
基于Servlet WebSocket MySQL实现的网络在线考试系统 毕业论文+项目源码
基于JavaWEB+MySQL的学生成绩综合管理系统 毕业论文+项目源码及数据库文件
基于SpringBoot+Vue和MySQL+Redis的网络课程平台设计与实现 毕业论文+任务书+开题报告+中期报告+初稿+前后台项目源码
基于Java的毕业设计题目收集系统 课程报告+项目源码
基于Java+Python+html的生产者与消费者算法模拟 毕业论文+任务书+项目源码
基于JavaWeb+MySQL的学院党费缴费系统 毕业论文+项目源码及数据库文件
基于Java+MySQL的学生成绩管理系统 毕业论文+任务书+答辩PPT+项目源码及数据库文件
基于Java+MySQL的学生和客户信息管理系统 课程报告+项目源码及数据库文件
基于Java的长整数加减法算法设计 毕业论文+项目源码
基于vue+MySQL的毕业设计网上选题系统 毕业论文+项目源码
基于背景建模和FasterR-CNN的视频前景和目标检测 毕业论文+答辩PPT+项目源码
基于Python的智能视频分析之人数统计的多种实现 毕业论文+答辩PPT+项目源码
基于C#+SQL server的校园卡消费信息管理系统 毕业论文+项目源码及数据库文件
⑤ 学python用什么书
这本书非常的适合零基础或者只有一点编程经验的朋友,它从Python程序的安装,交互式解释器的使用,基础数据类型,各种条件语句等方方面面的基础知识都讲到了,而且在书的最后几个章节,还有10个练习的实战项目,非常适合新手入门来学习。
这本书算是从事Python编程工作人员人手一本的必备书籍,这本书需要在看完前面的Python基础教程,掌握基本的Python知识。
该书不是循序渐进的在讲Python编程语言的书,而是针对某些特定python问题和任务,提出一些特别的方法和技巧。小编认为无论你目前是处在哪个阶段的Python爱好者,这本书都会让人获得非常多有价值的编程知识。
美亚畅销Python 3编程图书,帮助你通过编程快速实现工作自动化 。在本书中,你将学习利用Python 编程,在几分钟内完成手工需要几小时的工作,而事先却无需具备编程经验。一旦掌握了编程的基础知识,你就可以毫不费力地创建Python 程序,完成高效的自动化工作。
本书涵盖了成为一名技术全面的Python开发人员所需的一切内容。本书讲解了应用开发相关的多个领域,而且书中的内容可以立即应用到项目开发中。此外,本书还包含了一些使用Python 2和Python 3编写的代码案例,以及一些代码移植技巧。有些代码片段甚至无须修改就可以运行在Python 2.x或Python 3.x上。本书适合具有一定经验的Python开发人员阅读。
读书破万卷,下笔如有神。这句古话说来是有道理的。学python推荐这些书籍,大家也可以先多去看看,这样对自己接下来的深入学习是十分有帮助的。
⑥ 用networkx和python编程可视化分析共现词关系图
1 介绍
在之前的Jupyter notebook《共词分析中的共词关系是怎么得到的?》中,我们学习了如何将GooSeeker分词和情感分析软件生成的选词矩阵和共词矩阵Excel表导入到NumPy array数据结构中,并展示了以词为研究对羡信象时,选词矩阵和共词矩阵之间的关系。
GooSeeker分词和情感分析软件具备展示共现词关系图的能力,但当前软件版本存在以下局限性,需要使用Jupyter Notebook来弥补:
这些问题将在接下来的多个notebook中逐一探讨。首先,本notebook将演示如何使用networkx绘制社会网络分析图。然后在接下来的notebook中,我们将演示如何对图进行化简,包括根据边权重化简和利用MST算法化简。
2 使用方法
操作顺序如下:
注意:GooSeeker发布的每个notebook项目目录都预先规划好了,具体参看Jupyter Notebook项目目录规划参考。如果要新做一个分析项目,需要将整个模板目录复制一份给新项目,然后编写notebook目录下的ipynb文件。
3 修改历史
2022-08-18:第一版发布
4 版权说明
本notebook由GooSeeker大数据分析团队开发,所分析的源数据是GooSeeker分词和文本分析软件生成的。本notebook中的代码可自由共享使用,包括转发、复制、修改、用于其他项目中。
5 准备运行环境
5.1 引入需要用到的库
5.2 设置中文字体
因为含有中文,pyplot画图可能会显示以下错误信息:
C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:238: RuntimeWarning: Glyph 32993 missing from current font. font.set_text(s, 0.0, flags=flags)
这是因为找不到中文字体,所以图上的中文显示不出来。为了解决pyplot显示找不到字体的问题,可以参考glyph-23130-missing-from-current-font,先进行如下设置。
5.3 常量和配置
在我们发布的一系列Jupyter Notebook中,处理GooSeeker分词软件导出的结果文件的,都给各种导出文件起了固定的名字。为了方便大家使用,只要把导出文件放在data/raw文件夹,notebook就会找到导出文件,并赋值给对应的文件名变量。下面列出了可能用到的文件名变量:
5.4 检测data\raw目录下是否有GooSeeker分词结果表
在本notebook中,我们只使用共词矩阵表。下面的代码将检查data/raw中是否有这个表,如果没有会报错,后面的程序就无法执行了。
输出结果如下:
6 读取共词矩阵表并存入矩阵
读入桐此过程不展开讲解,具体参看《共词分析中的共词关系是怎么得到的?》
6.1 用pandas dataframe读入共词矩阵
6.2 提取字段名
将用于给graph的node命名
输出结果:
6.3 生成矩阵数据结构
输出结果:
看看有多少个词:
输出结果:133
7 生成图并进行探索
7.1 从NumPy数组生成networkx图
参看networkx文档,有专门的函数可以从其他数据结构直接生成graph
输出结果:
7.2 给node加上label
如果不加label,画出来的图上的每个节点只是一个编号,加上label可以看到节点对应的词。
根据get_node_attributes,查看现在的note labels
输出结果:
{}
根据How-do-I-label-a-node-using-networkx-in-python,重新命名labels
7.3 画图
figure函数的使用方法参看pyplot官网。其他参考资料:
8 点度中心性分析
上面画的图糊成了一片,改进方向有这些
本notebook尝试第三点,而Gephi的使用方法将在另一个系列的文章中讲解。
8.1 定义一个公共画图函数
下局派迅面的代码来自NetworkX的中心性分析案例:plot_degree.html。将用来从多个角度观察点度中心性。
8.2 对点度中心性排序
观察哪些词是中心词。可以看到,由于数据集中的每个文档都比较长,共现的机会很高,所以,点度中心性很近似,前面的这些基本上都是全连接。
8.3 综合展示点度中心性
因为图的密度很高,用这个新定义的画图函数依然显示一片黑,但是还有两个图值得注意,实际上这两个图展示了相同内容,只是展示的角度不同,从这两个图可以看到具有某个点度的节点数量。
9 总结
下面是GooSeeker分词和情感分析软件自带的社会网络图展示,可以看到,软件自带的展示效果要远比上面的好。那么,我们需要怎样的处理才能从社会网络图上发现更多有价值的信息呢?在接下来的notebook中,我们将讲解两种简化图的方法:
除了简化社会网络图,我们在《共词分析中的共词关系是怎么得到的?》提到,度量词与词之间关系的方法不只是共词关系,或者说共词关系不只是用共现次数表示,还可以有更细致的方法,比如,度量同步变化规律和幅度的协方差分析,经过标准化后的皮尔森相关系数分析等等,后面的notebook将逐步讲解。
⑦ 求Deep learning 【Yann LeCun 1,2 , Yoshua Bengio 3 & Geoffrey Hinton 4,5】全文中文翻译
ご清栄のこととお喜び申し上げます。
株式会社山田商事、営业部の山田太郎でございます。
このたび、业界のコンサルタントとしてご活跃の真田先生をお迎えして、讲演会を开催いたします。
お得意様には、一般参加の方々より一足先にご案内メールをお送りしております。
出席を希望される场合、添付のご案内状をご覧いただき、
返信メールにてお知らせくださいますようお愿いいたします。