基于贝叶斯算法的心理测试情感分析

2023-04-29 18:23宋海燕
信息系统工程 2023年6期
关键词:Python语言机器学习

宋海燕

摘要:随着社会的快速发展,大学生的各种心理问题日益突出。从研究大学生心理情感的角度出发,介绍了文本情感分析模型相关理论和实现过程,详细论述了应用Python语言进行心理情感数据标注、预处理、构建贝叶斯模型、测试模型、评估模型性能的过程,通过测试,模型预测正确率达到0.862。针对存在的问题,提出了下一步改进模型性能的实施方案,为广泛筛查大学生的心理问题提供参考。

关键词:文本情感分析;机器学习;贝叶斯算法;python语言;F1 Score

一、前言

随着人工智能技术的不断发展,心理测试在社会生活中的应用越来越广泛,对心理测试进行情感分析的需求也越来越迫切。但是由于心理测试本身的特殊性,如主观性、被测者的不同和被测者自身情绪波动等因素,使得基于机器学习的心理测试情感分析技术成为一种有效的方法[1]。在国家相关政策的指导下,各高校十分重视学生心理健康工作,但是在开展工作时存在“两难”问题。“一难”是难发现:有的学生心理问题较轻或者缺乏心理健康知识,自己没有意识到心理有问题;有的学生知道自己心理有问题,但是对周围人产生警惕,不愿意表达。对于这两类学生,教师很难发现他们的心理问题,也就不能在早期进行干预。“二难”是难治疗:高校心理教师少,学生多,师资力量薄弱。对于心理问题较严重的学生,教师很难多次长期开展心理疗愈[2]。针对上述问题,应用机器学习技术,本文提出基于贝叶斯算法的心理测试情感分析模型,便于开展学生早期心理问题筛查,帮助学校做好学生心理问题防御工作。

二、文本情感分析

文本情感分析,又称倾向性分析或意见挖掘,是对带有感情色彩的主观性文本进行分析、处理、归纳和推理的过程。常见的情感分析方法有两种:基于情感词典的分析方法和基于机器学习的分析方法[3]。基于情感词典的分析方法,是通过制订一系列的情感词典和规则,拆解文本、分析句法、计算情感值,使用情感值判断文本的情感倾向。此方法简单,应用广泛,但是遇到新词或者特殊词就无法识别,扩展性不好[4]。基于机器学习的分析方法,通常会把问题转换成分类问题看待,将目标情感分为“正、负”两类,或者根据情感程度的不同划分为1-5类,然后人工标注训练文本,进行有监督的机器学习。例如,朴素贝叶斯就是经典的机器学习算法之一,也是极少的基于概率论的分类算法。它的思想基础是:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别[5]。

本文采用基于机器学习的情感分析方法,开展大学生心理测试。开展测试时,教师给学生提供一个宽松的生活场景、颜色或图片,让学生写一段文字,在文字中会包含情感倾向的词语,如正向词语“高兴、开心”,反向词语“难过、痛苦”,中性词语“吃饭、睡觉”等等。教师收集到这些文字后,经过数据标注等预处理操作,再输入到模型中,开展心理问题筛查,初步诊断学生的心理健康状况。

三、数据预处理

收集到原始文本后,需要进行一系列数据预处理工作,主要包括数据去重、分词、词形归一化、删除停用词。经过这几个阶段,原始文本转换成词语列表,之后输入到模型中进行训练[6]。

(一)分词

分词是指将连续字符组成的语句,按照一定的规则划分成独立词语的过程。不同语言具有不同的语法结构,分词方法也存在差异[7]。比如,英文句子中单词和单词之间以空格分隔,在分词时可以使用空格作为分词的标记,而中文句子中词和词之间没有形式上的分界符,只能靠语义来理解。因此,中文分词要比英文分词困难很多。

根据中文的结构特点,分词算法分为三类:基于规则的分词方法、基于统计的分词方法、基于理解的分词方法。

目前,文本分词已经有很多成熟的算法和工具,本文使用的是Jieba库和NLTK库。Jieba库用于中文分词,NLTK库用于外文分词。Jieba支持三种分词模式:精确模式、全模式和搜索引擎模式。本文采用精确模式分词,根据日常的中文语义分词。

(二)词形归一化

词形归一化针对英文而言。在英文中,一个单词经常会有多种变换形式,比如cooking是cook的现在分词,cooked是cook的过去式,这些会影响语料库学习的准确度。因此,在进行机器学习前,需要把单词的不同形态转换成原型,称为词形归一化[8]。

词形归一化主要有两种方法:词干提取和词形还原。词干提取是指删除不影响词形的词缀,得到单词词干的过程,只能提取规范的词形变换,例如将cooking变为cook。词形还原不仅可以提取规范的词形变换,还能够捕捉不规范的词形变换,例如将better变为good。

NLTK中的stem模块提供了多种词干提取器,如波特词干提取器、兰卡斯特词干提取器。同时stem模块也提供了词形还原类WordNetLemmatizer,在使用此类前,要确保已安装WordNet语料库。

(三)删除停用词

停用词是指在自然语言中没有实际意义的字或词,如英文单词“a”“the”,中文单词“啊”“吧”等。停用词的存在增加了文本的特征难度,降低了文本分析的效率,停用词过多时还有可能导致数据分析结果的较大偏差,因此,通常在数据预处理过程中将它们删除[9]。

停用词是人工输入的一个文本文档,称为停用词表。中文停用词表主要有中文停用词库、哈工大停用词表、百度停用词表。NLTK中自带外文停用词表,使用前要先安装stopwords语料库。

四、朴素贝叶斯算法

朴素贝叶斯算法(Naive Bayesian algorithm)是使用概率统计的方法对样本数据集进行分类,是应用最广泛的分类算法之一。它假设特征条件之间相互独立,先通过给定的训练集,学习从输入到输出的联合概率分布,再基于学习到的模型,对给定的输入X求出后验概率最大输出Y。贝叶斯算法结合了先验概率和后验概率,避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯公式如下[10]:

五、基于贝叶斯算法的心理测试模型设计与实现

(一)数据来源

本文采集阳光心理论坛1294份情感文本进行实例分析建模,通过人工标注将文本分成“积极”和“消极”两类情感数据。情感文本表达的画面充满活力,如阳光明媚、美丽等,被认为是“积极”情感;画面中性,如客观描述一个事物,也被认为是“积极”情感;画面昏暗无光,如毛骨悚然、黑洞等,被认为是“消极”情感。进行数据标注时,“积极”情感用1表示,“消极”情感用-1表示。文本部分内容和标签如图1所示。

(二)数据预处理

1.删除重复值

在采集的情感文本中使用data = data.drop_duplicates()删除重复的数据,提高分析的准确性。执行完此语句后,文本数据量仍然是1294条,说明采集到的文本中没有重复值。

2.分词

导入中文分词工具Jieba库,调用jieba.lcut()方法,使用精确模式划分情感文本,部分分词结果如图2所示。

从图2中可以看出,“世外桃源”“红彤彤”“太阳”这些词能够表达情感和心情,将这些词保存下来进行下一步的机器学习;而“这”“是”“个”这些词没有实际的含义,对分析结果没有价值,属于停用词,需要删除。

3.删除停用词

本文从百度下载停用词表,此表是文本文件,可以根据需要自行添加停用词。先加载停用词表,再从分词表cut_word中,依次选取每个词,判断是否在停用词表中,如果不在,则放入一个新列表中,最终得到的新列表就是后续机器学习用到的数据表。新数据表如图3所示。

(三)心理测试模型

1.构建数据集

情感文本data中的每段描述text都需要进行上述的文本预处理,转换成新数据表,新数据表和对应的label标签合并成一个列表,合成包含1294个列表的数据集,如图4所示。

2.划分数据集

将上述构建好的数据集划分成两类:训练集和测试集。本文选取前1100条数据作为训练集,剩下的194条数据作为测试集。训练集用来训练模型;测试集使用训练好的模型进行预测分析,并为每条数据贴上标签“1”或“-1”,以判断是积极情感还是消极情感。将人工标注的标签与分析预测结果标签做比对,以此评价模型的准确度。

3.建立贝叶斯模型

导入贝叶斯分类器,建立贝叶斯模型,使用上述训练集训练模型。

from nltk.classify import NaiveBayesClassifier

demo_model = NaiveBayesClassifier.train(train_data[0:1099])

(四)模型测试

使用训练好的贝叶斯模型,用194条测试数据集测试模型,测试结果如图5所示。

从测试结果可以看出,文本1的描述是积极的,测试结果是1,也是积极的;文本2的描述是消极的,测试结果是-1,也是消极的;文本3是消极的,但是测试结果是1,是积极的。对于文本1和文本2,在训练文本中出现过其中的关键词,所以机器学到了,就能给出正确的判断;对于文本3,在训练文本中没出现过的关键词,机器没有学会,给出了错误的判断。因此,对于模型的训练需要大量数据,数据量越大,模型越准确,性能越高。

(五)性能评价

模型训练好后,使用正确率、精度、召回率、F1 Score几个指标衡量模型的性能,如表6所示。

从图6可以看出,模型的正确率为0.862,预测结果良好。

六、结语

本文使用Python语言构建心理测试贝叶斯模型,取得了良好的预测效果,但是也存在一些不足。下一步,计划从以下三个方面入手,提高模型的性能。一是增加测试样本数据。机器学习是一种数据驱动型技术,海量数据与机器学习算法结合才能带来预测效果的提升。数据量不足时,机器学习容易出现过拟合,泛化效果差。二是保证测试样本数据分布均衡。选取测试样本时,正向样本和负向样本数量尽量保证均衡,防止出现某类样本测试正确率高而另一类样本低的情况。三是大规模开展学生测试。网络获取的数据人员结构比较复杂,不一定完全符合大学生的心理状态,因此在大学生群体中开展测试,获得测试样本数据,测试结果更有针对性。

参考文献

[1]Zhai S, Zhang ZM. Semisupervised autoencoder for sentiment analysis[C]//Thirtieth AAAI Conference on Artificial Intelligence. AAAI Press, 2016.

[2]黑马程序员.python数据分析与应用[M].北京:中国铁道出版社有限公司,2021.

[3]胡梦雅,樊重俊,朱玥.基于机器学习的微博评论情感分析[J].信息与电脑,2020,32(12):71-73.

[4]宋冠谕,程登,张森,等.基于情感词典的文本情感分数计算模型[J].信息与电脑(理论版),2021,33(22):56-58.

[5]胡晶.基于朴素贝叶斯的新闻分类问题算法改进问题的研究[J].电脑与信息技术,2023,31(2):5-8.

[6]刘鑫,王皓晨,黄宇煦.基于朴素贝叶斯分类的电信诈骗信息的识别[J].计算机时代,2023,370(4):29-32+38.

[7]邓慈云,余国清.基于朴素贝叶斯的影评情感分析研究[J].智能计算机与应用,2023,13(2):210-212+217.

[8]魏超.机器学习算法在大学生综合素质测评预警中的对比研究[J].电脑编程技巧与维护,2022,450(12):127-129.

[9]陈可嘉,夏瑞东,林鸿熙,等.基于在线评论的顾客满意感地区差异分析[J].福州大学学报(哲学社会科学版),2022,36(6):69-75.

[10]王恒,唐孝国,郭俊亮.基于电商评价的文本情感分析研究与应用[J].黑龙江科学,2022,13(12):29-31.

基金项目:2019年度内蒙古自治区高等学校产学研科技创新平台项目“新工科ICT信息服务技术中心”(课题编号:NJCXY-19-03)

猜你喜欢
Python语言机器学习
Python语言程序设计教学体系建设
面向计算生态的Python语言入门课程教学方案
基于Python语言和支持向量机的字符验证码识别
论Python程序设计语言
基于Python语言的面向对象课程实践教学探讨
基于词典与机器学习的中文微博情感分析
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
基于Android的Python语言英汉维电子词典设计与实现
基于支持向量机的金融数据分析研究