wengbenjue / text_extraction

提取金融相关领域研究报告的主要结论(key idea)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

提取金融类研究报告关键词及相应结论

环境安装

jiebe 中文分词工具

jieba 是基于Python的中文分词工具,安装使用非常方便,可以直接使用pip 安装:

pip install jieba
#or
pip3 install jieba

Jieba 相关API使用文档地址:

Textblob: Simplified Text Processing

Textblob 是基于python 的简单的文本分析库,提供相应功能的API借口,能实现主体识别、词性标注、情绪分析、语义分析等相关文本分析功能。安装使用也十分方便,可以直接使用pip安装:

pip install textblob

使用文档及相关的链接参见以下:

textblob@PyPI

TextBlob@GitHub

实现的效果

输入每个研究报告会输出一个csv 文件,其中包含提取的关键词、包含该关键词的语句内容、对内容的趋势词的统计、以及总的统计结果等等,大概结构如下:

合并短语 出现次数 提取的句子 情绪词统计 情绪结果 ... 消极内容统计 中立内容统计 积极内容统计 结论
固定资产投资增速 9 从1~2月的8.1%回升至9.5% negative:0 neutral:0 positive:1 positive ... 3 0 2 固定资产投资增速下降
GDP同比增速 8 则下降至10.2% negative:1 neutral:0 positive:0 negative ... 5 1 1 GDP同比增速下降
名义GDP同比 4 增速从17年4季度的11%下降至10.2% negative:1 neutral:0 positive:0 negative ... 4 0 0 名义GDP同比下降

然后对于输入的所有的研究报告,会生成一个csv, 汇总每个研报的信息 如标题、发布日期、发布机构、结论等,大概结构如下所示:

研报名称 标题 作者 发布机构 日期 相应结论
【中金-易峘、刘雯琪、梁红】中金公司_**宏观速评_180417_1季度GDP增长同比持平于6.8%,春节较晚压低3月工业生产 ——地产投资强劲、基建走弱 中金公司_**宏观速评_180417_1季度GDP增长同比持平于6.8%,春节较晚压低3月工业生产 ——地产投资强劲、基建走弱 易峘、刘雯琪、梁红 中金 2016年9月29日 固定资产投资增速下降
【中金-易峘、刘雯琪、梁红】中金公司_**宏观速评_180417_1季度GDP增长同比持平于6.8%,春节较晚压低3月工业生产 ——地产投资强劲、基建走弱 中金公司_**宏观速评_180417_1季度GDP增长同比持平于6.8%,春节较晚压低3月工业生产 ——地产投资强劲、基建走弱 易峘、刘雯琪、梁红 中金 2016年9月29日 GDP同比增速下降
...... ...... ...... ...... ...... ......
【招商-谢亚轩、张一平、闫玲、刘亚欣、高明、林澍】画像经济新动能系列报告之一从供给侧发现经济新动能 画像经济新动能系列报告之一从供给侧发现经济新动能 谢亚轩、张一平、闫玲、刘亚欣、高明、林澍 招商 2018年4月16日 存款准备金率下调上升
【高华-宋宇、邓敏强、李真男、魏静娴、Andrew Tilton】20180417 **:一季度GDP增速符合预期,3月份工业增加值和固定资产投资增速低于预期;我们将2018年GDP增速预测从6.5%上调至6.6% 20180417 **:一季度GDP增速符合预期,3月份工业增加值和固定资产投资增速低于预期;我们将2018年GDP增速预测从6.5%上调至6.6% 宋宇、邓敏强、李真男、魏静娴、Andrew Tilton 高华 2018年4月17日 工业增加值增速保持平稳
...... ...... ...... ...... ...... ......

项目开发过程

转变研究报告的格式

金融类的研究报告均为pdf格式,为了在python里读取方便,首先我们将研究报告从pdf格式转换成txt文件格式,网上已有免费、高效的转换方法,这里不加赘述,转换后的格式如research_paper文件的txt文件一般。

中文分词

使用结巴分词对上述转换的txt文件进行分词处理,开发者可以添加自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率

jieba.load_userdict("usrdic\\userdict.txt")

其中 usrdic\userdict.txt 为自定义词典 userdict.txt 的位置

在这个项目里,我们自定义了几个词典分别包括常见的停用词、金融研究报告里常见的趋势描述词、日期时间、以及常见特定搭配(如10年期XX,20年期XX)

其中日期时间词典 用于提取研究报告的时间信息,而趋势词词典用于统计、分析相应内容的观点因素。

合成短语词组

由结巴分词得到的每个词是单个的实体,并没有太多的实际意义,然而以为分词得到的结果是按原来文章里的相对顺序排列的,我们可以人工合并前后的几个词,来得到相对有意义的实际词组

#如在金融研究报告里
'十年期','国债','利率'
#合成后的新词
'十年期国债利率'

很明显,合并后的短语词组更有实际意义,关于组成合并词组的单位词个数 可以自由设定 如上面那个例子 K=3.

统计结论

我们统计每个合并短语在原文中出现过的次数,提取相伴随的内容,并通过设定的规则删除那些出现次数为零或者较少的(可以自由设置)合并词组或没有实际意义的合并词组;

接着,对每个短语词组相应的内容进行分析,根据我们的积极、消极、中立的趋势词描述词典, 统计内容里出现过各类趋势描述词的次数,进行汇总得到我们的结论。

由于金融类研究报告的行文规范如格式、常用词大致一样 不会有十分明显的差异,因此虽然本项目提取研报关键内容的依据相对简单,但是效果不错,提取的关键词组的趋势描述基本与原文符合。

当然由于存在相应的规则,对某些研究报告此规则并不适用,因此不会生成任何结果。对于此类研究报告,可以修改规则的范围或者人工阅读。因此,此方法可以作为研报的筛选工具:如果输入研究报告能够得到相应准确的观点、结论,则此类研究报告只需浏览提取的结论即可;相反,没有提取出任何观点的研究报告可能更值得深究。

后续改进方向

完善趋势词词典的建设

除了增加趋势词的量,还可以建立一个较齐全的知识图谱,可以整体的分析每个趋势词在原文内容中 描述的程度,简单来说就是为每个趋势词动态赋权。

搭建情绪分析模型

通过收集高质量的标注语料,搭建情绪分类模型,将整个关键词组相关的句子 输入模型 得到相应的 情绪分析结果。根据训练语料的多少,来决定搭建模型的类型,如svm、naive bayes、决策树、神经网络(长短期记忆循环神经网络)。

About

提取金融相关领域研究报告的主要结论(key idea)


Languages

Language:Python 100.0%