龚老师以“数据决定命运,算法改变未来”作为开场白,强调数据资产对社会科学家而言的重要性。龚老师借助几个经典案例,向大家展示了可供使用的大数据集。首先是全球在线新闻舆情大数据(GDELT),该数据库汇聚了世界所有国家的网络舆情信息,而且可以追溯到1979年。社会科学家可以借助它进行社会结构分析和社会变迁分析。龚老师认为,在未来的计算社会科学研究中,该数据库将成为一个重要的数据来源,使研究者能够实时掌握全球新闻动态。其次是推特(Twitter)数据。推特作为社交平台,优势在于拥有庞大的用户和他们上传的丰富内容,使研究者可以轻松地进行社交媒体研究。目前有三种获取推特数据的方式。第一种是基于关键词爬取。疫情期间,龚老师团队通过该方式获得了2000万用户的31亿条疫情相关推文。第二种是基于用户爬取。通过这种方式,可以获得特定用户的全部历史信息,进而实现生命历程分析等。第三种是采用推特公司提供的API调用服务。此外,研究者还可以分析脸谱网(Facebook)和新浪微博等社交媒体的大数据。
当研究者获得可供分析的大数据后,另一个挑战便是如何利用和开发大数据。将这个问题进一步细化便是社会科学家如何处理庞大的非结构化数据。龚老师指出,目前处理非结构化数据的常用方法有四种:正则表达式与关键词提取、实体抽取与情感分析、词向量、句向量。常有学员对于如何使用机器学习分析文本大数据感到困惑,龚老师提供了一个简明的框架。如果研究者没有自己的训练集,则可以调用他人的训练集API。如果研究者有自己的训练集,但不希望自己写代码,则可以使用各种自动化机器学习(AotoML)工具。如果既有自己的训练集,又拥有较高的代码写作水平,则可以考虑自己撰写代码进行处理和分析。
自然语言处理领域的一个重要方向是情感分析。龚老师指出,文本的情感计算有三个层次。最简单的是采用二分法,将人类感情划分为积极的和消极的。其次是使用LIWC(linguistic inquiry and word count)等情感词库技术区分出基本情绪,比如喜怒哀乐惊恐憎等。目前最常用的是通过Wordnet等情感词库挖掘人们的具体情绪。龚老师总结道,虽然情感是人类的一种非理性现象,但它也是可以被计算的。
近年来,在社会科学领域发展极快的一种内容分析方法是主题模型。它通过机器学习的方法,将经常共同出现的词汇分为若干组群,从而实现对文本主题的识别。相比于传统的人工编码,主题模型更为标准化和客观,而且往往能发掘出文本中未被发现的特征。龚老师指出,未来越来越多的社会科学研究将采用主题模型的方法,而非采用词表匹配的方式。因为主题模型能更好地体现人类语言的情境性。
然而,虽然相较于词表匹配,主题模型已经取得了明显进步,但仍然存在损失有效信息的问题。这一缺陷,在文本向量化计算方法出现后得到了有效弥补。用Universal Sentence Encoding、Bert等模型处理得到高维句向量后,便可以使用线性代数、图论中的经典算法对高维向量进行聚类、分类,或者通过余弦相似度等办法计算文本的相似性。总而言之,文本的向量化方法为文本大数据的计算开辟了广阔的通道,必将大幅度推动文本等非结构化数据的开发与分析,加速计算社会科学研究的推进。
另外,实体抽取方法在大数据文本分析中也有大量应用场景。实体抽取的意思是,给定一段文本,将其中的重要实体,比如机构、人名等,提取出来得到新的数据库。抽取完成后,研究者可以根据具体研究问题,进行实体分析,进而实现对非结构化数据中的结构性信息的提取。
课程内容结束后,线下和线上的学员展开了热烈讨论,并积极与龚老师展开提问和对话。至此,本次课程取得圆满成功。
本课程的“案例分析与实操练习”环节在当天下午展开。
来自武汉大学社会学院的助教老师王宇航使用百度飞桨AI Studio逐行讲解代码,随后对代码操作和运行的结果进行详细的示范和展示。首先介绍的是如何使用LDA函数计算四个主题中的关键词分布。助教老师详细地介绍了清洗数据、去除非英文内容、使用正则表达式构建停用词列表、统计各轴字词的重要程度、解决中文字体问题、绘制和展示词云等关键环节。
接着助教老师介绍了两种分别计算词向量和段落向量的算法模型。一是使用双层神经网络模型生成词向量的Word2vec,其原理是将文本中所有单词生成词典,用数字一对一地代替单词,生成一个大小为V*N的嵌入矩阵(其中V为单词个数,N为维度数)矩阵中每个单词都有若干个维度,假定每个单词都和其前后单词具有对应关系,从而能够用一个单词预测其他单词。实际操作中可以直接读取百度公司等训练好的模型,可视化后直接进行预测。之后助教还详细介绍了wv函数背后的原理,就是将要选出的单词和该单词的词向量添加至一个空列表,形成n维表达式之后进行降维,得到每个单词对应的x,y的值后进行作图。
二是Doc2vec模型,Word2vec是一个单词与另一个单词对应,而Doc2vec则增加了句子变量,获得词向量的同时获得句向量。操作中首先进行的仍然是文本向量空间可视化,获得句子的向量表达式,同样是n维表达式,接着使用同样的思路进行降维和聚类。助教还展示了聚类后的作图操作。
在案例展示上,助教老师实例化一个向量大小为100维的Doc2Vec模型,在训练语料库上迭代40次,并将最小字数设置为15,以便丢弃出现次数很少的单词。助教老师指出,在已发表的Paragraph Vector论文结果中,对于使用数十万到数百万的文档,典型的迭代次数为10-20次,因为更多的迭代次数需要更多的时间并将最终达到收益递减点,而对于小数据集(几百个文档)、短文档(几百个单词),则可以适当降低要求。建立词汇表的过程,本质上是model.wv.index_to_key从训练语料库中提取所有独特单词的列表,使用model.wv.get_vecattr()方法可以获得每个单词的附加属性。助教老师以单词“China”在训练语料库中出现次数的统计作为示范案例进行演示。最后,经过训练的模型通过将单词列表传递给model.infer_vector函数来推断任何文本片段的向量,然后可以通过余弦相似度将该向量与其他向量进行比较。
在三种降维软件的比较中,助教老师分析道,PCA时间最快,UMAP时间相对较慢,但是远快于tSNE。PCA更擅长保存全局结构,但细节容易模糊。tSNE则更多地保存细节信息,局限性体现在丢失大规模信息(集群间关系)、计算时间较慢以及无法有效地表示非常大的数据集。
最后,助教老师还向学员们简要介绍了如何在数据过大时使用工具进行分批读取、如何对杂乱的三维可视化进行重新编码等实操过程中会遇到的问题,并展示了相应的案例。讲解期间,学员对尚未掌握的地方进行提问并进行实操练习,练习过程中几位助教老师对有疑问的学员进行详细指导。此次“案例讲解与实操练习”课程在全场学员成功运行代码后的喜悦中圆满结束。