NLP 实战 | 如何利用 NLP 分析财报数据

2020-05-14 12:12:27 +08:00
 ITrecruit1

大家好, 我是 Lucy, FinTech 社区创始人。FinTech 社区是一个拥有 50,000+会员的金融科技社群,旨在为金融科技行业赋能,致力于金融科技行业资源共享社群, 有量化研究群, 机器学习群, 北美群, c++ 群, 校招群, Lucy 曾在美国顶尖对冲基金工作, 独自组建一支 45 人交易团队,添加微信: lucylj66,加入社区, 攒人脉, 提认知,求职招聘!

自然语言处理是计算机科学领域与人工智能领域中的一个重要方向,它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。而在 NLP 应用的各种行业中,金融行业因其与数据的高度相关性,成为 NLP 技术最先应用的行业之一。今天这篇文章将为大家介绍如何利用 NLP 分析财报数据。

NLP 技术在金融投资领域的应用非常广泛,概括而言,主要包括以下三个方面:

1. 信用评分 Credit Scoring

2. 文本情感分析 Sentiment Analysis

3. 智能文档搜索 Document Search

下面结合具体例子,详细说明如何利用 NLP 技术分析上市公司财报会议( earning call )数据并从中提取决策信息。

一般而言,对于自然语言处理的应用,主要有三个步骤:

一、文本预处理

文本预处理主要包括:

消除噪声( Noise Removal )、词汇规范化( Lexicon Normalization )以及对象标准化( Object Standardization)。

1. 噪声消除

主要将标点符号、缩写字母、停止词语(比如英文里的 the,中文里的“的”)等和分析主题无关的词语移除。常见的做法是采用一个已有的词汇和实体表,通过筛选的方式将多余内容移除。

在英文中常用的金融词汇表之一为 Loughran and McDonald (2011) financial dictionary 金融词典,里面包括了金融行业中常见的词汇以及情感词汇,包括 80000+个关键词,350+个正面词汇以及 2300+个负面词汇:

https://sraf.nd.edu/textual-analysis/resources/

2. 词汇规范化

主要是讲每个单词的不同格式规范为同一种格式,例如在英文中每个动词都有不同的时态( e.g. play, plays, played)。两种最常见的方式为:

在 Python 中有 nltk (Natural Language Tool Kit) package 可以实现上述英文的词汇规范化,例如可以通过导入 PortStemmer 实现词干提取:

from nltk.stem import PorterStemmer
porter = PorterStemmer()
print(porter.stem("cats”)) # cat
print(porter.stem("troubling”)) # trouble

或利用 WordNetLemmatizer 实现词形还原:

from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
print(wnl.lemmatize('cars', 'n’)) # 名词 -> car
print(wnl.lemmatize('ate', 'v')) # 动词 -> eat

3. 对象标准化

指将一些有错误的词语标准化,比如 luv 转化为 love 。常见的方法是采用一个更广泛的词汇表(包含很多常见的容易混淆、出错的词语),省下的词语则被考虑为噪声。

二、文本特征转换

文本特征转化主要包括句法解析 (syntactical parsing) ,统计特征( statistics features )以及词嵌入( word embedding )。

句法解析( syntactical parsing ) 主要分为两种,语法依存(dependency grammar) 以及部分语音标记( part of speech tagging, PoS)。他们两者都是用来判断句子的结构。

统计特征( statistics feature ) 主要指的是讲文本转化为可以量化的单词之后的统计结果。常见的统计特征包括词汇数量、句子数量以及音节统计。通过这些数量,可以定量一句话的情感色彩。

在这个实例中,我们通过计算通过负面词语数量占总句子单词数量的比例来体现这句话的情感色彩。

词嵌入( word embedding ) 是一种更加高级的统计特征,主要讲文本中的单词通过向量来表示。例如下表中我们可以找出每词汇之间在文本中出现的关系,用一个在 0-1 之间的数字表示二者的关系,1 代表两者关系非常密切,0 代表没有关联。

如下表中国王( king )和王权( Royalty )的关系是 0.99 , 而女王( queen )和男性主义( Masculinity )的关系不大,只有 0.05 。

通过扩展维度,我们能够将单词用多个维度的向量表示,最终通过矢量运算找出不同单词之间的含义,例如在上述例子中:国王( King )-男性主义( masculinity )+女性主义( femininity )=女王( Queen )。

三、测试和迭代

通过分离训练数据和测试数据,我们可以通过训练数据带入到 NLP 算法得出对应的模型,并通过测试数据对其进行校正( calibration )和测试( test ),最终得到理想的模型和结果。

这里通过两个例子来展示 NLP 技术在分析财报数据中的应用。

1. 对单只股票的分析

分析苹果每个季度的财报会议文字的同比情感变化百分比和下一个季度股价回报之间的关系。

在这个例子中,情感变化百分比为这个季度的情感值与去年相同季度情感值变化的百分比( Quarter-over-quarter, QoQ ),情感值定义为在财报会议文本中负面词汇占整个文本的比例。

从上图中我们可以看到,在 2013 年 1 月的财报会议中苹果的负面情感值同比增加 67%,而对应下个季度即 2013 年 4 月苹果的回报率为-21%。

整体而言,两者的皮尔逊相关指数为-0.3,可以看出历史上苹果财报会议负面情绪变化和下个季度的汇报成负相关。

2. 对整个行业的分析

第二个例子可以用过热度图的方式来展现不同的行业在情感值的变化。

通过对比行业情感值变化,我们可以看出哪些行业情感值变化为正向,哪些情感值变化为负向。情感值提升的行业代表了公司高管对于该行业这个季度有信心,情感值为减少的行业则相反。

对比分析单独行业,我们也可以看出哪些行业在哪些时间出现了拐点。

例如银行业 Banks 从 2016 年第四季度之后,相比之前季度均为正向情感变化,表明高管对该行业未来普遍更有信心。

下面是利用 nltk package 建立模型的关键代码:

来源: S&P Global Quantamental Research

#今日互动#

关于 NLP 的应用

你有没有实战经验或想要分享的?欢迎留言讨论~

近期热招:(点击标题,即可了解详情)

1.金融科技招聘 | 技术专场

2.金融科技招聘 | 量化专场

3.金融科技招聘 | 机器学习专场

4.招聘 | C++ Developer - 80-100 万-上海-多家对冲基金

5.招聘 | 数据开发工程师-40-48 万+奖金-北京-对冲基金

1210 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX