社交媒体影响力分析

社交媒体影响力分析

目录

问题描述:

基本功能要求:

扩展功能:

技术路线提示:

具体设计如下:

一、需求分析      

        1、背景和意义

        2、解决方案设计:

        ① 需处理的数据:

        ② 数据集分析:

        ③ 制定优化策略:

        3、开发环境需求

        ① 硬件环境:

        ② 软件环境:

二、模型设计与描述   

        1. 数据的获取

        2.数据清洗

        3.文本预处理

        4.关键词统计

        5.情感分析

        6.特征选择和模型训练

        7.信息抽取

三、模型实现   

        1.数据获取:

        2.数据预处理: 

        3.文本分词:

        4.关键词统计和可视化:

        5.情感分析

6.特征工程部分

7.数据集划分部分

8.模型构建和训练部分

9.保存模型:

10.显示互动前三的作品和各5条正反面评论

四、模型训练与测试

1. SnowNLP模型训练与测试

2. 随机森林回归器训练与测试

五、模型运用

1. SnowNLP模型

2. 随机森林回归器


问题描述:

        社交媒体已成为人们获取信息和交流的重要平台,企业和个人都希望了解自己在社交媒体上的影响力以及如何提升它。因此,开发一个基于人工智能的社交媒体影响力分析系统,对社交媒体数据进行深度挖掘和分析,具有实际应用价值。

基本功能要求:

        1. 数据收集:能够抓取社交媒体平台(如微博、抖音、Instagram等)上的相关数据,包括用户信息、帖子内容、点赞、评论、分享等。

        2. 数据预处理:对收集到的数据进行清洗、去重、分词、情感分析等预处理操作,为后续的分析做好准备。

        3. 影响力评估:利用文本分析、机器学习等技术,评估用户或品牌在社交媒体上的影响力,包括粉丝活跃度、话题传播范围、互动率等指标。

        4. 内容分析:分析用户发布的帖子内容,了解用户的兴趣偏好、情感倾向等,为内容创作和营销策略提供建议。

扩展功能:

        1. 竞争对手分析:对竞争对手在社交媒体上的表现进行分析,比较各自的优势和劣势,为企业制定竞争策略提供参考。

        2. 可视化报告:将分析结果以图表、报告等形式展示,便于用户理解和使用。

技术路线提示:

        1. 可以利用爬虫技术抓取社交媒体数据;

        2. 使用自然语言处理(NLP)技术进行文本分析和情感分析;

        3. 结合机器学习算法对用户影响力进行建模和评估;

        4. 利用数据可视化技术将分析结果以直观的形式呈现给用户。

具体设计如下:

一、需求分析      

        1、背景和意义

        社交媒体在现代社会中发挥着越来越重要的作用,它不仅是一个传播信息的平台,还是一种新型的社交关系和人际交往的方式。随着社交媒体用户数量的快速增长,企业和组织也开始利用社交媒体平台来进行广告推广、品牌建设和影响力分析。

        社交媒体分析是一种利用数据挖掘和人工智能技术对社交媒体数据进行挖掘和分析的方法,主要包括用户行为数据、内容数据和社交关系数据等。通过对这些数据进行处理和分析,企业和组织可以获取有关用户需求、市场趋势和品牌影响力等信息,从而更好地进行市场营销和品牌策略制定。

        2、解决方案设计:

        ① 需处理的数据:

                a.作者基本信息包括:关注作者人数、作者信息。

                b.作品数据:作品名称、作品评分、参与评分人数、参与短评人数。

                c.读者行为数据:读者对于作品的短评内容。

        ② 数据集分析:

        a.数据清洗与预处理:去除重复、无效或错误数据;处理缺失值,通过删除来解决,去除常见词、标点符号等内容,运用停用词列表来解决,应用清洗函数进行函数清理,以便于后续分析

        b,描述性统计分析:统计作品信息,如书名、评分、评价人数、短评数量等;分析读者评论情况,如读者姓名、推荐程度、评论时间、有用数以及内容等。

        c.文本挖掘与情感分析:对用户发布的内容进行关键词提取和建模;进行情感分析,了解用户对内容的态度和情感倾向。

        d.预测与建模:利用机器学习算法,构建影响力评估模型,综合考虑多个指标来量化社交媒体影响力。

        ③ 制定优化策略:

        根据分析结果,制定提升社交媒体影响力的策略。这些策略包括优化内容质量、增加互动频率、扩大传播范围、合作推广等。确保策略与目标紧密相关,并考虑到目标受众的喜好和需求

        3、开发环境需求

        ① 硬件环境:

                CPU:11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz

                系统类型:64 位操作系统

        ② 软件环境:

                在 Windown10 系统下,主要 python 语言,在 pycharm 编译器开发,

                用到的库有 Pandas, requests,BeautifulSoup,os等。

二、模型设计与描述   

        1. 数据的获取

        首先,构建一个对豆瓣的请求,包含了访问的URL地址,请求头以及参数,接着通过获取豆瓣的链接分析得到关于书籍的各类信息,如书名,评分,评价人数、评数量、书籍对应的评论用户、评论内容等,最后将抓取和处理的数据存储到一个字典里面,并保存到excel文件中。

        2.数据清洗

        首先读取了一个 Excel 文件中的数据。数据中包含了书的评论内容和评分。然后删除那些评论内容或评分为空,以及重复的评论内容。

        3.文本预处理

        对评论内容进行分词,并使用了自定义的停用词列表来去除一些对于分析没有太大意义的常见词汇。此外,还需要定义一个函数用于去除标点符号和表情符号。

        4.关键词统计

        收集了所有的词汇,然后统计每个词汇出现的频率,取出频率最高的前三个词汇,绘制条形图。

        5.情感分析

        对每条评论进行情感分析,计算出一个情感得分并添加到数据框中。然后,添加一个新的列将情感得分大于0.5的判定为正面情感,小于等于0.5的判定为负面情感。计算平均情感得分、评论数量、正面评论比例等指标,并进行可视化。

        6.特征选择和模型训练

        确定特征列和标签列,进行测试集和训练集的划分,以及特征缩放。然后,构建一个包含预处理和随机森林回归模型的管道。以均方根误差为目标函数,通过 GridSearchCV 对模型参数进行网格搜索,并对测试集进行预测,最后将最优模型保存为一个 .joblib 文件。

        7.信息抽取

        计算互动总数(评价人数+短评数量),并找出互动数最高的三部作品。找出情感得分最高和最低的评论。这一步是为发现哪些帖子最受用户关注,以及哪些评论的情绪最为极端。

三、模型实现   

        1.数据获取:

        首先,程序创建了一个requests.get()的请求,通过构造params和headers,字符串格式化的方式生成URL来向豆瓣网站获取信息。利用BeautifulSoup库的find_all, find方法,解析了响应内容,找到了目标网页上所有的文章链接,进而进入每一个链接页面获取文章相关信息。在文章页面通过访问HTML元素,抓取了如书名,评价人数,评分,短评数量等具体信息。并通过嵌套循环进一步搜索获取每一条用户评论,包括用户名,推荐程度,评论时间,有用数和评论内容。把从每一个评论项目获取到的信息,都存入一个字典里,这个字典再被添加到一个列表all_data中。以上是在每一次外层循环中都会进行的,也就是对每一个独立的文章链接都会生成一个属于它的评论数据的字典列表。最后使用pandas库将整个列表转换成dataframe格式,而后写入到一个Excel文件中。文件中的每一行,对应之前的一个字典,也就是从网页上抓取的一条评论信息,列标题分别为字典的键。

        2.数据预处理: 

             - 使用 pandas 的 `read_excel` 函数来读取数据,文件为 'douban_books.xlsx'。

        - 对数据进行清理,使用 `dropna` 函数移除评论内容列中的缺失值,并利用 `drop_duplicates` 函数删除重复的评论内容。

        3.文本分词:

            - 利用 `jieba.cut` 函数对评论内容进行分词,并创建了一个新的列称为'分词评论'。对于停用词,产生了一个名为 stopwords 的列表进行处理。

            - 利用正则表达式 `re.sub` 函数对评论内容进行处理,删除了特殊符号和表情。然后将分词评论列应用 `clean_text` 函数进行进一步处理。

        4.关键词统计和可视化

           - 使用 `Counter` 函数统计词频,找出出现最常见的三个词。

           - 利用 `matplotlib` 和 `seaborn` 库来可视化这些最常用词及其出现的频率,生成条形图。

        

图1 高频词图

        5.情感分析

        -用SnowNLP库对评论内容进行情感分析,并将情感得分添加到新列'情感得分'中。

        -添加一个新的列'情感倾向',如果'情感得分'大于0.5,标记为'正面',否则标记为'负面'。

        -通过将'情感得分'绘制成的直方图,查看情感得分的分布情况。

图2 情感分布图

        -根据正负面情感比例,绘制了一个饼图。

图3 情感占比图

6.特征工程部分

        选择特征列:选择 评分、评价人数 和 短评数量 作为特征列,并创建特征数据框 X。

        添加新特征列:为 X 数据框添加一列 粉丝人数,所有行的值均为 17632。

        定义标签列:将 目标值 列作为标签列 y。

        结果 

        -特征数据框 X 包含 评分、评价人数、短评数量 和 粉丝人数 四列。

        -标签列 y 包含 目标值。

7.数据集划分部分

划分训练集和测试集:使用 train_test_split 函数将数据集划分为训练集和测试集,测试集占比为20%。

结果数据集被划分为训练集和测试集,测试集占比为20%。

8.模型构建和训练部分

构建管道:使用 Pipeline 构建包含数据标准化和随机森林回归器的管道。

定义参数网格:定义网格搜索的参数范围,包括 n_estimators、max_depth 和 min_samples_split。

网格搜索调优:使用 GridSearchCV 进行网格搜索,寻找最佳参数组合。

输出最优参数:输出网格搜索找到的最佳参数组合。

使用最优模型进行预测:使用最优参数的模型对测试集进行预测。

计算并输出均方根误差:计算并输出测试集的均方根误差(RMSE)。

图4 最优参数与均方根误差

9.保存模型:

        将最优模型保存为 user_influence_model.joblib 文件。

10.显示互动前三的作品和各5条正反面评论

图5 作品前三甲

图6 正反评论部分内容

四、模型训练与测试

1. SnowNLP模型训练与测试

        SnowNLP 是一个用于中文自然语言处理的开源库,特别擅长处理中文文本的情感分析、分词、文本分类、关键词提取等任务。它是由中国开发者李卓桓(Zhuohuan Li)开发的,旨在为中文文本处理提供一个简单易用的工具。

        由于 SnowNLP 是预训练模型,因此在大多数情况下,你不需要自己训练模型,只需要使用它提供的功能即可。

        因此本次作业并未对情感分析做出建模。

2. 随机森林回归器训练与测试

          .首先需要准备数据:在本次作业中,我选取了豆瓣作者马伯庸的作品数据进行训练

          .接着对数据进行清理,得到('评分', '评价人数', '短评数量', '粉丝数量')作为特征数据,( '影响力')为目标函数,其中作者马伯庸的影响力数据来自:

《https://www.douban.com/note/845135963/?_i=7041444SAZGu4U》

        .然后用train_test_split 函数将数据集划分为训练集和测试集。以下是该函数的参数及其具体意义:

        X:这是特征数据集,包含模型训练所需的输入特征。在我的代码中,X 包含了评分、评价人数、短评数量 和 粉丝人数 四列。

        y:这是标签数据集,包含模型训练所需的输出标签。在我的代码中,y 是 目标值列。

        test_size:这个参数决定了测试集所占的比例。在你的代码中,test_size=0.2 表示将 20% 的数据分配给测试集,剩余的 80% 数据用于训练集。

        random_state:这个参数用于控制随机数生成器的种子,以确保每次运行代码时数据集划分的结果是相同的。在我的代码中,random_state=42 确保了数据集划分的可重复性。

图7 分割数据集

        .紧接着用Pipelin这个工具,将多个处理步骤组合成一个整体。这样可以确保数据预处理和模型训练的步骤按顺序执行,简化代码并提高可读性。其中:

        名称:scaler 是这个步骤的名称,可以是任何字符串,但要确保唯一性。

        对象:StandardScaler() 是 scikit-learn 提供的标准化工具,用于将数据的均值调整为0,标准差调整为1。

        意义:数据标准化是数据预处理的重要步骤,特别是在使用梯度下降等优化算法时,可以加速收敛并提高模型性能。

        名称:regressor 是这个步骤的名称,同样可以是任何字符串,但要确保唯一性。

        对象:RandomForestRegressor(random_state=42) 是 scikit-learn 提供的随机森林回归器,用于回归任务。

        意义:随机森林是一种集成学习方法,通过构建多个决策树并结合它们的预测结果来提高模型的准确性和鲁棒性。

        参数:random_state=42 用于控制随机数生成器的种子,以确保每次运行代码时模型的结果是相同的。

图8 构建管道

        .然后用网格搜索尝试不同的参数组合,以找到模型的最佳参数设置。

        意义:n_estimators 是 RandomForestRegressor 的参数,表示森林中树的数量。

        作用:更多的树通常可以提高模型的准确性,但也会增加计算成本。这里设置为 [100, 200],表示网格搜索会尝试使用 100 棵树和 200 棵树进行训练。

        意义:max_depth 是 RandomForestRegressor 的参数,表示树的最大深度。

        作用:控制树的最大深度可以防止过拟合。None 表示不限制树的深度,树会一直生长直到所有叶子节点都是纯的或包含少于 min_samples_split 个样本。这里设置为 [None, 10, 20],表示网格搜索会尝试不限制深度、最大深度为 10 和最大深度为 20 的情况。

        意义:min_samples_split 是 RandomForestRegressor 的参数,表示内部节点再划分所需的最小样本数。

        作用:控制节点分裂的最小样本数可以防止过拟合。较大的值会使模型更简单,防止过拟合。这里设置为 [2, 5],表示网格搜索会尝试最小样本数为 2 和 5 的情况。

图9 优化参数

        .接着找到模型的最佳参数组合。

        意义:pipeline 是一个包含数据预处理和模型训练步骤的管道。在我的代码中,pipeline 包含了数据标准化和随机森林回归器。

        作用:GridSearchCV 会使用这个管道进行网格搜索,尝试不同的参数组合。

        意义:param_grid 是一个字典,定义了网格搜索的参数范围。在我的代码中,param_grid 包含了 n_estimators、max_depth 和 min_samples_split 的不同值。

        作用:GridSearchCV 会尝试 param_grid 中定义的所有参数组合,以找到最佳参数设置。

        意义:cv 是交叉验证的折数。在你的代码中,cv=5 表示使用5折交叉验证。

        作用:数据集被分成5个子集,每次使用其中4个子集进行训练,1个子集进行验证。这个过程重复5次,每个子集都被用作一次验证集。最终的评分是5次验证结果的平均值。

        意义:scoring 是评估模型性能的指标。在我的代码中,scoring='neg_mean_squared_error' 表示使用负均方误差(Negative Mean Squared Error)作为评估指标。

        作用:均方误差(MSE)是回归任务中常用的评估指标,负均方误差是为了使得评分越高越好(因为默认情况下,GridSearchCV 会选择评分最高的参数组合)。

        意义:fit 方法用于在训练集上训练模型。

        作用:GridSearchCV 会使用 X_train 和 y_train 进行训练,并尝试 param_grid 中定义的所有参数组合,通过5折交叉验证找到最佳参数组合。

       .经过上面6个步骤,模型已经训练完成了,并且找到了最佳的参数组合,接着使用这个最佳模型对测试集进行预测。

        意义:best_estimator_ 是 GridSearchCV 对象的一个属性,表示通过网格搜索找到的最佳模型。

        作用:这个属性会返回使用最佳参数组合训练的模型。在我的代码中,best_model 就是这个最佳模型。

        意义:predict 方法用于对新数据进行预测。

        作用:使用 best_model 对测试集 X_test 进行预测,得到预测值 y_pred。

图10 模型预测

        ⑧.最后计算并输出均方根误差,用于评估模型在测试集上的性能。

        意义:mean_squared_error 是 sklearn.metrics 模块中的一个函数,用于计算均方误差(MSE)。

        作用:MSE 是回归任务中常用的评估指标,表示预测值与真实值之间的平均平方误差。较小的MSE表示模型的预测精度较高。

        意义:np.sqrt 是 numpy 模块中的一个函数,用于计算平方根。

        作用:RMSE 是 MSE 的平方根,表示预测值与真实值之间的平均误差。RMSE 与原始数据的量纲一致,便于解释和比较。

图11计算均方根

        输出结果为:

图12 均方根结果

        由结果得出模型在测试集上的预测非常准确

五、模型运用

1. SnowNLP模型

        SnowNLP 是一个用于中文自然语言处理的开源库,提供了多种功能,包括分词、词性标注、情感分析、关键词提取、文本分类和拼音转换等

2. 随机森林回归器

        该模型可以应用于以下场景:

        作者影响力预测:根据书籍的评分、评价人数、短评数量和粉丝人数,预测其他作者的影响力。

        数据分析:分析书籍的各项指标对影响力的影响,帮助出版社或作者了解哪些因素对书籍影响力有较大贡献。

        推荐系统:结合其他模型,构建基于书籍影响力的推荐系统,为用户推荐高影响力的书籍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍 朽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值