推文情绪分析与心理疾病预测
[摘要]
随着生活节奏变快,人与人的线下交流变少,人们逐渐喜欢在线上发表个人情感,我们通过人们在网络发表的语言进行数据采集,随即进行数据预处理,对数据进行拆分,通过拆分的数据去训练我们建立好的模型,在用拆分好的另一半数据对训练好的模型进行测试,最终通过数据分析,分析其不同年龄阶层、不同性别、不同国籍以及不同职业等人的心理稳定状况,在对其会出现心理疾病的概率进行预测,其预测的结果可以给心理人工干预提供支持。
一、 项目概述
1.1 项目背景
世界卫生组织公布的数据:全球60亿人口,17%左右存在精神心理疾病,76-85%的患者急需专业的精神心理科医师给予干预。抑郁症3亿多,焦虑症2.6亿多,双相障碍6000万,精神分裂症2100万,痴呆4750万。只抑郁症和焦虑症每年造成的经济损失就高达10000亿美元(中国2001年全国GDP)。2020年,精神心理疾病将占据中国疾病总负担的1/4。
随着人类社会的进步发展,生活节奏快,人人趋利,犹如工作机器,休息时间短,相聚时间少,交流谈心更是奢望。人与人之间彼此冷漠不关心,各自自顾不暇,疲于奔波,每个人都是一座孤岛,独自反复体验自己的伤。最终,难以承受、难以忍受的个体如火山爆发,如脱缰野马,不知自我,不计后果。张国荣、乔任梁如此,拉斯维加斯的枪击事件嫌疑犯亦如此,很多类似的事件都在表明,心理问题将是人类最大的健康问题和社会问题。
谁的心灵都有“感冒期”,倾诉可以释放压力,也可以缓解情绪,早日发现“感冒期”,可以避免“感冒”发展加重,从而演变成严重精神心理疾病。我们的项目正是从其下手,预测其心理疾病的发生概率,早日发现“感冒期”使其发生概率降低。
1.2 项目简介
在这样一个大数据时代,如果我们能够早点发现身边朋友的情绪异样,就能尽早避免这样的事情发生,而我们的项目就是从人们在空间、朋友圈、个人博客以及微博中的言论,分析其情绪的稳定性,来预测抑郁症、社交恐惧症以及个人社会承压能力等负面情绪引发的消极事件的发生概率,以达到降低负面情绪引发消极事件发生概率的目的。我们的项目通过人们在网络发表的语言进行数据采集,随即进行数据预处理,对数据进行拆分,通过拆分的数据去训练我们建立好的模型,在用拆分好的另一半数据对训练好的模型进行测试,最终通过数据分析,分析其不同年龄阶层、不同性别、不同国籍以及不同职业等人的心理稳定状况,在对其会出现心理疾病的概率进行预测,其预测的结果可以给心理人工干预提供支持。
1.3 项目环境
项目运行环境为:
ide: pycharm2020.03operation system:win11python pakages: pandas~=1.3 numpy~=1.21 bert-tensorflow tensorflow > 1.12 tensorflow-hub
1.4 项目配置
data_path = r'data/data.csv' # 数据集路径train_data_path = r'data/train.csv' # 训练数据集路径test_data_path = r'data/test.csv' # 测试数据集路径train_data_percent = 0.9 # 数据集和测试集划分比例
二、数据处理及可视化
2.1 数据分析
在我们的项目中,我们的数据来源于全球知名的机器学习竞赛网站,总共包含27000余条数据,除数据编号字段外,每条数据分为textID,text,selected_text,sentiment,age,sex,country,profession八个字段,分别指推文id,内容,包含情感倾向的文本,标注的情感,用户年龄,用户性别,用户国别或用户职业。
在我们的项目中,我们将这个数据集按照9成训练数据1成测试数据的比例分为train.csv和test.csv两个数据集,其中train.csv数据来构造模型,并预测test.csv数据。
def partition():
data = pd.read_csv(data_path, encoding='utf-8')
_len = data.shape[0]
try:
train_data = data.head(int(_len * train_data_percent))
test_data = data.tail(int(_len * (1 - train_data_percent)))
train_data.to_csv(train_data_path)
test_data.to_csv(test_data_path)
except:
return False
return True
2.2 数据检查
2.2.1 查看数据字段信息
data = pd.read_csv(data_path)# 查看数据字段信息print(data.info())