nlp情感分析_nlp情感分析原理 - CSDN
精华内容
参与话题
  • 新手探索NLP(七)——情感分析

    千次阅读 2019-05-28 15:35:13
    文本情感分析(sentiment analysis),又称为意见挖掘,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。其中,主观情感可以是他们的判断或者评价,他们的情绪状态,或者有意传递的情感信息。因此,...

    简介

    文本情感分析(sentiment analysis),又称为意见挖掘,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。其中,主观情感可以是他们的判断或者评价,他们的情绪状态,或者有意传递的情感信息。因此,情感分析的一个主要任务就是情感倾向性的判断,情感倾向分为正面、负面和中性,即褒义、贬义和客观评价。研究初期,大量研究者都致力于针对词语和句子的倾向性判断研究,但随着互联网上大量主观性文本的出现,研究者们逐渐从简单的情感词语的分析研究过渡到更为复杂的情感句研究以及情感篇章的研究。文本情感分析主要可以归纳为3项层层递进的研究任务,即情感信息的抽取、情感信息的分类以及情感信息的检索与归纳]。情感信息抽取就是将无结构的情感文本转化为计算机容易识别和处理的结构化文本。情感信息分类则是利用情感信息抽取的结果将情感文本单元分为若干类别,供用户查看,如分为褒、贬、客观或者其他更细致的情感类别。情感信息检索和归纳可以看作是与用户直接交互的接口,强调检索和归纳的两项应用。 

    情感分析是一个新兴的研究课题,具有很大的研究价值和应用价值,正受到国内外众多研究者的青睐。目前实现情感分析的技术主要包括基于机器学习法和基于语义方法两类。

    类别

    基于统计机器学习法

    随着大规模语料库的建设和各种语言知识库的出现,基于语料库的统计机器学习方法进入自然语言处理的视野。多种机器学习方法应用到自然语言处理中并取得了良好的效果,促进了自然语言处理技术的发展。机器学习的本质是基于数据的学习(Learning from Data)。利用机器学习算法对统计语言模型进行训练,最后用训练好的分类器对新文本情感进行识别。 基本的算法有:支持向量机(SVM)、朴素贝叶斯(NB)、K-近邻(KNN)、简单线性分类器(SLC)和最大熵(ME)等。

    近年来有关自然语言处理、人工智能、信息检索、数据挖掘以及Web应用等领域的多个国际顶级会议(AAAI、ACL、SIGIR等)都收录了文本情感倾向分析的相关论文。机器学习的方法虽然在目前来讲分类的准确程度比较高,但是它针对每一种产品使用前,训练样本集的建立都需要采用人工方法对大量的评论文章逐一阅读甄别,并进行手工标志,这与利用自动情感分类降低人的阅读负担这一初衷还有着一定的差距。因此,近来许多研究者将情感分析研究的重点集中在对训练样本的需求量较低的语义方法上。

    基于语义的方法

    最初学者想到利用词典将手工采集的种子评价词语进行扩展来获取大量的评价词 .这种方法简单易行,但是较依赖于种子评价词语的个数和质量,并且容易由于一些词语的多义性而引入噪声.为了避免词语的多义性,一部分学者使用词典中词语的注释信息来完成评价词语的识别与极性判断.此外,一些学者沿用了Turney等人的点互信息的方法,通过计算WordNet中的所有形容词与种子褒义词代表good和贬义词bad之间的关联度值来识别出评价词语情感倾向。

    基于文本语义理解的情感挖掘北京理工大学大数据搜索与挖掘实验室张华平主任研发了NLPIR大数据语义智能情感分析技术。

    NLPIR情感分析技术提供两种模式:全文的情感判别(左图)与指定对象的情感判别(右图)。情感分析主要采用了两种技术:1.情感词的自动识别与权重自动计算,利用共现关系,采用Bootstrapping的策略,反复迭代,生成新的情感词及权重;2.情感判别的深度神经网络:基于深度神经网络对情感词进行扩展计算,综合为最终的结果。NLPIR情感分析内容形式包括特定人物的正、负面分析,这样可以从整体看到特定人物对社会观点和事情的态度,从而来判断他的态度是积极的还是消极的 。同时通过喜、怒、哀、乐、惊、惧等几种情感维度分别展现他的性格取向,是稳重型还是冒进型;是积极乐观的还是消极愤世的;这样就可以综合的反应特定人物的情感状态。

    情感分析不是单单的对特定人物感情来进行分析,同时还要对特定人物相关事件一起来分析从而得出更加科学、全面的分析报告。NLPIR系统能够实体抽取智能识别文本中出现的人名、地名、机构名、媒体、作者及文章的主题关键词,这是对语言规律的深入理解和预测,并且其所提炼出的词语不需要在词典库中事先存在。NLPIR实体抽取系统采用基于角色标注算法自动识别命名实体,开发者可在此基础上搭建各种多样化的大数据挖掘应用。

    技术实现

    LDA

    LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。

     

    上图中提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的红色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。

    在第三节和第四节我们讲述了LDA的原理,现在我们对LDA降维的流程做一个总结。

        输入:数据集D={(x1,y1),(x2,y2),...,((xm,ym))}D={(x1,y1),(x2,y2),...,((xm,ym))} ,其中任意样本xixi 为n维向量,yi∈{C1,C2,...,Ck}yi∈{C1,C2,...,Ck} ,降维到的维度d。

        输出:降维后的样本集$D′$

        1) 计算类内散度矩阵SwSw

        2) 计算类间散度矩阵SbSb

        3) 计算矩阵S−1wSbSw−1Sb

        4)计算S−1wSbSw−1Sb 的最大的d个特征值和对应的d个特征向量(w1,w2,...wd)(w1,w2,...wd) ,得到投影矩阵WWW

        5) 对样本集中的每一个样本特征xixi ,转化为新的样本zi=WTxizi=WTxi

        6) 得到输出样本集D′={(z1,y1),(z2,y2),...,(zm,ym)}

     

    参考:

    展开全文
  • 文本分类应用: 常见的有垃圾邮件识别,情感分析 文本分类方向: 主要有二分类,多分类,多标签分类 文本分类方法: 传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等) 文本分类的处理大致...

    第一部分:文本分类

    训练文本分类器过程见下图:
    在这里插入图片描述
    文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个
    文本分类应用: 常见的有垃圾邮件识别,情感分析
    文本分类方向: 主要有二分类,多分类,多标签分类
    文本分类方法: 传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)
    文本分类的处理大致分为文本预处理文本特征提取分类模型构建等。和英文文本处理分类相比,中文文本的预处理是关键技术。

    一、文本预处理(解决特征空间高维性、语义相关性和特征分布稀疏)

    1、中文分词技术

    为什么分词处理?因为研究表明特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。

    中文分词主要分为两类方法:基于词典的中文分词和基于统计的中文分词。

    • 基于词典的中文分词

      ​ 核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功。

      所以:字典,切分规则和匹配顺序是核心。

    • 基于统计的中文分词方法

      ​ 统计学认为分词是一个概率最大化问题,即拆分句子,基于语料库,统计相邻的字组成的词语出现的概率,相邻的词出现的次数多,就出现的概率大,按照概率值进行分词,所以一个完整的语料库很重要。

    • 基于理解的分词方法

      基于理解的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

    2、去除停用词

    建立停用词字典,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质 上是特征选择的一部分。

    二、文本特征提取

    1、词袋模型
    • 思想:

      建立一个词典库,该词典库包含训练语料库的所有词语,每个词语对应一个唯一识别的编号,利用one-hot文本表示。

    • 文档的词向量维度与单词向量的维度相同,每个位置的值是对应位置词语在文档中出现的次数,即词袋模型(BOW))

    • 问题:

      (1)容易引起维度灾难问题,语料库太大,字典的大小为每个词的维度,高维度导致计算困难,每个文档包含的词语数少于词典的总词语数,导致文档稀疏。(2)仅仅考虑词语出现的次数,没有考虑句子词语之间的顺序信息,即语义信息未考虑

    2、TF-IDF文本特征提取
    • 利用TF和IDF两个参数来表示词语在文本中的重要程度。

    • TF是词频:

      指的是一个词语在一个文档中出现的频率,一般情况下,每一个文档中出现的词语的次数越多词语的重要性更大,例如BOW模型一样用出现次数来表示特征值,即出现文档中的词语次数越多,其权重就越大,问题就是在长文档中 的词语次数普遍比短文档中的次数多,导致特征值偏向差异情况。

    • TF体现的是词语在文档内部的重要性。

    • IDF是体现词语在文档间的重要性

      即如果某个词语出现在极少数的文档中,说明该词语对于文档的区别性强,对应的特征值高,IDF值高,IDFi=log(|D|/Ni),D指的是文档总数,Ni指的是出现词语i的文档个数,很明显Ni越小,IDF的值越大。

    • 最终TF-IDF的特征值的表达式为:TF-IDF(i,j)=TFij*IDFi

    3、基于词向量的特征提取模型
    • 想基于大量的文本语料库,通过类似神经网络模型训练,将每个词语映射成一个定维度的向量,维度在几十到化百维之间,每个向量就代表着这个词语,词语的语义和语法相似性和通过向量之间的相似度来判断。

    • 常用的word2vec主要是CBOW和skip-gram两种模型,由于这两个模型实际上就是一个三层的深度神经网络,其实NNLM的升级,去掉了隐藏层,由输入层、投影层、输出层三层构成,简化了模型和提升了模型的训练速度,其在时间效率上、语法语义表达上效果明显都变好。word2vec通过训练大量的语料最终用定维度的向量来表示每个词语,词语之间语义和语法相似度都可以通过向量的相似度来表示。

    三、分类模型

    1、传统机器学习方法:

    ​ 传统机器学习算法中能用来分类的模型都可以用,常见的有:NB模型,随机森林模型(RF),SVM分类模型,KNN分类模型模型。

    2、深度学习文本分类模型
    • fastText模型

      模型结构:在这里插入图片描述
      原理: 句子中所有的词向量进行平均(某种意义上可以理解为只有一个avg pooling特殊CNN),然后直接连接一个 softmax 层进行分类。

    • TextCNN:利用CNN来提取句子中类似 n-gram 的关键信息

      模型结构[4]:在这里插入图片描述

    在这里插入图片描述
    改进: fastText 中的网络结果是完全没有考虑词序信息的,而TextCNN提取句子中类似 n-gram 的关键信息。

    • TextRNN

      模型: Bi-directional RNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的 “n-gram” 信息。
      在这里插入图片描述
      改进: CNN有个最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size 的超参调节也很繁琐。

    • TextRNN + Attention

      模型结构:
      在这里插入图片描述
      改进:注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来。

    • TextRCNN(TextRNN + CNN)

      模型结构:
      在这里插入图片描述
      过程:
      利用前向和后向RNN得到每个词的前向和后向上下文的表示:
      在这里插入图片描述
      词的表示变成词向量和前向后向上下文向量连接起来的形式:
      在这里插入图片描述
      再接跟TextCNN相同卷积层,pooling层即可,唯一不同的是卷积层 filter_size = 1就可以了,不再需要更大 filter_size 获得更大视野。

    第二部分:情感分析

    一、概述

    ​ 情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。

    ​ 情感分析可以采用基于情感词典的传统方法,也可以采用基于机器学习的方法。

    二、基于情感词典的情感分类方法

    1、基于词典的情感分类步骤

    ​ 基于情感词典的方法,先对文本进行分词和停用词处理等预处理,再利用先构建好的情感词典,对文本进行字符串匹配,从而挖掘正面和负面信息。如图:在这里插入图片描述

    2、情感词典

    ​ 情感词典包含正面词语词典、负面词语词典、否定词语词典、程度副词词典等四部分。一般词典包含两部分,词语和权重。在这里插入图片描述
    ​ 情感词典在整个情感分析中至关重要,所幸现在有很多开源的情感词典,如BosonNLP情感词典,它是基于微博、新闻、论坛等数据来源构建的情感词典,以及知网情感词典等。当然也可以通过语料来自己训练情感词典。

    3、情感词典文本匹配算法

    ​ 基于词典的文本匹配算法相对简单。逐个遍历分词后的语句中的词语,如果词语命中词典,则进行相应权重的处理。正面词权重为加法,负面词权重为减法,否定词权重取相反数,程度副词权重则和它修饰的词语权重相乘。如图:
    在这里插入图片描述
    利用最终输出的权重值,就可以区分是正面、负面还是中性情感了。

    4、缺点

    ​ 基于词典的情感分类,简单易行,而且通用性也能够得到保障。但仍然有很多不足:

    • 精度不高。

      ​ 语言是一个高度复杂的东西,采用简单的线性叠加显然会造成很大的精度损失。词语权重同样不是一成不变的,而且也难以做到准确。

    • 新词发现。

      ​ 对于新的情感词,比如给力,牛逼等等,词典不一定能够覆盖。

    • 词典构建难。

      ​ 基于词典的情感分类,核心在于情感词典。而情感词典的构建需要有较强的背景知识,需要对语言有较深刻的理解,在分析外语方面会有很大限制。

    三、基于机器学习的情感分类方法

    • 即为分类问题,文本分类中的各方法均可采用。

    第三部分:意图识别

    一、概述

    • 意图识别是通过分类的办法将句子或者我们常说的query分到相应的意图种类。

      ​ 举一个简单的例子,我想听周杰伦的歌,这个query的意图便是属于音乐意图,我想听郭德纲的相声便是属于电台意图。做好了意图识别以后对于很多nlp的应用都有很重要的提升,比如在搜索引擎领域使用意图识别来获取与用户输入的query最相关的信息。举个例子,用户在查询"生化危机"时,我们知道"生化危机"既有游戏还有电影,歌曲等等,如果我们通过意图识别发现该用户是想玩"生化危机"的游戏时,那我们直接将游戏的查询结果返回给用户,就会节省用户的搜索点击次数,缩短搜索时间,大幅提高用户的体验。

      ​ 再举一个目前最火热的聊天机器人来说明一下意图识别的重要性。目前各式各样的聊天机器人,智能客服,智能音箱所能处理的问题种类都是有限制的。比如某聊天机器人目前只有30个技能,那么用户向聊天机器人发出一个指令,聊天机器人首先得根据意图识别将用户的query分到某一个或者某几个技能上去,然后再进行后续的处理。 做好了意图识别以后,那种类似于电影场景里面人机交互就有了实现的可能,用户向机器发来的每一个query,机器都能准确的理解用户的意图,然后准确的给予回复。人与机器连续,多轮自然的对话就可以借此实现了。

    二、意图识别的基本方法

    1、基于词典以及模版的规则方法

    ​ 不同的意图会有的不同的领域词典,比如书名,歌曲名,商品名等等。当一个用户的意图来了以后我们根据意图和词典的匹配程度或者重合程度来进行判断,最简单一个规则是哪个domain的词典重合程度高,就将该query判别给这个领域。

    2、基于查询点击日志

    ​ 如果是搜索引擎等类型业务场景,那么我们可以通过点击日志得到用户的意图。

    3、基于分类模型来对用户的意图进行判别

    ​ 因为意图识别本身也是一个分类问题,其实方法和分类模型的方法大同小异。

    三、意图识别的难点

    ​ 意图识别工作最大的难点其实是在于标注数据的获取。目前标注数据的获取主要来自两方面,一方面是专门的数据标注团队对数据进行标注,一方面是通过半监督的方式自动生成标注数据。

    展开全文
  • NLP——新闻文本的情感分析

    千次阅读 2019-08-01 11:03:44
    使用NLP情感分析目标收集打好情感标签的新闻文本构建文本向量化模型新闻文本的情感分析 目标 根据输入的新闻文本,得到文本的情感倾向,返回一个0~100的值 收集打好情感标签的新闻文本 利用众包,外部采购标签...

    目标

    根据输入的新闻文本,得到文本的情感倾向,返回一个0~100的值

    收集打好情感标签的新闻文本

    • 利用众包,外部采购标签数据;
    • 利用现有的API打标签,百度API或腾讯API

    构建文本向量化模型

    • TF,词频
    • TF-IDF,
    • Word2Vec

    新闻文本的情感分析

    输入情感分析模型和词向量模型,得到新闻的情感倾向。

    展开全文
  • NLP情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分) 输出结果 1、测试对象 data1= '今天上海的天气真好!我的心情非常高兴!如果去旅游的话我会非常兴奋!和你一起去旅游我会更加...

    NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)

     

     

     

     

    目录

    输出结果

    设计思路

    相关资料

    1、关于代码

    2、关于数据集

    关于留言

    1、留言内容的注意事项

    2、如何留言?

    2.1、第一种方法——在对应的博客下留言

    2.2、备用第二种方法——论坛发帖

    后续补充发放资料的说明

    主要部分代码实现


     

     

    输出结果

    1、测试对象
    data1= '今天上海的天气真好!我的心情非常高兴!如果去旅游的话我会非常兴奋!和你一起去旅游我会更加幸福!'
    data2= '今天上海天气真差,非常讨厌下雨,把我冻坏了,心情太不高兴了,不高兴,我真的很生气!'
    data3= '美国华裔科学家,祖籍江苏扬州市高邮县,生于上海,斯坦福大学物理系,电子工程系和应用物理系终身教授!'

    2、输出结果
    很明显,data1情感更加积极!data2情感消极!data3情感中等!

    [[240.0, 104.0, 8.3, 3.6, 8.0, 2.4]]
    [[0.0, 134.0, 0.0, 4.8, 0.0, 3.2]]
    [[2, 66, 0.1, 3.3, 0.4, 1.7]]
    [[2, 2, 0.1, 0.1, 0.4, 0.4]]

     

    设计思路

    后期更新……

     

     

    相关资料

    1、关于代码

    NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码
     

    2、关于数据集

    如需数据集,请留言向博主索取。
    :当前为学生身份的网友,可留言向博主索取。非学生身份的社会人士,请靠积分下载!

     

     

    关于留言

    1、留言内容的注意事项

    • 1、请新增评论,不要直接回复,折叠后,我容易看不到,会漏掉。
    • 2、请在前缀加一个索取资料的当天日期。
    • 3、切记要留下邮箱!!!

    比如留言:“20200307,早上10.11,你好,博主,我的邮箱是,我想索取……”

     


    2、如何留言?

    2.1、第一种方法——在对应的博客下留言

    即在本博客下直接留言即可!

     

    2.2、备用第二种方法——论坛发帖

    在我的论坛中发帖即可,我会及时回复。
    地址:https://bbs.csdn.net/topics/395531480

     

     

    后续补充发放资料的说明

    此类网友,太伤人心,这位网友,一定不是大学生,当代大学生的素质肯定比这位网友高的多。

     

    主要部分代码实现

    import jieba
    import numpy as np
    
    ……
    
    
    def sentiment_score_list(dataset):
        seg_sentence = dataset.split('。')
    
        count1 = []
        count2 = []
        for sen in seg_sentence: #循环遍历每一个评论
            segtmp = jieba.lcut(sen, cut_all=False)  #把句子进行分词,以列表的形式返回
            i = 0 #记录扫描到的词的位置
            a = 0 #记录情感词的位置
            poscount = 0 #积极词的第一次分值
            poscount2 = 0 #积极词反转后的分值
            poscount3 = 0 #积极词的最后分值(包括叹号的分值)
            negcount = 0
            negcount2 = 0
            negcount3 = 0
            for word in segtmp:
                if word in posdict:  # 判断词语是否是情感词
                    poscount += 1
                    c = 0
                    for w in segtmp[a:i]:  # 扫描情感词前的程度词
                        if w in mostdict:
                            poscount *= 4.0
                        elif w in verydict:
                            poscount *= 3.0
                        elif w in moredict:
                            poscount *= 2.0
                        elif w in ishdict:
                            poscount *= 0.5
                        elif w in deny_word:
                            c += 1
                    if judgeodd(c) == 'odd':  # 扫描情感词前的否定词数
                        poscount *= -1.0
                        poscount2 += poscount
                        poscount = 0
                        poscount3 = poscount + poscount2 + poscount3
                        poscount2 = 0
                    else:
                        poscount3 = poscount + poscount2 + poscount3
                        poscount = 0
                    a = i + 1  # 情感词的位置变化
    
                elif word in negdict:  # 消极情感的分析,与上面一致
                    negcount += 1
                    d = 0
                    for w in segtmp[a:i]:
                        if w in mostdict:
                            negcount *= 4.0
                        elif w in verydict:
                            negcount *= 3.0
                        elif w in moredict:
                            negcount *= 2.0
                        elif w in ishdict:
                            negcount *= 0.5
                        elif w in degree_word:
                            d += 1
                    if judgeodd(d) == 'odd':
                        negcount *= -1.0
                        negcount2 += negcount
                        negcount = 0
                        negcount3 = negcount + negcount2 + negcount3
                        negcount2 = 0
                    else:
                        negcount3 = negcount + negcount2 + negcount3
                        negcount = 0
                    a = i + 1
                elif word == '!' or word == '!':  ##判断句子是否有感叹号
                    for w2 in segtmp[::-1]:  # 扫描感叹号前的情感词,发现后权值+2,然后退出循环
                        if w2 in posdict or negdict:
                            poscount3 += 2
                            negcount3 += 2
                            break
                i += 1 # 扫描词位置前移
    
    
                # 以下是防止出现负数的情况
                pos_count = 0
                neg_count = 0
                if poscount3 < 0 and negcount3 > 0:
                    neg_count += negcount3 - poscount3
                    pos_count = 0
                elif negcount3 < 0 and poscount3 > 0:
                    pos_count = poscount3 - negcount3
                    neg_count = 0
                elif poscount3 < 0 and negcount3 < 0:
                    neg_count = -poscount3
                    pos_count = -negcount3
                else:
                    pos_count = poscount3
                    neg_count = negcount3
    
                count1.append([pos_count, neg_count])
            count2.append(count1)
            count1 = []
    
        return count2
    
    def sentiment_score(senti_score_list):
        score = []
        for review in senti_score_list:
            score_array = np.array(review)
            Pos = np.sum(score_array[:, 0])
            Neg = np.sum(score_array[:, 1])
            AvgPos = np.mean(score_array[:, 0])
            AvgPos = float('%.1f'%AvgPos)
            AvgNeg = np.mean(score_array[:, 1])
            AvgNeg = float('%.1f'%AvgNeg)
            StdPos = np.std(score_array[:, 0])
            StdPos = float('%.1f'%StdPos)
            StdNeg = np.std(score_array[:, 1])
            StdNeg = float('%.1f'%StdNeg)
            score.append([Pos, Neg, AvgPos, AvgNeg, StdPos, StdNeg])
        return score
    
    
    
    data1= '今天上海的天气真好!我的心情非常高兴!如果去旅游的话我会非常兴奋!和你一起去旅游我会更加幸福!'
    data2= '今天上海天气真差,非常讨厌下雨,把我冻坏了,心情太不高兴了,不高兴,我真的很生气!'
    data3= '美国华裔科学家,祖籍江苏扬州市高邮县,生于上海,斯坦福大学物理系,电子工程系和应用物理系终身教授!'
    print(sentiment_score(sentiment_score_list(data1)))
    print(sentiment_score(sentiment_score_list(data2)))
    print(sentiment_score(sentiment_score_list(data3)))

     

    展开全文
  • NLP:文本情感分析快速入门

    万次阅读 多人点赞 2018-08-03 17:59:47
    最近由中国计算机学会(CCF)主办,雷锋网,香港中文大学(深圳)承办的2018全球人工智能与机器人峰会...哈工大秦兵老师,秦老师多年从事自然语言处理的研究,获得国内第一个关于文本情感分析方面的自然科学基金重点...
  • NLP ---文本情感分析

    万次阅读 多人点赞 2019-01-03 10:34:46
    前面几节我们详细的研究了文本分析的相关算法,本节将简单介绍一下基于文本的情感分析方面的内容,本节更多是论述方面的内容,这个方向的算法基本都是我们前面...文本情感分析(Sentiment Analysis)是指利用自然语言...
  • 基于文本的情感分析,主要关注文章中的主观句,所以,subjective classifier即将主观句从文本中分离出来,就是整个情感分析的第一步。一般来说,这个方法是基于规则的分类方法——句子中包含n(一般为2)个表达情感...
  • NLP情感分析之情感分类

    万次阅读 2018-09-26 15:38:35
    情感分析(sentiment analysis)是近年来国内外研究的热点,其任务是帮助用户快速获取、整理和分析相关评价信息,对带有情感色彩的主观性文本进行分析、处理、归纳和推理。 情感分析包含较多的任务,如情感分类...
  • 首先先注册登录百度AI平台,自然...看到自然语言处理 点击进入 进入之后跳转到自然语言处理产品页 点击创建应用,应用创建后会有AppID、API Key、Secret Key这些参数。后续使用会利用到这些参数! 使用百...
  • TensorFlow实战BERT

    千人学习 2020-07-28 17:12:44
    主要讲解当下非常火,应用于NLP领域的语言模型技术BERT,课程由免费内容和收费内容两部分组成,免费内容主要是讲解TransFormer技术,...Encoder构建BERT语言模型,在此基础上实现情感分析,句子对分类等下游应用任务。
  • NLP之TEA:自然语言处理之文本情感分析的简介、算法、应用、实现流程、实现方法之详细攻略 目录 TEA的简介 TEA的应用 TEA的实现流程 TEA的实现方法 T1、词袋模型 TEA的案例应用 TEA的简介 文本...
  • AliNLP架构

    千次阅读 2017-12-10 21:16:00
    AliNLP 自然语言技术平台阿里AliNLP系统架构图 1. 词法分析(分词、词性、实体): - 算法:基于Bi-LSTM-CRF算法体系,以及丰富的多领域词表 2. 句法分析(依存句法分析、成分句法分析): - 算法:Shift-reduce...
  • [NLP]如何进行情感分析

    千次阅读 2017-10-12 04:03:38
    本文介绍的是如何进行情感识别。在自然语言中(尤其社交媒体和购物...但是在自然语言处理中是如何进行判断的呢?下面就对基本的情感分析方法进行介绍。1.准备1.1 种子词库在真正开始前,首先想想人看到一句话是如何思考
  • 情感分析:几乎包括你需要知道的所有(一)

    万次阅读 多人点赞 2019-08-06 09:20:41
    1.情感分析教程: 有一份几乎为所有人准备的情感分析教程,包括程序员,非程序员,营销人员,数据分析师,代理人,销售人员等等... Python是关于数据分析,机器学习和NLP(包括情感分析)教程的最常用编程语言,但...
  • 抱歉,不能做! 下图是corenlp的annotator中不同语言对其功能的支持情况 我也是看了很久官网的文档,最后才发现这个残酷的事实的。
  • mark一下,感谢作者分享! 基于情感词典的中文自然语言处理情感分析(上): https://blog.csdn.net/valada/article/details/81024992 基于情感词典的中文自然语言处理情感分析(下): ...
  • 情感分析作为自然语言处理的基础技术之一,常被用于电商评论、舆情监控、微博评论情感分析、话题监督等领域,因此深入掌握情感分析技术,是作为自然语言处理从业者必备技能,本课程以案例驱动出发,结合多个项目实战...
  • 从零开始自然语言处理

    千人学习 2020-07-22 15:48:45
    本课程隶属于自然语言处理(NLP)实战系列。自然语言处理(NLP)是数据科学里的一个分支,它的主要覆盖的内容是:以一种智能与高效的方式,对文本数据进行系统化分析、理解与信息提取的过程。通过使用NLP以及它的组件,...
  • NLP】Python3.7使用NLTK进行情感分析

    千次阅读 2019-10-28 23:07:17
    NLP】Python3.7使用NLTK进行情感分析 1.NLTK情感分析 2.使用上的一些坑 3.实战结果
  • 自然语言处理实战——情感分析

    千人学习 2019-09-16 10:32:55
1 2 3 4 5 ... 20
收藏数 18,513
精华内容 7,405
关键字:

nlp情感分析