分析和研究人的情感是一个复杂的过程,需要结合多个因素和方法。以下是一些常见的方法和技巧:
观察非语言表达:情感通常通过非语言表达来展示,包括面部表情、姿势、手势、眼神等。观察这些非语言信号可以提供关于一个人情感状态的线索。
倾听和观察语言表达:人们在语言中常常流露出情感,包括词语的选择、语调、语速等。倾听和观察一个人的语言表达可以帮助你了解他们的情感体验。
提问和探索:与他人进行深入的对话,提出开放性的问题,探索他们的情感体验和内心感受。通过主动与他人交流,你可以更好地了解他们的情感世界。
了解背景和经历:一个人的情感体验通常受到他们的背景和经历的影响。了解一个人的背景故事、家庭环境、教育背景等,可以提供更多的背景信息来理解他们的情感。
使用情感分析工具:一些科学研究和心理学领域的专业人士使用情感分析工具来研究和测量情感。这些工具可能包括问卷调查、心理测量仪器、脑部扫描等,通过客观的数据来分析和研究情感。
学习心理学和情感科学知识:深入学习心理学和情感科学领域的知识可以提供更多的理论框架和研究成果,帮助你理解情感的本质和影响因素。
需要注意的是,分析和研究他人的情感是一项复杂的任务,需要综合考虑多个因素,并且要尊重他人的隐私和个人边界。在进行情感分析时,保持尊重、开放和理解的态度非常重要。
由于语料缺乏,前期若使用到情感分析,建议暂时使用SnowNLP(此模块主要使用淘宝评论语料)做情感挖掘,但不仅仅为单纯调用,需要优化,下面是一些实践思考:
可在此基础上优化,比如文本需要特别处理,除了平常的去停用词外,还可以需要对输入的文本结合词性等进行处理。
下面是一些常识:
一)无情感的词语(如去停用词,去掉语气词,无词性标签的词语)
二)对于文本过长,则可以考虑提取关键词或抽取文本摘要后再提取关键词
对于后者实践结果差异明显:
以"发布了头条文章: 《5分钟11亿!京东双11场景化产品消费增长明显》 5分钟11亿!京东双11场景化产品消费增长明显 "为例子, 显然该文本为“积极”文本。
1)s = SnowNLP("发布了头条文章:《5分钟11亿!京东双11场景化产品消费增长明显》 5分钟11亿!京东双11场景化产品消费增长明显")
得分为05,明显不符合
2)s = SnowNLP(“ ”join(jiebaanalysetextrank("发布了头条文章:《5分钟11亿!京东双11场景化产品消费增长明显》 5分钟11亿!京东双11场景化产品消费增长明显")))
而对于文本特别长的,则可以先抽取摘要,再对摘要提取关键词。
这主要由于此SnowNLP主要用贝叶斯机器学习方法进行训练文本,机器学习在语料覆盖上不够,特征上工程处理不当会减分,也没考虑语义等。
为何要考虑语义层面:
以“ 苏宁易购,是谁给你们下架OV的勇气” 中的“ 下架”其实才是中心词(为表达愤怒的文本),但“ 勇气 ”为下架的宾语(其为积极的文本),此句应该结果小于05,但实际为088,去掉“苏宁易购”则为06>
情感分析(Sentiment analysis,SA),又称倾向性分析、意见抽取(Opinion extraction)、意见挖掘(Opinion mining)、情感挖掘(Sentiment mining)、主观分析(Subjectivity analysis)
情感分析是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程
情感分析的目的是为了找出说话者/作者在某些话题上或者针对一个文本两极观点的态度。这个态度或许是他或她的个人判断或是评估,也许是他当时的情感状态(就是说,作者在做出这个言论时的情绪状态),或是作者有意向的情感交流(就是作者想要读者所体验的情绪)
文本情感分析的应用非常广泛,如网络舆情风险分析,信息预测等。如通过Twitter用户情感预测股票走势,**票房、选举结果等,均是将公众情绪与社会事件对比,发现一致性,并用于预测
首先安装SnowNLP中文情感分析库:
SnowNLP(Simplified Chinese Text Processing),是一个python语言编写的类库,可以方便的处理中文文本内容,其开发受到了TextBlob的启发
In [1]:
数据载入
In [2]:
Out[2]:
数据预处理
In [3]:
In [4]:
Out[4]:
In [7]:
Out[7]:
将所有数据打分
In [9]:
Out[9]:
将分数合并会原表格
In [11]:
Out[11]:
计算指标
In [12]:
Out[12]:
In [13]:
Out[13]:
In [14]:
Out[14]:
基础结论:中位数比平均值高很多,说明有少量异常低的评分拉低了均值
In [16]:
Out[16]:
看分数分布情况,直方图最合适
In [17]:
Out[17]:
少量数据,柱状图也可以
In [18]:
Out[18]:
In [19]:
Out[19]:
In [20]:
以分数排序,查看打分准确率
In [22]:
Out[22]:
好评
In [23]:
Out[23]:
In [24]:
Out[24]:
差评
In [25]:
Out[25]:
In [26]:
Out[26]:
In [27]:
Out[27]:
In [28]:
Out[28]:
In [29]:
Out[29]:
In [30]:
Out[30]:
结论
准确率比瞎猜高,但达不到人工打分准确率
SnowNLP库的训练基准数据是基于电商销售产品训练的,对饭店留言数据的打分准确率一般
做情感分析最好用户自行实现(网站增加打分功能,用户自行打分)
1、数据预处理:将原始文本数据进行清洗、分词、去除停用词等预处理操作,得到文本的词袋表示。
2、特征提取:对于每个属性,从词袋中提取出与该属性相关的特征词,例如“价格”、“质量”等。
3、聚类或主题建模:使用聚类或主题建模方法对文本进行无监督学习,将文本按照不同的主题或簇进行分组,从而实现属性级分类,对于聚类方法,可以使用K-means、DBSCAN等算法。对于主题模型,可以使用LDA等算法。
4、情感分析:对于每个属性,计算该属性下文本的情感得分,可以使用情感词典或者情感分类器等方法进行情感分析。
java 做不了
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
一、一般处理流程
语料获取 -> 文本预处理 -> 特征工程 -> 特征选择
1、语料获取
即需要处理的数据及用于模型训练的语料。
数据源可能来自网上爬取、资料积累、语料转换、OCR转换等,格式可能比较混乱。需要将url、时间、符号等无意义内容去除,留下质量相对较高的非结构化数据。
2、文本预处理
将含杂质、无序、不标准的自然语言文本转化为规则、易处理、标准的结构化文本。
①处理标点符号
可通过正则判定、现有工具(zhon包)等方式筛选清理标点符号。
②分词
将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列的过程。
一般看来英文较容易可通过空格符号分词,中文相对复杂,参考结巴分词、盘古分词、Ansj等工具。
常见的分词算法有:基于字符串匹配的分词方法、基于理解的分词方法、基于统计的分词方法和基于规则的分词方法,每种方法下面对应许多具体的算法。
③词性标注
为自然语言文本中的每个词汇赋予一个词性的过程,如名词、动词、副词等。可以把每个单词(和它周围的一些额外的单词用于上下文)输入预先训练的词性分类模型。
常用隐马尔科夫模型、N 元模型、决策树
④stop word
英文中含大量 a、the、and,中文含大量 的、是、了、啊,这些语气词、助词没有明显的实际意义,反而容易造成识别偏差,可适当进行过滤。
⑤词形还原
偏向于英文中,单数/复数,主动/被动,现在进行时/过去时/将来时等,还原为原型。
⑥统计词频
因为一些频率过高/过低的词是无效的,对模型帮助很小,还会被当做噪声,做个词频统计用于停用词表。
⑦给单词赋予id
给每一个单词一个id,用于构建词典,并将原来的句子替换成id的表现形式
⑧依存句法分析
通过分析句子中词与词之间的依存关系,从而捕捉到词语的句法结构信息(如主谓、动宾、定中等结构关系),并使用树状结构来表示句子的句法结构信息(如主谓宾、定状补等)。
3、特征工程
做完语料预处理之后,接下来需要考虑如何把分词之后的字和词语表示成计算机能够计算的类型。
如果要计算我们至少需要把中文分词的字符串转换成数字,确切的说应该是数学中的向量。有两种常用的表示模型分别是词袋模型和词向量。
①词向量
词向量是将字、词语转换成向量矩阵的计算模型。目前为止最常用的词表示方法是 One-hot,这种方法把每个词表示为一个很长的向量。
②词袋模型
即不考虑词语原本在句子中的顺序,直接将每一个词语或者符号统一放置在一个集合(如 list),然后按照计数的方式对出现的次数进行统计。统计词频这只是最基本的方式,TF-IDF 是词袋模型的一个经典用法。
常用的表示模型有:词袋模型(Bag of Word, BOW),比如:TF-IDF 算法;词向量,比如 one-hot 算法、word2vec 算法等。
4、特征选择
在文本挖掘相关问题中,特征工程也是必不可少的。在一个实际问题中,构造好的特征向量,是要选择合适的、表达能力强的特征。
举个自然语言处理中的例子来说,我们想衡量like这个词的极性(正向情感还是负向情感)。我们可以预先挑选一些正向情感的词,比如good。然后我们算like跟good的PMI,用到点互信息PMI这个指标来衡量两个事物之间的相关性。
特征选择是一个很有挑战的过程,更多的依赖于经验和专业知识,并且有很多现成的算法来进行特征的选择。目前,常见的特征选择方法主要有 DF、 MI、 IG、 CHI、WLLR、WFO 六种。
5、模型训练
在特征向量选择好了以后,接下来要做的事情是根据应用需求来训练模型,我们使用不同的模型,传统的有监督和无监督等机器学习模型,如 KNN、SVM、Naive Bayes、决策树、GBDT、K-means 等模型;深度学习模型比如 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。这些模型在分类、聚类、神经序列、情感分析等应用中都会用到。
当选择好模型后,则进行模型训练,其中包括了模型微调等。在模型训练的过程中要注意由于在训练集上表现很好,但在测试集上表现很差的过拟合问题以及模型不能很好地拟合数据的欠拟合问题。同时,也要防止出现梯度消失和梯度爆炸问题。
6、模型评估
在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。模型的评价指标主要有:错误率、精准度、准确率、召回率、F1 值、ROC 曲线、AUC 曲线等。
7、投产上线
模型的投产上线方式主要有两种:一种是线下训练模型,然后将模型进行线上部署提供服务;另一种是在线训练模型,在线训练完成后将模型 pickle 持久化,提供对外服务。
三、NLP应用方向
1、命名实体识别
指识别自然语言文本中具有特定意义的实体,主要包括人名、地名、机构名、时间日期等。
传统机器学习算法主要有HMM和CRF,深度学习常用QRNN、LSTM,当前主流的是基于bert的NER。
2、情感分析
文本情感分析和观点挖掘(Sentiment Analysis),又称意见挖掘(Opinion Mining)是自然语言处理领域的一个重要研究方向。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。
情感分析技术可以分为两类,一类是基于机器学习的方法,通过大量有标注、无标注的主观语料,使用统计机器学习算法,通过提取特征,进行文本情感分析。另一类是基于情感词典的方法,根据情感词典所提供的词的情感极性(正向、负向),从而进行不同粒度的(词语、短语、属性、句子、篇章)下的文本情感分析。
3、文章标签
文章标签是利用机器学习算法,对文章进行文字和语义的分析后,提取出若干个重要的词或者短语(关键短语)。关键短语是NLP基础的算法模块,有了关键短语,能为后续的搜索、推荐等更高级的应用提供有力的抓手。
适用场景:1、个性化推荐:通过对文章的标签计算,结合用户画像,精准的对用户进行个性化推荐;2、话题聚合:根据文章计算的标签,聚合相同标签的文章,便于用户对同一话题的文章进行全方位的信息阅读;3、搜索:使用中心词可以对query进行相似度计算、聚类、改写等,可以用于搜索相关性计算。
4、案件串并
①信息抽取
运用实体抽取、关系抽取,从案情中抽取关键信息,如从警情中可以抽取报警人项目、报警人电话、案发地址等信息
②实体对齐
相同的实体在不同的案情中会有不同的表述,会给串并带来困难。可针对地址、人名、组织名进行对齐处理。
③文本聚类
对于关键片段类信息,无法像实体那样对齐,需要借助文本聚类技术进行关联。
④构建图谱
将信息抽取结果存入图谱。每个警情id对应一个节点,实体、属性、关键片段作为节点,对齐的实体、同一类的文本存为同一个节点。
除了来自于从警情中抽取的信息,还可以将其他警务系统中存在的结构化数据导入(如来自户籍信息的人物关系),从而丰富图谱。
⑤图谱检索
完成以上工作,即完成了案件串并的必要基础建设,接下来通过图谱的查询功能自动完成案件的串并。首先需要设定串并的条件,案件串并的条件在警务实战中已有很多的积累,如“具有相似的作案手段”,又如“相似作案手段,嫌疑人有共同联系人”,只需要将这些条件用图谱查询语言表达出来。
近年来,微博已经成为全球最受欢迎的网络应用之一,微博的快速发展使其显示出了巨大的社会价值和商业价值,人们逐渐习惯在以微博为代表的社交网络上获取、交流信息与表达情感。文本情感倾向性分析主要关注以文本方式存在的信息中的情感倾向,当庞大的数据量使得它无法手动对它们进行分析时,情感分析就开始发挥作用了。情感分析在英文世界一直是一个被广泛研究的领域,而中文情感分析的研究仍处于起步阶段,大部分工作已通过尝试被证明是适用于英文的。 首先,本文总结分析了文本倾向性分析的基本概念与算法模型,在此基础上,将心理学中的PAD情感模型引入,结合知网提供的语义相似度计算方法,提出了一种使用给定基础情感词汇与其对应PAD值计算词汇的PAD值的方法,并以此构建了一个基于PAD情感模型的情感词典。其次,本文将问题扩展到中文的文本倾向性分析研究中,提出了一种结合统计信息与语义信息的权重计算方法,通过该方法,在一定程度上消除特征歧义对于分类器的影响,使得特征的权重更贴合文本的语义,分类的效果更好。最后,本文综合中文微博文本分析研究现状,分析了现有的文本表示模型,结合机器学习中的支持向量机算法,提出了基于PAD情感语义特征的支持向量机分类方法。 实验结果表明,基于支持向量机的分类算法的效果好于k最近邻节点算法的效果。同时,本文提出的基于PAD情感语义特征的支持向量机分类方法都能够取得比较实用的效果,并对普通的支持向量机方法效果有着显著的改进。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)