一、使用NLTK Vader SentimentAnalyser分析

NLTK附带了一个内置的情感分析器模块——nltk.sentiment.vader,参考1,参考2。它可以分析一段文字或句子下情绪的正面、负面和中性极性分类。其中,compound表示复杂程度,neu表示中性,neg表示负面情绪,pos表示正面情绪。

import nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
# nltk.download('vader_lexicon')
view = ["Great place to be when you are in Bangalore","The place was being renovated when I visited so the seating was limited","Loved the ambience, loved the food","The place is not easy to locate"]
sid = SentimentIntensityAnalyzer()
for sen in view:print(sen)ss = sid.polarity_scores(sen)for k in ss:print('{0}:{1},'.format(k, ss[k]), end='')print()

对于日常的普通句子,nltk的情感强度分析器已经可以很准确地分类。

“情感分析模型的准确程度,往往取决于数据量。如果一种表达情感的语言方式被普遍应用,那么在极大的数据库中,一些基本的统计规律(即使是最基础的n-gram之类)也会有意想不到的精确度。比如,“呵呵”一词原本是中性,但是作为贬义被用得多了,统计模型也会自动发现它的负面含义。

讽刺和反语的难点在于,它们是更高层次的语意抽象。同时,识别出讽刺还需要现实世界的常识,毕竟讽刺的核心在于“预期”与“现实”的不符合”。

二、使用分类器进行分类分析

目前实现的例子是中文酒店评论的情感分析,参考1。

数据处理部分略~(工作量占绝大多数时间)分类器的部分使用SVM,准确率有0.86。

# -*- coding: utf-8 -*-
# 对数据进行降维:PCA,文本分类:SVMimport sys
import numpy as np
import pandas as pdfrom sklearn.decomposition import pca
from sklearn import svm
from sklearn import metrics# 数据准备
datapath = r'D:\file_download\BaiduNetdiskDownload\PyCharm_File\senti_analysis\data\ChnSentiCorp_htl_ba_2000\2000_data.csv'
df = pd.read_csv(datapath)
x = df.iloc[:, 2:]
y = df.iloc[:, 1]# PCA降维。计算全部贡献率
n_components = 400
pca_model = pca.PCA(n_components)
pca_model.fit(x)
# pca作图
# 取100维作为分类器输入
x_pca = pca.PCA(n_components=100).fit_transform(x)  # 先拟合数据再标准化
# SVM分类
clf = svm.SVC(C=2.0, probability=True)
clf.fit(x_pca, y)
print('Test Accuracy is: %.2f' % clf.score(x_pca, y))

附带sklearn.svm.SVC参数说明

sklearn.svm.SVC(C=1.0kernel='rbf'degree=3gamma='auto'coef0=0.0shrinking=Trueprobability=False,

tol=0.001cache_size=200class_weight=Noneverbose=Falsemax_iter=-1decision_function_shape=None,random_state=None)

参数:

l  C:C-SVC的惩罚参数C,默认值是1.0

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’

  0 – 线性:u'v

   1 – 多项式:(gamma*u'*v + coef0)^degree

  2 – RBF函数:exp(-gamma|u-v|^2)

  3 –sigmoid:tanh(gamma*u'*v + coef0)

degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。

gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。

probability :是否采用概率估计?.默认为False

shrinking :是否采用shrinking heuristic方法,默认为true

tol :停止训练的误差值大小,默认为1e-3

cache_size :核函数cache缓存大小,默认为200

class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)

verbose :允许冗余输出?

max_iter :最大迭代次数。-1为无限制。

decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3

random_state :数据洗牌时的种子值,int值

主要调节的参数有:C、kernel、degree、gamma、coef0

情感分析方法之nltk情感分析器和SVM分类器(二)相关推荐

  1. python中文情感分析分类和英文情感分析的库和方法汇总

    情感分析是自然语言处理中的一个常见任务.以下是用 Python 写的一个简单的情感分析分类函数的代码示例: import jieba import numpy as npdef sentiment_a ...

  2. 武汉大学计算机学院 情感分析,跨语言情感分析方法研究

    跨语言情感分析方法研究 [摘要]:近些年来,随着自然语言处理技术和机器学习技术的发展,单语文本的情感分析已得到深入的研究和发展,各种关于词级.超词级.句子级.篇章级的情感分析研究已逐渐趋于成熟.然而, ...

  3. 情感分析属于计算机科学,一种基于中文语义结构和细分词库结合的情感分析方法...

    一种基于中文语义结构和细分词库结合的情感分析方法 [技术领域] [0001] 本发明涉及一种基于中文语义结构和细分词库结合的情感分析方法,尤其涉及一 种应用于中文财经新闻评论句子级文本的情感分析方法, ...

  4. 文本情感分析方法研究小结

    文本情感分析总结 1. 文本情感分析简介 何谓文本情感分析,其实很简单,利用算法来分析提取文本中表达的情感.例如分析一个句子表达的好.中.坏等判断,高兴.悲伤.愤怒等情绪.如果能将这种文字转为情感的操 ...

  5. 结合语言知识和深度学习的中文文本情感分析方法

    结合语言知识和深度学习的中文文本情感分析方法 徐康庭, 宋威 北方工业大学信息学院 摘要:在目前的中文文本情感分析研究中,基于语义规则和情感词典的方法通常需要人工设置情感阈值:而基于深度学习的方法由于 ...

  6. 基于层次化LSTM的篇章级别情感分析方法

    基于层次化LSTM的篇章级别情感分析方法 目录 文章目录 基于层次化LSTM的篇章级别情感分析方法 目录 1 摘要 2 情感分类方法 3 文件级形式化表示 4 神经网络文本表示模型 5 Attenti ...

  7. 词向量与词向量拼接_中文字词向量和方面词向量联合嵌入情感分析方法与流程...

    本发明涉及一种中文字词向量和方面词向量联合嵌入CNN-LSTM情感分析方法. 背景技术: 近年来,越来越多的用户习惯在网络上发自己对某一事物的看法与评论.如何快速,准确地从互联网海量评论信息中分析所包 ...

  8. 【自然语言处理】【细粒度情感分析】细粒度情感分析:了解文本情感的What、How、Why

    细粒度情感分析:了解文本情感的What.How.Why Knowing What,How and Way:A Near Complete Solution for Aspect-based Senti ...

  9. java对微博评论进行分析_微博上分析情感的_中文情感分析java_中文微博情感分析...

    目前,社会正处于一个微博崛起的时代,一切有关于微博的问题都被社会广泛关注,并得到了工业界和学术界的高度重视.微博从出现以来,取得了良好的发展,并拥有大众的普遍关注和应用.微博的超大信息量和高速度的更新 ...

最新文章

  1. 洛谷 P1176 路径计数2
  2. 001-SDK框架之Unity游戏调用SDK
  3. 超生动图解LSTM和GPU:拯救循环神经网络的记忆障碍就靠它们了!
  4. 服务器安全设置篇(珍藏补充版中)
  5. 8分钟腹肌锻炼日志(第20天)过冬ing
  6. 转发 微博 Qzone 微信 iPhone 11曝光,卢伟冰怒批的5伏1安亮了,网友:价格才是重点
  7. php户型图识别,5分钟教你马上看懂户型图
  8. 我的世界java白天_我的世界怎么设置游戏内的时间为白天
  9. 【区块链 | Solidity】Solidity开发教程:用Web3.js构建第一个Dapp
  10. Verilog之从BMP图片中读取RGB数据
  11. 部分有关 广告联盟作弊 与反作弊资料收集
  12. The error may exist in com/kuang/dao/UserMapper.xml
  13. 微信小程序跳转报错errMsg: “navigateTo:fail webview count limit exceed“
  14. Windows内核--内核空间和用户空间(3.6)
  15. 用NavicatPremium导出数据
  16. 【自学笔记】天地图添加标注
  17. (跟我一起来学区块链(2.1))之区块链的组成原理(区块的组成和链式结构。)
  18. 信息学奥赛一本通题目代码(非题库)
  19. SGA大小对rman备份速度的影响基本是零
  20. 在中国年薪20万属于什么水平?程序员能达到这收入?

热门文章

  1. Java之设计模式:工厂模式
  2. MOS逻辑门(反相器/与门/或门/或非门/与非门)
  3. MCC(移动国家码)、MNC(移动网络码) 和IMSI
  4. Ceisum加载天地图(矢量、影像)
  5. 给中年程序员的温暖人心的巴比奇的故事
  6. “指针”和“指针变量”的区别
  7. matalb曲线图只有点没有线_身高170公分,体重170磅的女孩,身材健硕,没有一点多余赘肉...
  8. PHP中使用SHA256,如何在php5.3.0中使用sha256
  9. 前后端数据加解密的几种方式比较
  10. SpringBoot集成Kafka