Download as pdf or txt
Download as pdf or txt
You are on page 1of 35

中 中 中 中 中

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
张宁

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
中央财经大学金融学院

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
邮箱:zhang-ning@vip.163.com

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
第八章文本分析及其金融应用

大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





教师介绍
C

C
O

O
O

O
M

M


• 张宁,中央财经大学金融学院教授,博士生导师,中央财经大学中国




金融科技研究中心主任、金融科技专业负责人;
• 学术兼职包括:中国人工智能学会 委员、中国银保监会偿咨委委员、
C

C
O

O
家族办公室合作与发展组织理事会主席兼首席经济学家、生命质量研
O

O
M

M
究会理事长、中关村金融科技产业联盟专家委员会副主任委员、北京




市行风政风监督员和两区建设咨询专家、石景山区数字金融高级顾问、


科技部国家科技评估中心及火炬中心评议专家等。
• 累计在《中国科学》等权威期刊发表论文52篇,出版专著编著教材23
C

C
O

O
O

O
本,多次参与金融科技、平台经济、金融保险、健康金融相关政策咨
M

M


询建议及标准制定,作为骨干成员获评第二批全国高校黄大年式教学



团队、起草编写了多个教育部1+X职业标准(如健康财富规划师等),


通用生命质量理论和知识经济框架的提出者和健康金融的推动者。
C

C
O

O
O

O
M

M


2




中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
从ChatGPT开始

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
3

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
本讲内容

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大

五.主题模型
学 学 学 学 学
M M M M M
O O O O
O O O O

四.TF-IDF模型
C C C C
二.语素与分词概念

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
三.词袋模型与词向量模型

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
六.文本分析在金融领域中的应用

O O O O
O O O O
C C C C
一.文本分析方法概述及其运营场景

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
4

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
一、文本分析方法概述及其运营场景

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
文本分析概述

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
表等存储结构来发现知识)

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
文本挖掘

M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
构化的文档,无确定形式并且缺乏机器可理解的语义。

提取

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
“有意义的信息”

中 中 中 中 中
文本分析,也称为文本挖掘(Text Mining),是从文本数据中抽取

(而数据挖掘的对象以数据库中的结构化数据为主,通过利用关系
有价值的信息和知识的计算机处理技术。对象是是半结构化或非结

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





文本分析的应用场景
C

C
O

O
O

O
M

M


金融领域文本分析指运用特定的方法挖掘文本信息内容,从而对文本的可



读性、情绪语调、语义特征以及相似性等文本特征进行分析。


例如:
C

C
O

O
• 索斯鲁德(2019)利用挪威日度频率的商业新闻数据和季度GDP增长率
O

O
M

M


数据,构建了日度经济周期指数。




• 麦克马洪等人(2018)从事件分析出发对中国人民银行政策沟通效果进
行了研究,包括政策沟通的类别、参与政策沟通的人员信息等。
C

C
• 投资者和媒体关注度以及投资者情绪分析、管理层语调分析、以及文本
O

O
O

O
M

M
可读性度量指标等。一些较为前沿的指标构建也日益流行,如迷雾指数



(Fog Index)、新闻隐含波动率指数(News Implied Volatility),以及经



济政策不确定性指数等等。
C

C
O

O
O

O
M

M


7




中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大

指标;
范围;
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
优点

大 大 大 大 大
学 学 学 学 学
M M M M M

开展可读性研究;
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大

前文所述的一些典型应用。
四、提供新的研究视角,如
三、提供新的工具、变量和
的研究边界,如引入语言学
二、文本大数据拓展了原来
从而拓展了研究对象和研究
一、提供了文本形式的非结

学 学 学 学 学
M M M M M
文本分析的优缺点

O O O O
构化数据,丰富了数据类型,

O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
大挑战。

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
操纵文本的表现。

O O O O
C C C C
缺点

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
处理的可重复性不一定能实现;

中 中 中 中 中
8

国 国 国 国 国
大 大 大 大 大
尤其是编程和数量分析能力提出了更
计和金融问题,对研究者的综合能力
三、应用文本大数据分析技术研究会
数字没有的信息,但也可能是管理层
二、文本数据虽然可能包含传统财务
可能会引入噪音甚至错误,同时数据
过加工处理才能用于计量分析,而这
一、文本信息本身并不明确,必须经

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
文本数据处理一般流程

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
二、语素与分词

大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中

题;
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
词干,后缀等。
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
语素与分词

M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
根据分割原理,可将现有的分词方法归纳为:

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
对未知文本的切分,常用方法包括最大概率分词法和最大熵分词法等。

大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
作为构成词语的材料。对于表音文字如英语,可以简单的理解为前缀,
语素是语言学术语,是指语言中最小的音义结合体,它的主要功能就是

• 基于统计的分词方法则先用机器学习模型学习已经切分好的词语的规律,进而实现
• 基于理解的分词方法在分词的同时进行句法、语义分析,以改进对歧义词的处理;
中找到,则记为识别出一个词。该方法的好处是简便快速,但容易存在歧义词的问
• 字符串匹配法:将待分析的汉字串与前定的词典词条匹配,若某个字符串可在词典

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





基于统计的分词
C

C
O

O
如果有一个句子S,它有m种分词选项如下:
O

O
通过标准语料库,我们可以近似的计算出所有的
M

M


分词之间的二元条件概率,比如任意两个词w1,



w2,它们的条件概率分布可以近似的表示为:


C

C
O

O
O

O
M

M


如果我们从中选择了最优的第r种分词方法,



那么这种分词方法对应的统计分布概率应该 其中freq(w1,w2)表示w1,w2在语料库中相邻一起


最大,即: 出现的次数,而其中freq(w1),freq(w2)分别表
示w1,w2在语料库中出现的统计次数。
C

C
O

O
O

O
M

M
为了简化计算,我们通常使用马尔科夫假设,


基于语料库建立的统计概率,对于一个新的句子,


即每一个分词出现的概率仅仅和前一个分词


我们就可以通过计算各种分词方法对应的联合分


有关,即:
布概率,找到最大概率对应的分词方法,即最优
分词。
C

C
O

O
使用了马尔科夫假设,求联合分布:
O

O
M

M





中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
三、词袋模型与词向量模型

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





词袋分词
C

C
O

O
O

O
词袋模型(Bag-of-Words,简称BoW)是一种从文本中提取特征的
M

M



方法。词袋是文本的表示,用于描述文档中单词的出现。在该模型



中,文档中单词的顺序或结构的信息都被丢弃,仅关注文档中是否
出现已知单词,而不是在文档中的位置。
C

C
O

O
O

O
John likes to watch movies. Mary likes too.
M

M



John also likes to watch football games.



构造字典 (Dictionary):
C

C
{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9,
O

O
O

O
M

M
"too": 10}




根据字典,重新表达为两个向量:


[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
C

C
[1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
O

O
O

O
M

M


维度灾难;无法保留词序信息;存在语义鸿沟问题




M

M





词向量模型
C

C
O

O
自然语言处理的向量空间模型(vector space model),就是把一个单
O

O
M

M


词嵌入(embedding)到一个向量空间中去的模型。因此,把一个单



词表示为一个词向量通常也叫做“词嵌入”(word embedding)


(1)独热编码:把每个词表示为一个很长的向量。这个向量的维度
C

C
是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个
O

O
O

O
M

M
维度就代表了当前的词。




{I, like, finance, economics, fintech, AI}


[1 0 0 0 0 0] -> I
C

C
[0 1 0 0 0 0] -> like
O

O
O

O
M

M
[0 0 1 0 0 0] -> finance




[0 0 0 1 0 0] -> economics


[0 0 0 0 1 0] -> fintech
C

C
[0 0 0 0 0 1] -> AI
O

O
O

O
M

M
表达效率低;词汇鸿沟





中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
词向量模型

M M M M M
O O O O
O O O O
C C C C
以用基向量来表示。

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
解决维数灾难;挖掘了词之间的关联属性,提高了准确度
一个较短的词向量上来。换句话说就是线性代数中的任一向量可
• 独热编码解决方法:分布式表征。通过训练,将每个词都映射到

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





词向量模型
C

C
O

O
O

O
(2)Word2vec:
M

M




一种基于浅层神经网络训练的自然语言模型,本质上也属于上述词


嵌入表征的一种,只不过这种向量化表征需要经过神经网络训练得
C

C
到。由于需要进行大量的文本训练,为了提高速度,Word2vec 经
O

O
O

O
M

M
常采用两种加速方式:负采样(Negative Sampling),层次softmax




(Hierarchical Softmax),两两组合可以得到4种具体的实现方法。


C

C
O

O
O

O
Word2vec使用的词向量是分布式表征的词向量表示方式。其中涉
M

M



及的核心的技术是根据词频用Huffman编码,能够有效的降低计算



的复杂度。与潜在语义分析(Latent Semantic Index,LSI)、潜在
狄立克雷分配(LDA)的经典过程相比,Word2vec利用了词的上
C

C
O

O
O

O
M

M
下文,语义信息更加地丰富。





中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
词向量模型

M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
Word2Vec有两种的方法:

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
前词语的概率,顾名思义是基于词袋模型。

O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
• 和跳跃元语法(Skip-gram):根据当前词语来预测上下文的概率。

M M M M M
O O O O
O O O O
C C C C
• 连续词袋模型(Continuous Bag of Words,CBOW):根据上下文来预测当

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
丢失了文本中的语序信息:“我爱祖国妈妈”和“祖国妈妈爱我”

C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大

段落 ID 保持不变。
学 学 学 学 学
词向量模型

M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
下文和段落向量的情况下预测单词的概
• 分布记忆的段落向量。它试图在给定上

率。在一个句子或者文档的训练过程中,

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
是Word2Vec的拓展。有两种训练方式:

O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
(3)Doc2vec算法:为了充分利用文本语序信息,该算法能从长

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
文本(例如:句子、段落或文档)中学习得到固定长度的特征表示,

M M M M M
O O O O
O O O O
况下预测段落中一组随机单词的概率。
的上下文单词,在仅给定段落向量的情
• 分布词袋版本的段落向量。忽略输入中

C C C C
M

M





Python代码实战
C

C
O

O
O

O
M

M


直接使用gensim库中封装好的




word2vec。 #应用1:遍历与“金融”最相近的词,找出其中
的三字词语
req_count = 5
C

C
#进行分词
O

O
O

O
for key in model.wv.similar_by_word('金融', topn
M

M
document_cut = jieba.cut(document)


=100):


#套用word2vec模型


if len(key[0])==3:


#将对包含句子的文件进行迭代:一行=一句话,
转化成一个sentence的迭代器,每一次迭代返 req_count -= 1
回的sentence是一个utf-8格式的word的列表 print(key[0], key[1])
C

C
O

O
sentences = word2vec.LineSentence('./chapt8- if req_count == 0:
O

O
M

M
break;


3_segment.txt')


#应用2:计算两个词语之间的相似度



# 调用word2vec训练,参数的含义参加完整代 print(model.wv.similarity('智能化', '数字化'))
码文件
#应用3:找出一组词中不属于同类的词语
C

C
model = word2vec.Word2Vec(sentences,
O

O
O

O
print(model.wv.doesnt_match("金融 经济 文化
M

M
hs=1,min_count=1,window=3)


".split()))




中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
(TF-IDF)算法

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
四、词频-逆文档频次

O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
关键词提取概述

国 国 国 国 国
大 大 大 大 大
2.基于词图模型的关键词抽取;
1.基于统计特征的关键词抽取;

学 学 学 学 学
M M M M M
O O O O
3.和基于主题模型的关键词抽取。
O O O O
C C C C
无监督关键词抽取算法可分为:

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
进行训练。因此,这类算法在关键词提取领域的应用更为广泛。

中 中 中 中 中
既不需要一张人工生成、维护的词表,也不需要人工标准语料辅助
关键词提取算法一般也可以分为有监督、无监督和半监督三类。相

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
对于有监督和半监督的方法而言,无监督的方法对数据的要求较低。

M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中

要。
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
词频-逆文档频次算法

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
词频-逆文档频次算法由两部分构成:

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
使用,关于两种算法的组合,最常用的是下面这种相乘的方式:
思想是:如果一个词在越少的文档中出现,则其对文档的区分能力越强。
• 词频(TF)算法:词频描述的是一个单词在某个文档中出现的频率。一般

词频-逆文档频次算法就是把词频算法和逆文档频率算法进行综合
• 逆文档频率(IDF)算法:统计一个词在文档集的多少个文档中出现,基本

中 中 中 中 中
来讲,一个单词在一个文档中出现的频率越高,则该单词对于当前文档越重

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





Python代码实战
C

C
O

O
1. 数据预训练阶段:
O

O
2. 对目标文档进行关键词提取:
M

M



1)加载已有的文档数据集。 1)根据词频-逆文档频次算法原理计算



2)加载停用词表。 IDF值。
C

C
3)对数据集中的文档进行分词。
O

O
O

O
# idf值统计方法
M

M


4)过滤干扰词。 def train_idf(doc_list):



idf_dic = {}


# 总文档数
# 停用词表加载方法,定义函数 tt_count = len(doc_list)
C

C
def get_stopword_list()
O

O
# 每个词出现的文档数
O

O
M

M
# 停用词表存储路径,每一行为一个词,按行读取进 for doc in doc_list:



#行加载 for word in set(doc):



# 进行编码转换确保匹配准确率 idf_dic[word] = idf_dic.get(word, 0.0) + 1.0
stopword_list = [sw.replace('\n', '') for sw in # 按公式转换为idf值,分母加1进行平滑处理
open(stop_word_path, encoding='UTF-8').readlines() for k, v in idf_dic.items():
C

C
O

O
return stopword_list
O

O
idf_dic[k] = math.log(tt_count / (1.0 + v))
M

M





M

M





Python代码实战 输入一段文本作为测试:
C

C
“做好金融科人才培养。制定金融科技人才相关标
O

O
2)统计tf值。
O

O
M

M
准,推进跨地区、跨机构人才顺畅流动,在北京、



def get_tf_dic(self): 上海、粵港澳大湾区建设高水平金融科技人才高地,



tf_dic = {} 在高层次金融科技人才集中的中心城市着力建设吸
for word in self.word_list:
引和集聚人才的平台,形成战略支点和雁阵格局。
tf_dic[word] = tf_dic.get(word, 0.0) + 1.0
C

C
优化金融科技人才需求目录和引进模式,健全以创
O

O
tt_count = len(self.word_list)
O

O
M

M
for k, v in tf_dic.items(): 新能力、质量、实效、贡献为导向的人才评价体系,



tf_dic[k] = float(v) / tt_count 切实做到人岗相适、人事相宜、人尽其才。加快金



return tf_dic 融科技人才梯队建设,建立健全在职人才培养体系,
探索业务、技术人才双向交流机制,打造校企联合
3)按公式计算tf-idf
C

C
培养、产学研用协同攻关等合作育人新模式,加强
O

O
O

O
def get_tfidf(self):
M

M
职业操守教育,培养德才兼备的金融科技人才。完


tfidf_dic = {}


善鼓励创新、包容试错的激励机制,打通金融科技


for word in self.word_list:


idf = self.idf_dic.get(word, self.default_idf) 人才职业发展通道,增强人才成就感和归属感,让
tf = self.tf_dic.get(word, 0) 事业激励人才、让人才成就事业。”
C

C
O

O
tfidf = tf * idf
O

O
测试结果为:金融/科技人才/人才/模式
M

M
tfidf_dic[word] = tfidf



tfidf_dic.items() /事业/职业/体系/高水平/高地/育人



中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
五、主题模型

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

LDA主题模型。
文档
中 中 中 中 中
国 国 国 国 国
个文档的词分布。
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O

新闻报道
O O O O
C C C C
主题模型概述

• 各种金融经济

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
主题

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
• 金融科技

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
词分布

• ......
保险
• 区块链
• 大数据

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
• 银行、证券、

O O O O
C C C C
现在常用的方法就是潜在语义分析(Latent Semantic Analysis, LSA)和
或多个的主题,而每个主题都会有对应的词分布,通过主题,就可以得到每
串联起来,主题模型将这个维度称为“主题”。每个文档都应该对应着一个
题。其认为在词与文档之间没有直接的联系,它们应当还有一个维度将它们

中 中 中 中 中
主题模型(Topic Modeling)通过分析原始文本的语词,以发现贯穿其中的主

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





LDA主题模型
C

C
O

O
LDA主题模型认为文章都是用基本的词汇组合而成,词与词之间没有顺序以及先
O

O
M

M


后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生



成。


LDA方法基于狄利克雷分布的贝叶斯统计原理,其基本思想为生成文档—主题矩
阵以及主题—词语矩阵,即基于各文档在主题上的概率分布以及词语在主题上的
C

C
O

O
概率分布来阐述文档的主要含义。所以LDA主题模型的核心,就是如下公式:
O

O
M

M





LDA方法它假设文档生成包括以下两个步骤:
C

C
O

O
O

O
• 假定每个文档均有对应的主题分布,在文档的主题分布中抽取一个主题;
M

M



• 假定每个主题都有对应的词语分布,从上一步抽取的主题所对应的词语分布中



抽取一个词语。通过将这两步迭代拟合到文档中的每个词语,即可得出每个文
档的主题分布和每个主题的词语分布。
C

C
O

O
经过以上步骤,就可以看一下两个分布的乘积,是否符合给定文章的分布,以此
O

O
M

M
来调整。





M

M





Python代码实战
C

C
O

O
O

O
调用gensim相关库构建一个主题模型
M

M



# 先建一个主题模型类



class TopicModel(object):
# 三个传入参数:处理后的数据集,关键词数量,具体模型(LSI、LDA),主题数量
def __init__(self, doc_list, keyword_num, model='LSI', num_topics=4):
C

C
O

O
# 使用gensim的接口,将文本转为向量化表示
O

O
M

M
# 先构建词空间


self.dictionary = corpora.Dictionary(doc_list)



# 使用BOW模型向量化


corpus = [self.dictionary.doc2bow(doc) for doc in doc_list]
# 对每个词,根据tf-idf进行加权,得到加权后的向量表示
C

C
self.tfidf_model = models.TfidfModel(corpus)
O

O
O

O
self.corpus_tfidf = self.tfidf_model[corpus]
M

M


self.keyword_num = keyword_num



self.num_topics = num_topics


我们以1.2万字的2022年央行《金融科技发展规划》为语料,
C

C
O

O
LSI模型的结果为:科技/金融/体系/技术/产学研/标准/业务/人才/机构/机制,
O

O
M

M
LDA模型的结果为:人才/科技人才/产学研/目录/标准/事业/职业/体系/平台/激励机制。





中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
中的应用

C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
六、文本分析在金融领域

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





股吧评论的文本挖掘
C

C
O

O
金融市场情绪是金融市场上投资者对金融市场表现的情感态度的倾向。以
O

O
M

M
股票市场为例,当股票市场行情向好时,舆情中会更多地出现“上涨,飘



红”等字样,表明此时投资者情绪是积极的;反之,当股票市场行情向下



时,舆情中会更多的出现“下跌,飘绿”等字样,表明此时投资者情绪是
消极的。这里我们以股吧评论的文本挖掘为例,在此基础上可以进一步发
现股评对股市指标的变化规律具有解释作用。
C

C
O

O
O

O
M

M
股吧股民情绪的文本分析步骤:




①以大连理工大学中文情感词汇本体库,按照七个维度整理情绪词语列表


②定义情绪计算函数,对键入进行分词,根据情绪词语列表进行情感词频
统计,调试函数能正常运行;
C

C
O

O
O

O
③导入股吧帖子标题,对标题文本使用情绪计算函数,得到每个标题在七
M

M


个情绪维度的得分;




④合并原文本和各文本的情绪词频统计后,进行检查,查看情绪的划分是
否符合标题的语义,这是个不断优化的过程;
C

C
⑤拓展:可以按照最后更新日期,将评论标题的情绪词频加和到日度层面,
O

O
O

O
M

M
按照每日词频最高的情绪,定义当日股吧股民的主导情绪。





M

M





股吧评论的文本挖掘
C

C
O

O
O

O
①查看大连理工大学中文情感词汇本体库,根据“情感分类”,划分出7个情
M

M


绪词列表:




# 导入并查看大连理工大学中文情感词汇本体库
import pandas as pd
df = pd.read_excel('大连理工大学中文情感词汇本体.xlsx')
C

C
df = df[['词语', '词性种类', '词义数', '词义序号', '情感分类', '强度', '极性']]
O

O
O

O
M

M
df.head()


# 构建7大维度的情绪词列表(此处仅展示Happy和Good两个维度,详见代码文件)



for idx, row in df.iterrows(): #按行遍历


if row['情感分类'] in ['PA', 'PE']:
Happy.append(row['词语'])
C

C
if row['情感分类'] in ['PD', 'PH', 'PG', 'PB', 'PK']:
O

O
O

O
Good.append(row['词语'])
M

M



②定义情绪计算函数,依据上面构建的情绪词列表,对文本中的词汇进行情



绪频数统计:
# 定义一个对文本进行情绪计算的函数
C

C
def emotion_caculate(text)
O

O
O

O
M

M
# 键入一个文本进行情绪词频统计


emotion_caculate(text=’’)




中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学

结果为:
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
# 合并数据,呈现结果

学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
股吧评论的文本挖掘

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
output_df = pd.concat([guba_df, emotion_df], axis=1)
emotion_df = guba_df['标题'].apply(emotion_caculate)

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
# 对我们导入的股吧文本的“标题”列每一行调用情绪计算函数。

O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
③对股吧发帖的标题运用情绪计算函数,从而实现对每行标题重复上一过程:

国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
M

M





股吧评论的文本挖掘
C

C
O

O
O

O
拓展:是将标题文本中的fear,negative,positive对应的标题显示出来,进行
M

M


检查,反复进行这一过程然后修正我们的情绪词列表,将有助于我们更为精




准的对文本的情绪进行分析。
# 按照害怕情绪排序,提取出害怕情绪频数最大的一条标题内容
C

C
O

O
fear = output_df.sort_values(by='fear',ascending=False)
O

O
M

M
print(fear.iloc[0, :]['标题'])



#得到结果为:今日高位震荡



# 按照负面情绪排序,提取出负面情绪频数最大的一条标题内容
negative = output_df.sort_values(by='negative',ascending=False)
print(negative.iloc[0, :]['标题'])
C

C
O

O
#得到结果为:流动性明显不足,只能玩弄中证500&1000忽悠韭菜。。。
O

O
M

M
# 按照积极情绪排序,提取出积极情绪频数最大的一条标题内容



positive = output_df.sort_values(by='positive',ascending=False)


print(positive.iloc[0, :]['标题'])


# 即可得到这条标题的内容
C

C
O

O
O

O
M

M





中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C
谢谢!

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

中 中 中 中 中
国 国 国 国 国
大 大 大 大 大
学 学 学 学 学
M M M M M
O O O O
O O O O
C C C C

You might also like