查看原文
其他

管理世界 | 使用中文LM金融词典做管理层语调分析

大邓 大邓和他的Python
2024-09-09

今天分享的这篇论文通过 有道翻译 这一简单有效的的方式汉化了 LM英文金融词典,并使用 数词语数个数 的方式构造了管理层语调这个指标。

文献

曾庆生,周波,张程,陈信元.年报语调与内部人交易:“表里如一”还是“口是心非”?[J].管理世界,2018,34(09):143-160.

本文代码实现的视频讲解已更新至付费课 Python实证指标构建与文本分析 中。

摘要

基于中国A股非金融公司2007~2014年年报语调的文本分析,本文研究了年报语调与年报披露后的内部人交易行为之间的关系。研究发现,年报语调越积极,公司高管在年报公布后一段期间内的卖出股票规模越大,净买入股票规模越小,表明公司高管编制年报时存在「口是心非」 的操纵嫌疑。进一步研究发现,年报披露后中期市场表现差、信息透明度低、非国有控股的公司高管交易与年报语调的反向关系分别显著强于年报披露后中期市场表现好、信息透明度高、国有控股的公司;而公司盈余管理程度、交易者职位(是否核心高管)对年报语调与高管交易关系的影响不显著。此外,年报语调越积极,高管亲属卖出股票的规模也越大,但未发现公司重要股东交易与  「年报语调」 相关。上述结果表明,中国上市公司年报存在语调管理行为,年报语调成为除会计报表以外另一种可以被内部人管理或操纵的信息。

关键词

年报; 语调管理; 内部人交易; 信息不对称;

代码

  • 年报数据 data/reports.csv
  • cntext库1.7.3及以上版本,内置LM中英文情感词典

语调指标

  • 算法1 该年报内 「积极词汇数 与消极词汇数 之差」 占 「年报总词汇数」 的比例;

  • 算法2 (积极词汇数-消极词汇数)/( 积极词汇数+消极词汇数)

import pandas as pd

df = pd.read_csv('data/reports.csv')
df.head()

Run

len(df)

Run

    500

文本分析库cntext

!pip3 install cntext
import cntext as ct

print(ct.__version__)
1.7.3#查看内置词典
ct.dict_pkl_list()

Run

    ['DUTIR.pkl',
     'HOWNET.pkl',
     'Chinese_Loughran_McDonald_Financial_Sentiment.pkl',
     'sentiws.pkl',
     'ChineseFinancialFormalUnformalSentiment.pkl',
     'ANEW.pkl',
     'LSD2015.pkl',
     'NRC.pkl',
     'geninqposneg.pkl',
     'HuLiu.pkl',
     'Loughran_McDonald_Financial_Sentiment.pkl',
     'AFINN.pkl',
     'ADV_CONJ.pkl',
     'STOPWORDS.pkl']

查看cntext内置的LM中文词典基本信息

clm = ct.load_pkl_dict('Chinese_Loughran_McDonald_Financial_Sentiment.pkl')

#print(clm)
print('clm关键词: ',clm.keys())
print()
print('Desc: ', clm['Desc'])
print()
print('Referer: ', clm['Referer'])
print()
print('Chinese_Loughran_McDonald_Financial_Sentiment词典含2类情感词\n,分别是', clm['Chinese_Loughran_McDonald_Financial_Sentiment'].keys())

Run

    clm关键词:  dict_keys(['Chinese_Loughran_McDonald_Financial_Sentiment''Desc''Referer'])
    
    Desc:  参照该论文,cntext库使用百度翻译、有道翻译对LM词典进行汉化处理。原文使用的有道翻译、金山词霸。
    
    Referer:  曾庆生, 周波, 张程, and 陈信元. "年报语调与内部人交易: 表里如一还是口是心非?." 管理世界 34, no. 09 (2018): 143-160.
    
    Chinese_Loughran_McDonald_Financial_Sentiment词典含2类情感词
    ,分别是 dict_keys(['negative''positive'])

cntext语调计算实现

  • 算法1 该年报内 「积极词汇数 与消极词汇数 之差」 占 「年报总词汇数」 的比例;
  • 算法2 (积极词汇数-消极词汇数)/( 积极词汇数+消极词汇数)
import cntext as ct

diction = {'pos': ['高兴''快乐''分享'],
           'neg': ['难过''悲伤']}

text = '我今天得奖了,很高兴,我要将快乐分享大家。'

ct.sentiment(text=text, 
             diction=diction, 
             lang='chinese')

Run

    {'pos_num': 3,
     'neg_num': 0,
     'stopword_num': 8,
     'word_num': 14,
     'sentence_num': 1}

定义语调计算函数tone

import cntext as ct

diction = ct.load_pkl_dict('Chinese_Loughran_McDonald_Financial_Sentiment.pkl')['Chinese_Loughran_McDonald_Financial_Sentiment']

def tone(text):
    res = ct.sentiment(text=text,
                       diction=diction,
                       lang='chinese')
    return pd.Series(res)
  
#第一个年报的语调
tone(text=df['content'].tolist()[0])

Run

    negative_num      67
    positive_num      76
    stopword_num     462
    word_num        1831
    sentence_num      52
    dtype: int64

选中文本列content, 对content整体实施tone计算,

#计算tone语调
tone_df = df['content'].apply(tone)
tone_df.head()

Run

  • 算法1 该年报内 「积极词汇数 与消极词汇数 之差」 占 「年报总词汇数」 的比例;
  • 算法2 (积极词汇数-消极词汇数)/( 积极词汇数+消极词汇数)

将得到的正、负面、总词数分别按照算法1和算法2进行计算。

# 算法1
tone_df['tone1'] = (tone_df['positive_num']-tone_df['negative_num'])/tone_df['word_num']
#tone_df['tone1'] = (tone_df['positive_num']-tone_df['negative_num'])/(tone_df['word_num']+1)

#算法2
tone_df['tone2'] = (tone_df['positive_num']-tone_df['negative_num'])/(tone_df['positive_num']+tone_df['negative_num'])
#tone_df['tone2'] = (tone_df['positive_num']-tone_df['negative_num'])/(tone_df['positive_num']+tone_df['negative_num']+1)

tone_df.head()

Run

将结果存储到xlsx中

tone_df.to_excel('output/管理层-语调分析.xlsx')


精选文章

长期征稿 | 欢迎各位前来投稿

从符号到嵌入:计算社会科学的两种文本表示

推荐 | 社科(经管)文本分析快速指南

使用cntext训练Glove词嵌入模型

cntext库 | 关于DUTIR被污染解决办法

sklearnex库 | 两行代码百倍加速你的机器学习代码

认知的测量 | 向量距离vs语义投影

Wordify | 发现和区分消费者词汇的工具

karateclub库 | 计算社交网络中节点的向量

视频专栏课 | Python实证指标构建与文本分析

扩增内置pkl | 欢迎各位向cntext库分享情感词典

文本分析 | 中国企业高管团队创新注意力(含代码)

LIWC vs Python | 文本分析之词典统计法略讲(含代码)

PNAS | 文本网络分析&文化桥梁Python代码实现

Wordify | 发现和区分消费者词汇的工具

BERTopic库 | 使用预训练模型做话题建模

tomotopy | 速度最快的LDA主题模型

文本分析方法在《管理世界》(2021.5)中的应用

Wow~70G上市公司定期报告数据集

doccano|为机器学习建模做数据标注

使用WeasyPrint自动生成pdf报告文件

100min视频 | Python文本分析与会计

在jupyter内运行R代码

继续滑动看下一个
大邓和他的Python
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存