新版本在这里:https://rstata.duanshu.com/#/brief/course/ea25c918b4504a738a9f74f9203af72f
最近有培训班的小伙伴提出了这样一个问题:
老师,我需要对上市公司年报中包含“研发”的句子进行情感分析,从而找出积极和消极词频的数量,该怎么处理呢?
考虑到上市公司年报爬取和情感分析是个很困难的事情,于是我就直接帮大家计算好了 2001~2022 年上市公司年报中包含“研发”的句子情感分析结果。
其中,我用了三种情感词典进行分析,分别是:知网 Hownet 情感词典、清华大学李军中文褒贬义词典、台湾大学 NTUSD 简体中文情感词典。最终得到了如下数据集:
- 根据知网 Hownet 情感词典情感分析结果.xlsx
- 根据清华大学李军中文褒贬义词典情感分析结果.xlsx
- 根据台湾大学 NTUSD 简体中文情感词典情感分析结果.xlsx
例如,根据知网 Hownet 情感词典情感分析结果概览如下:

处理方法
具体处理方法可以学习平台上的课程:

我还绘制了一幅图来展示 2001~2022 年上市公司年报中包含“研发”的句子情感分析:

绘图代码如下:
library(tidyverse) readxl::read_xlsx("根据清华大学李军中文褒贬义词典情感分析结果.xlsx") -> df1 readxl::read_xlsx("根据台湾大学NTUSD简体中文情感词典情感分析结果.xlsx") -> df2 readxl::read_xlsx("根据知网Hownet情感词典情感分析结果.xlsx") -> df3
bind_rows( df1 %>% mutate(class = "清华大学李军中文褒贬义词典"), df2 %>% mutate(class = "台湾大学NTUSD简体中文情感词典情感"), df3 %>% mutate(class = "知网Hownet情感词典情感") ) -> df
df %>% group_by(year, class) %>% summarise(中性 = mean(中性), 消极 = mean(消极), 积极 = mean(积极)) %>% select(-中性) %>% ungroup() %>% gather(消极, 积极, key = "key", value = "value") %>% type_convert() %>% ggplot(aes(x = year, y = value, color = key, linetype = class, shape = class), linewidth = 2, size = 4) + geom_point() + geom_line() + scale_color_manual(values = c("#c40003", "#00c19b")) + labs(x = "年份", y = "积极/消极词频平均数量", color = "情感分类", linetype = "使用的情感词典", shape = "使用的情感词典", title = "2001~2022 年上市公司年报中包含“研发”的句子情感分析", caption = "数据来源:巨潮资讯网上市公司历年年报(2000 和 2023 的年报文件较少)", subtitle = "数据计算 & 绘图:微信公众号 RStata") + theme(legend.position = c(0.3, 0.7), plot.background = element_rect(fill = "white")) + scale_x_continuous(breaks = seq(2000, 2022, by = 2))
|
上市公司年报爬取
在对上市公司年报中包含“研发”的句子进行情感分析之前,需要先爬取上市公司年报。上市公司年报可以从巨潮资讯网爬取,爬取方法可以参考平台上的课程:
×

由于巨潮资讯网只提供了 2000 年之后的年报文件,所以我只爬取了 2000 年之后的。合计 55475 份 pdf 文件,172GB。全部上市公司年报的爬取结果可以查看平台上的资料:

点击这里跳转到 RStata 短书平台获取附件:旧版本|2001~2022 年上市公司年报中包含“研发”的句子情感分析
评论