Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:左祥太 (武汉纺织大学)
邮箱:Shutter_Z@outlook.com
目录
文本分析是指对文本特征项的选取过程,是 Natural Language Processing (NLP) 的一个重要环节。在现实生活当中,有很多重要的数据都是以文本形式存在,为广义上的非结构化的数据。例如,年报中管理层讨论与分析部分的文字、工作报告中的文字等。
从已有发表来看,主流的期刊杂志中仍缺少对文本信息的觉察与测量,且测量方法在过去的十年内所呈现出的形式都较为单一化。而现有的文本分析工具一般以 Python 的 jieba
、snownlp
、sklearn
等为主,本推文将介绍一种以 Stata 作为主力工具的文本分析方法。
文本分析的主要流程大致可以分为以下几步:
Stata 中与文本直接相关的函数主要有以下几种:
strlen()
:计算并返回 ASCII 编码下的字符数。例如 dis strlen("连享会")
,返回结果为 9。ustrlen()
:计算并返回 Unicode 编码下的字符数。例如 dis ustrlen("连享会")
,返回结果为 3。ustrregexm(s, re)
:根据正则表达式 re
匹配字符串 s
中的项目,若存在则返回 1,不存在则返回 0。例如,dis ustrregexm("连享会", "连")
,返回结果为 1;dis ustrregexm("连享会", "左")
,返回结果为 0。ustrregexrf(s1, re, s2)
:根据在正则表达式 re
匹配字符串 s1
中的项目,若存在则替换为字符串 s2
,反之不进行处理。注意,该函数仅替换出现的第一个字符。rf
的含义是 replace first
。例如,dis ustrregexrf("连享会", "连", "Lian")
,返回结果为 Lian享会
。ustrregexra(s1, re, s2)
:根据在正则表达式 re
匹配字符串 s1
中的项目,若存在则替换为字符串 s2
,反之不进行处理。注意,该函数将批量替换所有匹配成功的字符。ra
的含义是replace all
。例如,dis ustrregexra("连享连会连", "连", "Lian")
返回结果为 Lian享Lian会Lian
。更多字符串处理函数参考 help string functions
。
本部分数据截取自 CNRDS 的 CMDA 管理层讨论与分析部分,使用样本数据进行演示说明。数据格式如下:
. lxhuse md_a.dta, clear
. des
Observations: 38
Variables: 3 5 Jun 2021 16:34
---------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
---------------------------------------------------------------------
stkcd float %06.0f
date float %tdCY-N-D
mda strL %9s 经营讨论与分析内容
---------------------------------------------------------------------
Sorted by:
去停用词操作主要用到上面提及的替换函数 ustrregexra()
,具体操作如下:
. *- 设定中文停用词
. global stopwords "的 了 一些 一切 一方面"
. *- 生成停用词变量
. foreach v in $stopwords {
2. gen `v' = "`v'"
3. }
. *- 从原始文本中剔除停用词
. foreach v in $stopwords {
2. replace mda = ustrregexra(mda, "`v'", "")
3. drop `v'
4. }
. *- 设置情绪词典
. global positivewords "稳中求进 丰富 加快 增加"
. global negativewords "严格 挑战 下降"
. *- 下载我写的文本分析包 onetext
. ssc install onetext, replace
. *- 统计积极词语出现个数
. foreach v in $positivewords {
2. onetext mda, k("`v'") m(count) g(`v')
3. }
. *- 统计消极词语出现个数
. foreach v in $negativewords {
2. onetext mda, k("`v'") m(count) g(`v')
3. }
. *- 计算文本总长
. gen total = ustrlen(mda)
. *- 计算积极情绪得分与消极情绪得分,并删除多余变量
. egen pos = rowtotal($positivewords)
. egen neg = rowtotal($negativewords)
. drop $positivewords $negativewords
. *- 结果
. list pos neg total in 1/5
+-------------------+
| pos neg total |
|-------------------|
1. | 14 3 1945 |
2. | 10 2 1862 |
3. | 7 3 1430 |
4. | 7 1 760 |
5. | 8 2 977 |
+-------------------+
接下来可以通过一些其他的方法来计算管理层披露的文本情绪与文本语调了。以下公式中,
上述指标可以参考以下文献:
需要注意的是,本部分代码并不只局限于计算文本情绪,同时也可以根据相应的词典延伸至对企业数字化转型、信息批量质量等的计算。同时,onetext
命令也可以按照一定的程序按照词袋模型或者词集模型生成文本向量,从而计算余弦相似度与杰卡德相似度。更多实用功能等待读者的发现与挖掘!
Note:产生如下推文列表的 Stata 命令为:
lianxh 正则, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh