微博语料情感分析

目录

独创性说明

第一章 绪论

1.1研究背景

1.2课题研究

第一章 情感分析准备

2.1情感分析知识基础

2.2 SnowNLP库

2.3 Word2vec方式

2.3 词向量工作原理

第三章没想好......

第四章 没想好......

第五章 没想好......

写在末尾:

Chat一出,码农已死,代码在此,拿走!

Word2vec方式:

直接调用SnowNLP

文献参考:


独创性说明

        本次实验本人是抱着较大的兴趣去完成的,其中加入了一些我对于当前关于NLP的相关技术的简单了解和初步的看法,某些地方语言描述并不是很严肃。为了节省时间,在论述实验中我引入了一些学术论文的研究成果和理论,所以有些地方并不是我的原创,我也并没有具体标注这些成果的出处,但是本着学习的态度,我坚持写了这样的一篇报告,所以这不能算是一篇正式的论文报告。对了,其中的一些用词可能不是很准确,但是我觉得有逼格,就使用了,所以各位不必深究,经不起推敲的东西看一看就可以了,所以其中有不足之处还请谅解。

第一章 绪论

1.1研究背景

        随着计算机技术的飞速发展,人们已经踏入了人工智能时代。尤其是今年极为火爆的由美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理(Natural Language Processing)工具ChatGPTChatGPT技术的出现,让人工智能技术在语言交互方面的应用变得更加普及和广泛。在twitter上,使用过ChatGPT的用户反馈表示,基于21年语料库训练出来的3.0版本的Chat的智力已经是相当于小狗的水平,而GPT-3只是ChatGPT(这里我们直接跳过1、2版本)的基础模型,后续版本的Chat都是在这个模型上进行改进的,目前最新版本的GPT-4更精确且更多样化同时GPT-4已经接入到各种平台的软件上,这就相当于给这颗本就很强大的大脑接上了手和脚,在给用户增添更多实用性和趣味性的同时可以让它在人类的各个领域充分发挥其该有的作用,带动着人类的科技文明向更高层次发展。唯一美中不足的一点就是国内用户想使用该技术有一定的困难,而且ChatGPT的定价比较高,想要使用最新版本的ChaGPT(据说5.0版本也要上线了),用户需要每月支付20美刀,按最新汇率计算6.8680截至2023-03-25 05:00,国内用户每个月至少要花费137元,对于我这种穷鬼来说,简直无法接受!所以还是用3.5版本的吧,要是能白嫖4.0的话...hhh

ChatGPT推出后不久,国内涌现出的一批公司,立马推出关于ChatGP的套壳产品,迅速占领国内市场,割取韭菜,谋取利益,主打的就是一个信息差,这也算是数字鸿沟的一个具体体现了。同时,百度在今年三月份推出了一款类似的产品——文心一言,比较有意思的是在发布会当天,李彦宏介绍玩该产品后,百度股票开始下跌,而且大多数网友都认为文心一言相较于ChatGPT简直不值一提。最近媒体也在炒作关于腾讯将要推出的盘古模型,对此,了解国情的大部分网友持着不是很看好的态度。我只申请了newbing的API接口,和openAI的ChatGPT4的接口,只有微软的通过了(其实它是3.0版本的GPT),openAI至今也没有回我消息。文心一言我只听过,昨儿申请的,其他的再没关注过。我觉得国内的人工智能技术还是有待进步的,国内人工智能技术任重而道远。

1.2课题研究

        网上的沟通平台各式各样,中国互联网发展至今,各大网络公司推出了QQ、微信、贴吧、微博、知乎等目不暇接的社交软件供人们使用。这些APP极大的改变了人与人之间的交流方式,让人们可以更加高效、准确的表达思想,而人们对待每个问题都有不同的看法,或多或少带有个人的感情倾向,作为一名NLP学者,我们自然是要对这些包含情感的观点进行分析,判断出这些人的喜怒哀乐,至于我将要使用的分析方法,后面会讲到。在各种社交软件中,微博的覆盖群体较广,每日用户活跃数量上亿。随着这几年的发展,微博用户数量的增加使微博的交互内容更加多元化,而丰富多元的内容生态又可使用户得到更好的使用体验。微博上每时每刻产生的海量情感文本,内容涉及政治、经济、娱乐、体育等多种领域,且一般饱含情感倾向和个人立场,带有非常丰富的研究价值。因此这次的课题我们以微博为例,利用自然语言处理技术(NLP),对获取的微博语料建立一个模型,然后利用训练好的模型对训练集进行分词处理和情感分析。


第一章 情感分析准备

2.1情感分析知识基础

        情感分析又被称作评论挖掘或者意见挖掘,在情感信息分类方面,一般可根据目标任务划分为粗粒度情感分类和细粒度情感分类,其中粗粒度情感分类是指判断出文本整体所表现出的情感,以此表明一个人对某件事或对某个物体的整体评价。粗粒度情感分类有两种方式,一种是情感倾向性分类,即分为褒、贬、中三类;第二种是情绪分类,表示将个人主观情绪分为喜、怒、悲、恐、惊等类别。迄今为止,文本情感分析的方法主要可划分为三大类,分别为:基于情感词典、基于机器学习、基于深度学习模型。害,这些理论就先别管了,都有ChatGPT了,我们只管提要求就是,再说,现在很多库都能直接调用,直接上项目(注:其实就是一个简单的语言处理作业,还不配被称为项目,但是就当它是了)!

2.2 SnowNLP库

        在这次的数据挖掘实验中,我用到了SnowNLP库,这个库是国人自己开发的python类库,专门针对中文文本进行挖掘,里面已经有了算法,需要自己调用函数,根据不同的文本构建语料库就可以,真的很方便。其中有很多算法,这几天我也在努力学习其中的算法原理。不过遇到不少困难,因为我在学习这个库的时候,我查了很多资料发现很少或者基本没有写这个库的具体详解,很多都是转载官网对这个库的简介,有些解释也是模糊不清。我搜到的有关SnowNLP的案例有些是英文写的(包括SonwNLP官网介绍也都是英文),所以英文理解也是学习过程中的一大困难,不过在这个过程中,我确实有所收获,在这我就简单记录一下一些模块的调用,具体的原理就...

        首先准备好语料,neg.csv和pos.csv,用他们训练自己的模型,具体步骤如下:调用SnowNLP库里的snetiment模块,然后保存自己模型,把它放到自己的文件夹中,后续会用到。这里的训练语料不是很多,每个文件也就一万多条微博语料数据,大概五分钟就训练好了,卷王们就可以趁这个时间背几个英文单词了

        然后加载自己的模型对测试语料进行情感分析,在这之前记得加载自己的模型,把默认的模型文件路劲改成自己的,以下代码的运行结果显示出这两个路劲是不一样的。

        加载完模型,直接处理数据,然后情感分析。一眼望去,代码都懂,那就不罗嗦了,简而言之就是,这里的valid_data数据里面每一行都有一条文博语句,所以在每一行语句后面必然有个回车(就是换行符),所以我们利用x.strip()方法得到需要分析的语句,写入列表中,然后直接调用SnowNLP.sentiments模块,对每一条语句计算它的分析结果并返回一个区间为[0,1]的sentiment值,然后写入列表。

        之后我就用简而言之的方法论述我剩下的实验过程:

        然后这么的......

        再然后就这么的......

        再然后实验结束

        ......

        文档备份:

        Ok,如果想更深入一点,就接着Copy,下面我简单Copy一下Word2vec模型的原理(注:词向量模型不止这一个)。

2.3 Word2vec方式

        采用Word2vec词向量的步骤可分为:中文分词、去停用词、训练词向量。由于实验语料源自中文微博网络平台,所以文本语言以中文为主,极少数语句中参杂个别英文词汇。由于英文词汇间有空格作为天然的分词界限,所以无需进行分词操作,而中文则需要采用分词算法将句子中的词汇、符号依次分隔开来。

        实验中应用基于Python的开源分词工具“jieba”对微博评论文本进行分词。该工具拥有三种分词模式,分别为全模式、精确模式和搜索引擎模式,可根据任务目标进行选择。计算机在读取语料文件后,调用jieba.cut()方法开始对每句文本分词处理。其中,需要设置jieba.cut()函数内的三个参数:第一个参数是在引号内输入需要分词的字符串;第二个参数cut_all需要填写True或False来决定采用全模式或精确模式;第三个是HMM参数用来控制是否借助HMM模型。实验中选择使用精确模式以保证分词的准确性。 分词处理的下一阶段是过滤停用词。由于网络评论的文本具有很强的原创性、随意性,所以语句中会夹杂着许多没有实际意义的词,例如“的”“是”“了”等。除此之外,文本中还存在许多对于情感分类无用的标点符号,例如“,”、“*”、“:”、“#”、“?”、“@”、“ [”、“]”等。过多的冗余信息将为情感分析任务带来困难,同时还会影响分析正确率,应在进行进一步分析处理前将其剔除。之后提取其中的关键词。

        在这说一下model.Word2Vec的各个参数:

        sentences: 我们要分析的语料,可以是一个列表,或者从文件中遍历读出。

        size: 词向量的维度,默认值是100。这个维度的取值一般与我们的语料的大小相关,如果是不大的语料,比如小于100M的文本语料,则使用默认值一般就可以了。如果是超大的语料,建议增大维度。

        window:即词向量上下文最大距离,这个参数在我们的算法原理篇中标记为cc,window越大,则和某一词较远的词也会产生上下文关系。默认值为5。在实际使用中,可以根据实际的需求来动态调整这个window的大小。如果是小语料则这个值可以设的更小。对于一般的语料这个值推荐在[5,10]之间。

        sg: 即我们的word2vec两个模型的选择了。如果是0,则是CBOW模型,是1则是Skip-Gram模型,默认是0即CBOW模型。

        hs: 即我们的word2vec两个解法的选择了,如果是0则是Negative Sampling,是1的话并且负采样个数negative大于0,则是Hierarchical Softmax。默认是0即NegativeSampling。

        negative:即使用Negative Sampling时负采样的个数,默认是5。推荐在[3,10]之间。这个参数在我们的算法原理篇中标记为neg。

        cbow_mean: 仅用于CBOW在做投影的时候,为0则为上下文的词向量之和,为1则为上下文的词向量的平均值。是按照词向量的平均值来描述的。

        min_count:需要计算词向量的最小词频。这个值可以去掉一些很生僻的低频词,默认是5。如果是小语料,可以调低这个值。

        iter: 随机梯度下降法中迭代的最大次数,默认是5。对于大语料,可以增大这个值。

        alpha: 在随机梯度下降法中迭代的初始步长。默认是0.025。

        min_alpha: 由于算法支持在迭代的过程中逐渐减小步长,min_alpha给出了最小迭代步长值。随机梯度下降中每轮的迭代步长可以由iter,alpha, min_alpha一起得出。

        对于大语料,需要对alpha, min_alpha,iter一起调参,来选择合适的三个值。

2.3 词向量工作原理

        基本想法是:通过训练将某种语言中的每一个词映射成一个固定长度的短向量(这里的“短”是相对于one-hot representation的“长”而言),将所有这些向量放在一起形成一个词向量空间,而每一向量则可视为该空间中的一个点,在这个空间上引入“距离”,则可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性。举个例子:假设每个词向量是分布在二维平面上的N 个不同的点,给定其中的某个点,想在平面上找到与这个点最相近的一个点,为解决这个问题,我们按以下步骤:首先,建立一个直角坐标系,基于该坐标系,其上的每个点就唯一地对应一个坐标;接着引入欧氏距离;最后分别计算这个词与其他 N-1 个词之间的距离,对应最小距离值的那个词便是我们要找的词。

        当然这里可以直接交给GPT(我这里用的是3.5版本的,4.0用不起,各位魔法师们请谅解),可以看到它给出的答案比我所理解的还要系统一些,也更专业一些,不可否认的是它的知识框架确实很好用,在很多地方都很便利。如果能嫖到4.0版本的API就更完美了

        代码展示如下:中间有个停用词处理的代码没写,要是写上,就截两次图,所以... 


第三章没想好......

第四章 没想好......

第五章 没想好......


写在末尾:

        如果对结果不满意,可以尝试更多模型或者优化数据和模型。做法思路如下:加载模型,读入微博语料(.txt),将Word2vec分别连接到LSTM、Bi-LSTM、Self-Attention、CNN网络模型上进行训练,计算各个模型的准确率、F1分数,写入excel表中...

        还有就是我的封面是GPT3.5生成的,看着挺抽象,但也够逼格的。有一说一ChatGPT真挺好用,各位魔法师们要是愿意,可以一起交流学习


Chat一出,码农已死,代码在此,拿走!

Word2vec方式:

from snownlp import sentiment
import gensim
from gensim.models import Word2Vec
import jieba
import ossentiment.train("train_neg_data.txt","train_pos_data.txt")
sentiment.save('./saved_model/weibo.marshal')# 读取积极语料
pos_file = "train_pos_data.txt"
with open(pos_file, 'r', encoding='utf-8') as f:pos_text = f.read()# 读取消极语料
neg_file = "train_neg_data.txt"
with open(neg_file, 'r', encoding='utf-8') as f:neg_text = f.read()# 对积极语料和消极语料进行分词
pos_words = jieba.lcut(pos_text)
neg_words = jieba.lcut(neg_text)#停用词处理# 建立Word2Vec模型
sentences = [pos_words, neg_words]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)# 保存模型
model_file = '../saved_model/sentiment_analysis.model'
model.save(model_file)# 加载模型
model = Word2Vec.load(model_file)# 查看词向量
# print(model.wv['好'])

直接调用SnowNLP

import pandas as pd
import snownlp
from snownlp import sentiment
from snownlp import SnowNLP#数据格式转换
neg = pd.read_excel("neg.xls")
pos = pd.read_excel("pos.xls")neg.to_csv("neg.csv")
pos.to_csv("pos.csv")#训练语料,构建模型
sentiment.train("neg.csv","pos.csv")
sentiment.save('../saved_model/weibo_pro.marshal_2.0')#这里差不多要五分钟# Use the saved model to analyze the sentiment of test data
# sentiment = sentiment.classifier.load('../saved_model/weibo_pro.marshal_2.0')
# print("默认的模型文件路径:", sentiment.data_path)
sentiment.data_path ="../saved_model/weibo_pro.marshal_2.0.3"#加载文件路径
# print("自己训练的模型路径:", sentiment.data_path)#对测试数据进行情感分析
data  = []
data_file = "valid_data.txt"
with open(data_file, "r", encoding="utf-8") as f:data_line = f.readlines()f.close()
for line in data_line:data_sentence = line.strip("\n")data.append(data_sentence)
data_text = pd.DataFrame(data, columns=["sentence"])data_text_file = "valid_data.xls"
test_data = pd.read_excel(data_text_file)#把分析结果写入excel文件
test_data["sentiment"] = test_data["sentence"].apply(lambda x: SnowNLP(x).sentiments)
test_data["sentiment"].to_excel("../results/marshal_2.0_test_result.xls")#写入文件
import snownlp
from snownlp import SnowNLP
import pandas as pd#加载训练好的模型
# model_path = "./saved_model/weibo.marshal.3"
# s = SnowNLP(model_path)
snownlp.sentiment.DATA_PATH ="./saved_model/weibo_pro.marshal_2.0.3"# df = pd.DataFrame(columns=['text', 'sentiment'])text = []
sent = []
with open("valid_data.txt", 'r', encoding='utf-8') as f:data = f.readlines()
for line in data:sentence = line.strip("\n")sentiment = SnowNLP(sentence).sentimentstext.append(sentence)sent.append(sentiment)# df = pd.concat({'text': line, 'sentiment': sentiment}, ignore_index=True)# df = pd.concat({'text': line, 'sentiment': sentiment}, ignore_index=True)
df_text = pd.DataFrame(text, columns=['text'])
df_sent = pd.DataFrame(sent, columns=['sentiment'])pf = pd.concat([df_text, df_sent], ignore_index=True)
pf.to_excel('./results/SnowNLP_result.xlsx', index=False)

文献参考:

[1] 郎聪.(2021).基于深度学习的微博文本情感分析(硕士学位论文,沈阳工业学).基于深度学习的微博文本情感分析 - 中国知网

[2]基于LSTM搭建一个文本情感分类的深度学习模型:准确率往往有95%以上_情感分类准确度_YiqiangXu的博客-CSDN博客

[3]https://www.cnblogs.com/always-fight/p/10310418.html

[4]https://louyu.cc/articles/machine-learning/2019/09/?p=1933/

[5]Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】 / 张生荣 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15645.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被ChatGPT骗了!再用ChatGPT可要小心了。

被ChatGPT戏耍的周末 1. 被ChatGPT戏耍全过程2. 拆穿ChatGPT的把戏3. AIGC与内容安全 1. 被ChatGPT戏耍全过程 电动垂直起降飞行器(eVTOL,Electric Vertical Takeoff and Landing)技术越来越成熟,为了解下相关产品我周末打开了Cha…

清华大学:ChatGPT发展研究报告

围绕ChatGPT的技术军备竞赛正热火朝天,发酵之势愈演愈烈。近日,清华大学沈阳教授团队发布了《AIGC发展研究报告1.0版》,总计192页,分为技术篇、产业篇、评测篇、职业篇、风险篇、哲理篇、未来篇、团队篇等多个篇章,对A…

给ChatGPT喂黑话学得贼快,网友:你把AI教恶心了我们还怎么玩?

梦晨 萧箫 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT彻底让网友们陷入疯狂,也带🔥了一众理论研究。 原因无他,这只AI说话太“对味”,不仅准确掌握沟通要领,就连人类的语言艺术都玩得明明白白。 这不,让它…

ChatGPT与低代码开发:危机四伏、技术暴走!

随着人工智能技术和低代码开发平台的不断发展,越来越多的企业开始采用AI技术来提高业务效率和创造更好的用户体验。AI技术与低代码开发的结合,为企业节省了大量时间和成本,同时也提高了业务创新和竞争力。然而,一些潜在的问题也开…

ChatGPT 帮我回答 SAP 技术交流群里关于 BAPI 使用的问题

ChatGPT 帮我回答 SAP 技术交流群里关于 BAPI 使用的问题。 一个朋友在我的 SAP 技术交流群里提问: 各位大神们,我在 BAPI_PO_CREATE1 创建委外加工采购订单时,把原来自动带出的BOM组件物料删除了,后续怎么用程序代码 新增一BOM子…

【花雕学AI】ChatGPT帮我快速优化标题:古老的非洲部落,有一种神奇的超音速烫脚舞

关于非洲烫脚舞,直接看看ChatGPT的许多创意,一般人确实想不到: 部落文化的声动震波 非洲之歌:部落的音速节奏 非洲土著的音速脚掌传奇 古老部落的震人心魂之舞 非洲红土之声:脚掌舞的激情 非洲神秘部落的超音速脚掌舞 仙踪般的部落音乐…

2023规划与考核 chatGPT帮我实现 程序员如何提高收入?

然后等了45分钟。 真不错!charGPT基本回答了我想问的。

ChatGPT 帮我跑了一个完整的 DevOps 流水线,离了个大谱...

大家好,我是米开朗基杨。 上篇文章给大家介绍了👉如何将 N 个 ChatGPT 账号接入微信,今天就来给大家演示一下如何利用 ChatGPT 帮我工作,让自己有更多的时间摸鱼! 上篇文章还没看的赶紧去看👇 我将 9 个 Ch…

吴 军:ChatGPT不算新技术革命,带不来什么新机会

MLNLP社区是国内外知名的机器学习与自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。 社区的愿景是促进国内外自然语言处理,机器学习学术界、产业界和广大爱好者之间的交流和进步,特别是初学者同学们的进步。 转载自 |…

ChatGPT数据泄露,技术细节披露公布

点击“开发者技术前线”,选择“星标” 让一部分开发者看到未 来自 | OSC开源社区(ID:oschina2013) 近期,ChatGPT 遭遇了一次用户数据泄漏事件,许多 ChatGPT 的用户都在自己的历史对话中看到了其他人的对话记录。不光是…

ChatGPT会改变物流领域吗?可以为企业赋能吗?

近期大火的ChatGPT,其实是一个对话的AI模型,就像一个聊天机器人。目前一些大公司客户服务网站上的自动聊天机器人虽然智能水平不如ChatGPT,但它们属于同一类技术。 从实战来看,ChatGPT堪称“小灵通”,从答疑解惑、编写…

使用 Azure OpenAI 打造自己的 ChatGPT

一.前言# 当今的人工智能技术正在不断发展,越来越多的企业和个人开始探索人工智能在各个领域中的应用。其中,在自然语言处理领域,OpenAI 的 GPT 系列模型成为了研究热点。OpenAI 公司的 ChatGPT 带起了一波 AI 应用的浪潮,一些科…

腾讯被曝投大模型初创公司MiniMax:后者估值12亿美元

雷递网 乐天 6月5日 AI的火热,正刺激一波投资浪潮。 日前知情人士称,中国初创公司MiniMax将完成超过2.5亿美元的融资,估值约为12亿美元,腾讯将参与投资。此前,米哈游已先后对MiniMax有过多轮投资。 MiniMax的应用程序G…

EasyExcel 带格式多线程导出百万数据(实测好用)

大家好,我是宝哥! 前言 以下为结合实际情况作的方案设计,导出阈值以及单sheet页条数都可以根据实际情况调整 大佬可直接跳过新手教程,直接查看文末代码 1. 背景说明 针对明细报表,用户会选择针对当前明细数据进行导出&…

面对当下各种不确定性,如何面对,每天很忙碌,不慌

(点击即可收听) 疫情时期,都难,疫情之后,发现还更难 随着互联网的热度的下降,各大小公司纷纷勒紧裤腰带,受打击最大的无疑是底层打工人 每天一打开手机,会发现,一些大厂裁员信息霸榜头条,年龄也是一道坎 刚刚看到一个大v发的: 一个原先是跨国…

剑桥华人团队搞出多模态医学大模型!单个消费级显卡就能部署,借鉴斯坦福「羊驼」而来...

衡宇 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT、AutoGPT能干那么些事,好想知道大模型啥时候才能看病,救我本人狗命? 带视觉的多模态医学基础大模型,它来啦~ 名为Visual Med-Alpaca,官宣即开源。 这个专为…

技术动态 | 也看大模型在事理图谱中的有趣表现:从概率链式因果搜索到因果抽取再到指令驱动的图谱构建评测...

转载公众号 | 老刘说NLP 事理图谱是过去一年来比较火的一个方向,其靠着主打推理预测这一特点,通过构建以事件为核心,事件之间因果等关系,形成传导推理链,一度被认为大有可为。 但目前大模型席卷之下,事理图…

PPO算法基本原理及流程图(KL penalty和Clip两种方法)

PPO算法基本原理 PPO(Proximal Policy Optimization)近端策略优化算法,是一种基于策略(policy-based)的强化学习算法,是一种off-policy算法。 详细的数学推导过程、为什么是off-policy算法、advantage函数…

达摩院用128张GPU烧出“中文版GPT-3”,我试了下,这文风不是开往幼儿园的车…...

杨净 子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI 首先,请先看一段“正经”的文字: 他笑意中的那份温柔,只想给她好好珍藏,即便这一切不会发生,至少在他的世界里,她是无忧无虑的快乐的。就连他对她的关心…