连享会 · 文本分析 | 爬虫 | 机器学习
目录 [TOC]
R
和 Python
软件的基本用法,能够做到“左手用 R
,右手用 Python
”。R
和 Python
的基础知识,并使用 R
和 Python
进行数据处理、数值计算、网络爬虫、文本分析等不同任务的处理;介绍机器学习常用算法,如决策树、随机森林、支持向量机等的基本原理,并使用 Python 实现各类算法。本次课程可以在手机,Ipad 以及 Windows 系统的电脑上听课。
特别提示: 一个账号绑定一个设备,且听课电脑 需要 Windows 系统 ,请大家提前安排自己的听课设备。
游万海,福州大学经济与管理学院副教授,主要研究领域为空间计量模型、分位数回归模型及相关实际问题的应用,以主要作者在国内外期刊《World Development》、《Energy Economics》、《Economics Letters》、《Finance Research Letters》、《Journal of Cleaner Product》、《Energy Sources, Part B: Economics, Planning, and Policy 》、《统计研究》发表学术论文 30 余篇,担任《Energy Economics》、《Journal of Cleaner Product》、《Economic Modelling》、《International Review of Economics & Finance》等期刊匿名审稿人。
司继春,上海对外经贸大学统计与信息学院讲师,主要研究领域为微观计量经济学、产业组织理论。在 Journal of Business and Economic Statistics、《财经研究》等学术刊物上发表多篇论文,-主页-。 其实,大家更熟悉的是知乎上大名鼎鼎的 慧航,拥有 30w+ 个关注者,获得过 16w+ 次赞同,他就是司继春老师 —— 知乎-慧航。
实证研究中,数据的 获取及处理 是第一步,也是至关重要的一个环节!
在传统的经济和金融分析中,我们使用的主要是结构化的数据 (多数数据来源于统计年鉴、商业数据库,如 GTA,Wind 等),而在大数据时代,大量有价值的信息以文本等非结构化、异构型的数据格式存储于互联网网页或者各类文档中。从 Web 上快速、有效地提取这些信息对人文社会科学的深度研究尤为重要。
这些文本信息如何 获取 ?答曰:网络爬虫。
这些文本信息如何 处理 ?答曰:正则表达式。
这些文本信息如何 分析 ?答曰:话题分析和情感分析。
如何应对变量过多/高维数据问题?答曰:机器学习。
事实上,无论是在管理学、经济学、金融学、会计学,还是人文社会科学的其他领域,基于网络爬虫的文本分析的研究越来越广泛。其火热程度可以从相关论文的 Google 学术引用次数窥豹一斑。
例如,在金融和会计领域,Loughran and McDonald (2011) 发表于 Journal of Finance 上的有关文本分析技术的综述性文章,短短 10 年时间,Google 引用已 3590 余次。二人于 2016 年发表于 Journal of Accounting Research 的另一篇介绍文本分析在会计和金融领域应用的综述性文章目前已被引用 1100 余次。两位学者在近十年中基于文本分析方法 发表的文章 遍布 JFE,JF, JAR, JFQA 等顶刊,获得了广泛的关注。二者在 2020 年发表于 Annual Review of Financial Economics 的综述文章 Textual Analysis in Finance (-PDF-) 对相关文献和方法进行了系统梳理。
利用 Google 学术 顺藤摸瓜,可以发现,各个领域文本分析的来源非常丰富,包括:历史典籍、报纸新闻、明清房契、刑科题本、公司公告、明星微博等等,从而使研究的主题也得到了极大的扩展。
下面是一些我们摘录的一些论文信息:
经济学领域:
金融和会计领域:
社会学领域:
政治学领域:
完整的知识架构是你长期成长的动力源泉! 我们力求此次课程设置成一个比较完整的文本分析体系,以期达成如下目标:
Python 的易用和流行趋势已经不必多言。Python 在文本分析、爬虫、机器学习等方面有独特优势。作为 Stata 的老用户,连玉君老师建议「左手 Stata,右手 Python」,而李春涛创办的爬虫俱乐部也将其公众号更名为「Stata and Python 数据分析」,足见 Python 的魅力。
R 作为一门免费、开源的语言,已被国外大量学术和科研机构所认可,其被广泛应用于数据挖掘、机器学习、数据可视化、计量经济学和空间统计等领域。正是因为其拥有众多使用者,大量的外部包被开发应用于各个领域 (19000+ 个,截止 2022.2.12)。刚开始接触 R 语言的学员经常有这样的一个疑问:为什么 R 体积小,功能却如此多,这是因为有大量的外部扩展包。
到底学 R 还是 Python? 其实两者是不冲突的!这两门语言存在大量的相似之处,功能都非常强大,其实现都是基于 基础包(模块) + 外部包(模块)。 因此,将两者进行对比学习往往能起到事半功倍的效果。
2019 年 6 月 26 日,Stata 官网正式推出 Stata 16。一大亮点在于增加了与 Python 互通的接口:你可以在 Stata 的 Do-file 编辑器中编写 Python 代码,也可以直接从 Stata 界面下直接调用既有的 Python 代码和函数。与此同时,Stata 用户还编写了 rcall
等命令,以很方便地在 Stata 环境中执行 R 代码。Stata 在日后的升级版本中很可能会提供 R 接口。
这意味着什么呢? 这意味着我们日后的分析工作都是任务导向的,不再依赖于特定的某种软件或语言。更直接地说,不久之后,每个 PhD 学生都至少要掌握 2-3 种软件和语言,以便应对不同的分析任务。这种改变使得我们得以迈出自己的小圈子,在一个更为广阔的天地中与更多的 「同行」 分享-被分享 知识和经验。在 github 浏览一些活跃用户的主页时,你会发现他们通常都会同时使用 2-3 中软件/语言,比如 S. Cunningham, A. Baker, P.H.C. Sant'Anna 都呈现了最新的 DID 估计方法的 R 和 Stata 代码。
为此,本次课程中我们希望能引领各位顺畅地从温馨的 Stata 小屋跨入 Python 和 R 的天地,以便更好地适应未来的发展趋势。
在内容安排上,本着「由浅入深,循序渐进」的原则,在第一部分中 (第 1-4 讲) 我们首先从整体上介绍文本分析的基本框架和分析流程,以便让大家对其分析套路有一个整体上了解。进而从文本处理函数和正则表达式入手,依序介绍爬虫方法、文本信息提取和文本匹配方法。在第二部分中 (第 5-10 讲),依次介绍 Python 基础,数值运算方法,爬虫进阶 (动态网页的爬取),最后介绍几种机器学习法算法,并应用于文本情感分析。
各个专题的具体介绍如下:
第 1 讲 介绍文本分析概念及基本流程,并辅以具体实例。从四则运算、基本数据类型和结构、流程控制、函数编写及包的安装与使用等方面介绍 R
的基础知识。此外,用一篇具体文章讲解利用 R
语言进行数据分析的基本步骤和范式。
第 2 讲 讲解字符处理函数,正则表达式匹配原理和规则,正则表达式的基本语法,包括元字符、序列、数量词、回溯引用、零宽断言、贪婪与懒惰等,真正做到学以致用。
第 3 讲 介绍网页解析中的 XPath 表达式,讲解爬虫的一些基础知识;实现对静态网页和动态网页信息的下载,并利用正则表达式对所爬取的数据进行清理。
第 4 讲 以「深交所问询函」和「上市公司年报」的下载和分析为例,介绍文本文档信息的处理方法;借助正则表达式进行关键词提取,分析文本复杂性、文本相似性;绘制文字云图、提取文本主题等。
第 5-6 讲 介绍 Python 的基本语法,包括基本的数据结构:数字、字符串、元组、列表、词典等,以及常用的控制结构,包括条件、循环、函数等,最后介绍列表推断、Lambda 表达式、类和对象等数据科学中常用的 Python 语法。在此基础上,还会从读取和写入文本文件及 csv 文件、正则表达式在 Python 中的使用以及简单的词频统计等方面介绍 Python 处理字符串的方法。
第 7 讲 为 Python 爬虫专题。首先介绍如何结合 BeautifulSoup、正则表达式等对 HTML 进行解析,提取所需要的有用信息。接着,介绍如何使用 Request、httpx 等工具发送请求,从而爬取静态页面以及简单的动态页面。最后,针对一些比较复杂的动态页面,介绍使用 Selenium 对网页进行动态渲染并进行爬取。此外,对于网站中经常遇到的反爬问题,我们还会介绍一些反爬的思路。最后,我们通过一个实际的综合案例介绍以上所有的技术是如何综合使用并建立一个实时更新的爬虫项目。
第 8 讲 这一讲主要介绍 Python 中的数值计算常用的包,包括使用 Numpy 处理向量、矩阵及其运算;使用 Pandas 整理数据;使用 Matplotlib 以及 Plotly 等工具进行画图等。这部分是进一步学习机器学习、文本分析等内容的重要工具。
第 9 讲 主要包括两部分。第一部分是机器学习的入门,主要介绍监督学习的基础知识、模型评价方法以及常用的避免过拟合的工具等等,在此基础之上,介绍决策树、随机森林、支持向量机、神经网络等常用的监督学习方法,在此基础上,介绍机器学习方法如何与计量经济学相结合,完成回归分析、因果推断等计量经济学的数据分析工作。
第 10 讲 主要包括文本分析的初步知识,如中文分词、词向量表达、词嵌入等技术。在此基础上,介绍文本分类、情感分析等分析方法。这一部分主要介绍自然语言处理的一些常用方法,如词嵌入 (embedding) 的常用方法 word2vec、使用词袋、TF-IDF 等方法计算文本相似性以及话题模型等,最后将对最新的基于神经网络的自然语言处理工具做一个简单的介绍。
第 1 文本分析概述 (3 小时)
在大数据时代,大量有价值的信息以非结构化文本数据格式存储于互联网网页或者各类
Word
文档中,有效利用这些信息的关键是寻找一种快速有效的方法对文本数据进行爬取和清洗,进而利用相关方法进行文本分析。
为什么选择 R
? 其作为自由、免费、开源的软件,是用于统计计算和统计制图的一种有力工具。不管是在学术界还是业界,使用群体均非常庞大。根据 TIOBE
编程社区指数, 2022 年 2 月份数据显示,R
软件排名第 13 位。
R
语言从 2000 年 2 月份的 1.0.0 版本发展到 2021 年 11 月份的 4.1.1 版本,目前大小为 86 M。刚开始接触 R 语言的学员经常有这样的一个疑问:为什么 R 体积小,功能却如此多?
R
语言和 Python
相似,用户们开发了大量的外部包 (18933 个,截止 2022.02.12),被广泛应用于 网页爬虫、数据挖掘、机器学习、数据可视化、计量经济学和空间统计等领域。其运行方式是,核心包提供了基础平台,而大量的外部包可「按需索取」,具有极大的灵活性和扩展性。
R
语言相遇
if
、for
、while
等
第 2 讲 文本清洗与正则表达式 (3 小时)
与结构化数据不同,文本数据显得很不“友好”,在使用之前需要进行一系列预处理,从复杂文本中抽取有用信息。这其中就包括文本定位、文本匹配、文本抽取等操作。但是,在进行这些操作之前需要定义具体的规则,如阿拉伯数字
0-9
、小写字母a-z
、小写元音字母aeiou
等如何表示,这就是正则表达式语法。
例如:在2021 年第三季度报告(A 股) 中如何快速抽取客户存款总额和客户贷款总额? 又如,在王分棉等 (2021, 中国工业经济) 一文中,如何从豆瓣电影中抽取每一部电影的评分?通过此次讲解,力争使学员能够系统掌握正则表达式的语法,并且能够独立进行文本信息的提取。
第 3 讲 网络爬虫原理与
R
实例 (3 小时)
网络爬虫是将呈现在网页上以非结构格式存储的数据转化为结构化数据的技术,中间涉及到“抓取”、“解析”、“储存”三个阶段。
网络爬虫可以分为静态网页和动态网页爬虫。静态网页就是当打开一个网页,可以直接看到想抓取的数据,网址固定后,页面显示的数据也是固定的,如果要加载更多的数据,必须跳转到其他网址。动态网页就是想要爬取的内容不在源代码中,网址固定后,页面显示的数据并非固定的,通过“下拉”、点击“下一页”、点击“更多”等,以此加载更多数据。
对于静态网页或者动态网页渲染后,可以在源代码中看到数据,一种方法是利用第 2 讲知识,下载页面后利用正则表达式进行清洗,过程较为复杂;另一种方法是利用 R
中一些现成的包,如 rvest
提供一套较为完整的数据抓取方案,配合SelectorGadget
,可快速实现网页爬虫。
R
实例
第 4 讲 基于文本语义分析的主题提取和变量构造 (3 小时)
现如今,大量的信息以文本、图片、表格等形式存贮于各类文档 (txt, word, pdf
) 中。
例如:年报问询函作为监管机构监督上市公司信息披露的重要机制,其是否具有信息含量?张俊生等(2018) 研究公司是否被交易所发布年报问询函(被问询为 1,否则为 0)对公司股价崩盘风险的影响。陈运森等(2018) 研究问询函特征 (问询函问题数量、问询函的问题内容等、公司是否回函)的短期市场反应。相似的研究还有陈运森等 (2019, 管理世界)、李晓溪等 (2019, 经济研究)。
又如,上市公司年报是否具有信息含量?李哲 (2018) 从公司年报和独立社会责任报告中抓取环境战略信息和环境行动信息相关词条,以词条出现次数作为环境信息披露的频数,考察环境信息披露对交易者和监管者行为的影响。李哲等 (2022, 财经研究)在公司年报中抓取有关环境规划和环境行动的词频数,作为企业环境责任表现“言”和“行”的度量。
除了上述形式,一些数据以表格形式存贮在文档中,如何进行有效提取尤为重要。例如,论文附录中的表格数据提取。
PDF
表格数据提取与清洗
第 5 讲 Python 基础 (3 小时)
这一讲主要目标是在短时间内对 Python 的使用有一个初步的了解。Python 与 R、Stata 相比最大的区别在于,Python 是一门通用编程语言而非统计语言,所以在实际编程中很多时候需要以计算机语言的思想进行,因而不管从语法层面还是编程技巧、思想、习惯方面,与 Stata、R 等有较大区别。
在这一讲,我们先从最基础的数据结构入手,介绍 Python 的基础语法,同时包括文本文件、csv 文件等的读取操作等。
第 6 讲 Python 使用进阶 (3 小时)
作为一门编程语言,“抽象”是最强大也是最难理解的概念,可以说现代编程语言都是建立在一定程度上的“抽象”的基础上的,没有“抽象”,编程将会异常复杂且难以调试。
在这一讲,我们主要介绍 Python 的两种抽象方式:函数和对象。前者将特定的功能模块抽象化,后者将具有属性、行为的组件抽象化,这些都是接下来使用 Python 进行爬虫、数据分析的基础。
第 7 讲 Python 爬虫专题 (3 小时)
由于 Python 是一门通用编程语言,同时是一门胶水语言,其巨大的灵活性使其能够处理各种爬虫上遇到的疑难问题,然而也意味着使用 Python 进行爬虫程序的编写也尤其独特的困难。
在前序课程对 HTML、HTTP 等有了初步了解后,本节主要介绍完成一个爬虫的标准流程:使用 request/httpx 发送 http 请求、使用 BeautifulSoup 或者正则表达式解析 HTML 并获得需要的关键信息,最终进行存储。此外,还将介绍 Selenium 爬取动态页面的方法,以及常见的反爬方法。
最后,作为综合实例,我们介绍两个爬虫的实际应用:财经专业词汇词典爬取、上市公司公告爬取。
第 8 讲 Python 中的数值计算 (3 小时)
由于 Python 不是专门的统计软件,所以没有原生的数据存储、处理的工具,也没有进行科学计算的原生工具,为此,Numpy/Scipy/Pandas 等工具应运而生,解决了 Python 进行数据分析的基础设施建设问题。
这一讲在 Python 的基础语法基础上,继续介绍如何在 Python 中进行简单的科学计算和数据处理,并简要介绍 Python 中图表的制作。这一节的内容是后续机器学习、文本分析的基础。
第 9 讲 机器学习初步 (3 小时)
随着大数据的发展,机器学习的应用已经拓展到了社会经济的方方面面,而在学术领域,机器学习方法也被逐步应用到经济学、社会学等的研究中。
这一节主要从机器学习的基础入手,讲解机器学习的目标以及所面临的关键问题,并区分监督学习和无监督学习对机器学习做个全面的介绍,并展示如何使用 scikit-learn 进行机器学习模型的训练。此外,我们还将简要介绍机器学习与计量经济学方法的结合,如因果树、Double machine learning 以及工具变量中 Lasso 等方法的应用。
第 10 讲 文本分析 (3 小时)
得益于丰富的软件包和灵活的语法,Python 对于文本的处理是非常高效且灵活的。
本节将介绍常见的文本分析方法在 Python 中的实现。结合 Python 强大的文本分析工具,如 NLTK、Jieba 等工具,结合 Pandas、Nump 以及 Scikit-learn 等工具完成文本词嵌入、文本相似度计算、文本分类、情感分析等不同的文本分析任务。
报名链接: http://junquan18903405450.mikecrm.com/4EAq2yM
或 长按/扫描二维码报名:
方式 1:对公转账
方式 2:微信扫码支付
温馨提示: 微信转账时,请务必在「添加备注」栏填写「汇款人姓名-单位」信息。
说明和要求
扫码填写助教申请资料: