第11讲:文本挖掘与社交网络分析
文本挖掘与社交网络分析
本讲把文本数据和关系数据作为两类重要的非结构化数据来讨论。文本挖掘关注如何把自然语言材料转化为可计算的结构化表示,并进一步开展分类、聚类和主题发现;社交网络分析关注节点之间的关系结构,分析个体位置、群体凝聚、网络分割以及关系生成机制。
一、文本挖掘概述
在网络普及的环境中,网页、新闻、社交媒体、评论、邮件和报告中都包含大量文本信息。这些文本通常不是天然的表格数据,而是粗糙的非结构化数据。文本挖掘(text mining)就是以文本为对象,寻找其中隐含的信息结构、模型、模式和潜在知识的过程。
文本挖掘的一般流程包括:
- 获取文本数据;
- 对文本进行清洗、分词和标准化;
- 抽取词项并构造文本特征;
- 将文本转化为矩阵或向量;
- 进行分类、聚类、主题模型、情感分析等任务;
- 解释结果并回到具体问题场景。
例如,可以使用 Journal of Statistics Software 论文摘要数据,分析该期刊在一段时间内发表文章的主题演化。此类问题的关键不是单篇文章阅读,而是把大量摘要组织成可计算的语料库,再从整体上提炼主题结构。
二、文本数据获取与预处理
文本数据可来自网页抓取、开放数据集、平台接口、新闻数据库、社交媒体评论、问卷开放题回答等。网页文本抓取通常模拟访问 URL,获得 HTML、JSON 或其他结构化响应,再抽取正文、标题、日期、作者等字段。
获得文本后,需要进行预处理。常见步骤包括:
- 去除 HTML 标签、特殊符号、重复内容和无关字段;
- 统一大小写、日期格式、编码和标点;
- 删除停用词;
- 对英文进行词干抽取或词形还原;
- 对中文进行分词;
- 根据任务保留名词、动词、关键词或短语。
文本预处理的目标不是“清得越干净越好”,而是保留对研究问题有用的信息,同时减少无意义噪声。
三、文本特征表示
文本挖掘的首要任务是寻找合适的文本表示方式。表示方式既要包含足够信息以识别文本内容,又要把非结构化语言转化为结构化数据,便于计算机处理。
当文本被看作由字、词、词组或短语组成的集合时,这些基本单位称为词项(term)。在词袋假设下,文本内容主要由其包含的词项及词项出现情况决定,而暂时忽略词项顺序。基于这一假设,可以把文本表示为布尔矩阵、词频矩阵或加权词频矩阵。
常见表示方式包括:
- 布尔模型:词项是否在文档中出现,出现记为 1,不出现记为 0;
- 向量空间模型:文档被表示为词项权重向量;
- 概率模型:用概率分布描述文档、主题和词项之间的关系;
- 基于知识的表示模型:引入词典、知识图谱或语义资源。
其中布尔模型和向量空间模型最容易理解,计算成本也较低,因此是文本挖掘中的基础工具。
四、分词与特征抽取
特征抽取的核心是从文本中获得词项。英文文本常见流程是:
英文文档 -> 停用词处理 -> 词干抽取 -> 特征词集合
英文中同一词根可能对应不同形式,例如 connect、connected、connection、connects。词干抽取(stemming)或词形还原可以把这些形式归并到相近的规范形式,从而降低特征维度。
中文文本的流程通常是:
中文文档 -> 停用词处理 -> 词语切分 -> 特征词集合
中文分词比英文更复杂,因为中文词语之间没有天然空格。常见方法包括最大匹配法、最大概率法、最少分词法、基于 HMM 的分词、基于互现信息的分词、基于字符标注的方法和基于实例的分词方法。
最大匹配法
最大匹配法需要预先准备词表,并设置最大词长。分词时从文本中取候选子串,与词表匹配;匹配成功则切分为词,否则逐步缩短候选子串。
例如字符串“文本挖掘非常重要”,若词表中包含“文本挖掘”“非常”“重要”,最大匹配法可得到:
文本挖掘 / 非常 / 重要
该方法直观、实现简单,但依赖词表质量,对新词和歧义切分较敏感。
最大概率法
最大概率法把分词看成概率优化问题。设输入汉字串为:
\[Z = z_1z_2\cdots z_n\]候选词串为:
\[W = w_1w_2\cdots w_m\]自动分词的目标是寻找使条件概率最大的词串:
\[W = \arg\max_W P(W \mid Z)\]根据贝叶斯公式,并在给定词串时对应汉字串概率为 1 的简化下,可转化为:
\[W = \arg\max_W P(W)\]如果使用二元语法,可写为:
\[P(W)=\prod_{i=1}^{m}p(w_i \mid w_{i-1})\]其基本思想是找出所有可能切分路径,再选择概率最大的路径作为分词结果。
五、词项权重与 TF-IDF
设文本集中共有 $m$ 个词项,项集为:
\[F=\{f_1,f_2,\cdots,f_m\}\]文档 $d_i$ 中词项 $f_j$ 的权重记为 $w_{ij}$。若 $f_j$ 在 $d_i$ 中出现,则 $w_{ij}>0$;否则 $w_{ij}=0$。在布尔矩阵中,$w_{ij}\in{0,1}$;在词频矩阵中,$w_{ij}$ 可使用绝对词频或相对词频表示。
词频(Term Frequency, TF)表示词项在文档中出现的次数。倒排文档频率(Inverse Document Frequency, IDF)衡量某个词在整个文档集合中的稀有程度。常见形式为:
\[IDF(t)=\log_2\frac{N}{|\{d\in D:t\in d\}|}\]| 其中 $N$ 是文档总数,$ | {d\in D:t\in d} | $ 是包含词项 $t$ 的文档数。 |
TF-IDF 综合考虑词在单篇文档中的重要性和在语料库中的区分能力:
\[TFIDF(t,d)=\frac{TF(t,d)}{\sum_{f\in d}TF(f,d)}\times \log_2\frac{N}{|\{d\in D:t\in d\}|}\]高频但到处出现的词通常区分度不高;出现频率适中、但集中于少数文档的词往往更能代表主题。
六、文本特征选择
文本矩阵通常维度很高且非常稀疏。特征选择的目标是压缩维度、减少噪声、提高模型运行效率和预测表现。基本步骤为:
- 从全部原始特征开始;
- 计算每个特征的评估函数值;
- 选择分值较高的前 $k$ 个特征作为特征子集。
常见方法包括:
- 文档频率选择法:保留出现频率超过阈值的词项,删除过于稀有或信息量不足的词;
- 信息增益选择法:衡量某个词项出现与否对类别预测带来的信息增益;
- 交叉熵选择法:衡量词项出现后类别分布相对总体类别分布的变化;
- $\chi^2$ 统计方法:检验词项与类别之间是否存在显著关联。
信息增益常用于分类任务,其思想是比较特征出现前后的信息熵差异。交叉熵与信息增益类似,但更关注文档中实际出现的词。
七、文本分类、聚类与主题模型
当文本被表示为结构化矩阵后,就可以使用传统数据挖掘方法开展分析。
文本分类
文本分类需要带标签的训练文本集。一般步骤为:
- 获取训练文本并转化为特征向量;
- 选择分类方法并训练模型;
- 对待分类文本进行预测;
- 使用准确率、召回率、F1 值等指标评估模型。
常用方法包括 k 近邻、朴素贝叶斯、支持向量机、逻辑回归、随机森林和深度学习模型。文本分类常用于垃圾邮件识别、新闻分类、情感分析、舆情预警等场景。
文本聚类
文本聚类不需要预先给定类别标签,而是根据文本相似性自动发现分组。一般步骤为:
- 获取结构化文本特征矩阵;
- 选择距离或相似性度量;
- 使用系统聚类、K-means 等算法得到聚类结果;
- 解释每一类的关键词、主题和典型文本。
聚类适合探索性分析,但结果解释依赖研究者对语境和文本内容的理解。
LDA 主题模型
LDA(Latent Dirichlet Allocation)是一种经典主题模型。其基本思想是:一篇文档可以包含多个主题,每个主题又对应一组词语分布。设文档为:
\[w=(w_1,w_2,\cdots,w_N)\]其中每个词 $w_k$ 来自同一词汇表。LDA 的基本假设包括:
- 文档的主题数目是确定的;
- 文档中的主题服从多项式分布 $Multi(\theta)$;
- $\theta$ 服从狄利克雷分布 $Dirichlet(\alpha)$;
- 给定主题后,词语服从由参数 $\beta$ 控制的多项式分布。
词语生成过程可概括为:
- 对每个词位置选择主题 $z_k$;
- 在给定主题 $z_k$ 的条件下生成词语 $w_k$。
LDA 常用于新闻主题发现、论文摘要分析、评论主题提取和舆情议题识别。
八、自然语言处理的扩展
自然语言处理(Natural Language Processing, NLP)希望计算机能够理解、生成和处理人类语言。自然语言处理具有挑战性,原因包括:
- 语言规律复杂且存在大量例外;
- 词语和句子可以组合成高度复杂的表达;
- 语言是开放集合,新词和新表达不断出现;
- 语言理解依赖背景知识;
- 语言使用依赖具体语境。
NLP 常见任务包括分类、匹配、翻译、结构预测和序列决策。现代 NLP 通常结合统计机器学习、深度学习和大语言模型方法,但基本的文本表示、特征抽取和评估思路仍然是理解高级模型的基础。
社交网络分析
九、社交网络分析概述
社交网络分析(Social Network Analysis, SNA)是基于信息学、数学、社会学、管理学、心理学等多学科理论和方法,研究人类关系结构、行为特征和信息传播规律的一种可计算分析方法。
在线社交网络具有规模庞大、动态变化、匿名性、内容丰富等特点。以社交网站、博客、微博、短视频平台和论坛为对象的网络分析,已经成为理解社会结构、信息扩散、群体互动和平台治理的重要工具。
十、网络的基本概念
网络也称为图(Graph)。一个图可表示为有序三元组:
\[(V,E,\varphi)\]其中 $V$ 是非空顶点集,$E$ 是边集,$\varphi$ 是描述顶点之间关系的关联函数。$V$ 中的元素称为顶点(vertex),$E$ 中的元素称为边(edge)。
如果边没有方向,称为无向图;如果边有方向,称为有向图。在有向图中,一条边从起点指向终点,常用于表示关注、转发、引用、资金流向等有方向的关系。
网络常见矩阵表示包括:
- 邻接矩阵:记录任意两个节点之间是否存在边;
- 关联矩阵:记录节点与边之间的关联关系;
- 权重矩阵:记录关系强度,如互动次数、转发频次、合作次数等。
十一、节点度与中心性
节点度是网络中最基本的指标。无向图中,节点 $v$ 的度 $d_G(v)$ 是与其相连的边数。有向图中,度可分为入度和出度:入度表示指向该节点的边数,出度表示从该节点发出的边数。
中心性指标用于量化节点在网络中的“重要性”。不同中心性回答不同问题:
- 谁连接最多?
- 谁离其他节点更近?
- 谁控制更多路径?
- 谁与重要节点相连?
接近中心性
接近中心性强调一个节点与其他节点的距离。如果节点到其他节点都较近,则它处于较中心位置:
\[c_{CI}(v)=\frac{1}{\sum_{u\in V}Dist(v,u)}\]其中 $Dist(v,u)$ 表示节点 $v$ 与 $u$ 的最短路径距离。实际比较中常进行归一化处理。
介数中心性
介数中心性衡量节点在多大程度上位于其他节点之间的最短路径上。若一个节点经常出现在其他节点的通信路径中,它可能是信息流动的关键中介:
\[c_B(v)=\frac{\sigma(s,t\mid v)}{\sum_{u\in V}\sigma(s,t)}\]其中 $\sigma(s,t\mid v)$ 表示从 $s$ 到 $t$ 且经过 $v$ 的最短路径数,$\sigma(s,t)$ 表示 $s$ 与 $t$ 之间的最短路径总数。
特征向量中心性
特征向量中心性强调“连接到重要节点的节点也更重要”。常见形式为:
\[c_E(v)=\sum_{\{u,v\}\in E}c_E(u)\]该指标可表示为邻接矩阵的特征向量问题。PageRank 等算法也与这类思想密切相关。
十二、网络凝聚性与分割
网络凝聚性关注网络中节点如何形成紧密子群。常见概念包括团、极大团、$k$ 核、二元组、三元组、密度、聚类系数和社团。
团与 k 核
团(clique)是一类完全子图,子图内所有节点两两相连。极大团是不被任何更大团包含的团。由于现实网络通常较稀疏,大尺寸团并不常见,因此研究中也常使用更弱的凝聚性定义。
$k$ 核($k$-core)是网络中的一个最大子图,其中每个节点的度至少为 $k$。$k$ 核分解可以把网络像洋葱一样分层,识别核心区域和边缘区域。
密度
对于不存在多重边和自环的无向子图 $H=(V_H,E_H)$,密度定义为:
\[den(H)=\frac{|E_H|}{|V_H|(|V_H|-1)/2}\]| 密度取值在 0 到 1 之间,表示实际出现的边占所有可能边的比例。有向图中分母通常替换为 $ | V_H | ( | V_H | -1)$。 |
聚类系数
聚类系数刻画网络中的三角闭合程度。全局聚类系数可写为:
\[cl_r(G)=\frac{3\tau(G)}{\tau_3(G)}\]其中 $\tau(G)$ 是三角形个数,$\tau_3(G)$ 是连通三元组个数。该指标反映朋友的朋友是否也更可能成为朋友。
网络分割与社团发现
分割是把节点集合划分为若干不相交子集的过程。在网络分析中,分割常用于发现凝聚性子群,也称为社团发现(community detection)。
系统聚类可通过凝聚或分裂过程形成嵌套的网络分割层级。凝聚方法从单个节点开始逐步合并,分裂方法从整体网络开始逐步拆分,结果通常可以用树状图表示。
十三、网络图的统计模型
网络统计模型试图解释网络关系是如何生成的,或者判断观测网络是否具有某些不同于随机网络的结构特征。
经典随机图模型
经典随机图模型(Random Graph Model, RGM)通常规定在给定节点数和边数的图集合上,每个图具有相同概率。也可以使用 Erdős-Rényi 模型,设任意一对节点之间以概率 $p$ 独立连边。
随机图模型常作为基准模型:如果观测网络的聚类系数、路径长度、度分布或社团结构显著不同于随机图,就说明网络中可能存在非随机机制。
广义随机图模型
广义随机图模型在随机图基础上加入约束。例如固定度序列后,只在具有相同度序列的网络集合中均匀抽样。这样可以在保留节点度差异的同时,考察其他网络结构是否显著。
指数随机图模型
指数随机图模型(Exponential Random Graph Models, ERGMs)使用指数族分布描述随机邻接矩阵的联合分布。基本形式为:
\[P_\theta(Y=y)=\frac{1}{k}\exp\left(\sum_n \theta_n g_n(y)\right)\]其中 $g_n(y)$ 表示网络中的构型统计量,如边数、三角形数、互惠关系等;$\theta_n$ 表示对应结构倾向;$k$ 是归一化常数。ERGMs 可用于分析关系形成是否受到互惠、传递性、同质性等机制影响。
块模型与随机块模型
块模型假设网络节点属于若干类别,节点之间是否连边取决于其所属类别。若节点 $i$ 属于类别 $q$,节点 $j$ 属于类别 $r$,则边 $Y_{ij}$ 服从参数为 $\pi_{qr}$ 的伯努利分布。
随机块模型(Stochastic Block Model, SBM)进一步假设节点类别本身也是随机产生的。SBM 可用于发现潜在社团结构、角色结构和群体间连接模式。
十四、关联网络推断
关联网络关注如何基于节点属性之间的相似性或统计关联来推断边。设每个节点 $v$ 对应一个属性向量,节点 $i$ 与 $j$ 的相似性记为 $sim(i,j)$。如果相似性达到某种显著标准,就在两者之间建立边。
相关网络
对于连续属性,常用皮尔逊相关系数衡量节点间关联:
\[sim(i,j)=\rho_{ij}=\frac{\sigma_{ij}}{\sqrt{\sigma_{ii}\sigma_{jj}}}\]由非零相关关系定义的图称为协方差图或相关图。推断任务通常转化为大量相关系数显著性检验:
\[H_0:\rho=0,\qquad H_1:\rho\neq 0\]此时需要处理检验统计量选择、显著性评估和多重检验问题。
偏相关网络
相关不等于因果。两个节点高度相关,可能是直接影响,也可能是第三个节点共同作用的结果。偏相关通过控制其他变量,衡量两个节点之间更直接的关系。
在控制节点集合 $S_m$ 后,节点 $i$ 和 $j$ 的偏相关系数可表示为:
\[\rho_{ij\mid S_m}=\frac{\sigma_{ij\mid S_m}}{\sqrt{\sigma_{ii\mid S_m}\sigma_{jj\mid S_m}}}\]当研究目标是构建更接近直接关系的网络时,偏相关比普通相关更有解释价值。
高斯图模型与 Graphical Lasso
高斯图模型(Gaussian Graphical Model, GGM)假设节点属性服从多元正态分布,并使用在控制其他所有变量后的偏相关来定义边。若 $X_i$ 与 $X_j$ 在给定其他变量后条件独立,则二者之间没有边。
在正态假设下,偏相关可由协方差矩阵 $\Sigma$ 的逆矩阵 $\Omega=\Sigma^{-1}$ 表示:
\[\rho_{ij\mid V\backslash\{i,j\}}=\frac{w_{ij}}{\sqrt{w_{ii}w_{jj}}}\]其中 $w_{ij}$ 是精度矩阵 $\Omega$ 的第 $(i,j)$ 个元素。Graphical Lasso 通过惩罚项估计稀疏精度矩阵,适合高维数据下的网络结构推断。
十五、R 语言实现提示
文本挖掘可使用以下 R 包:
install.packages(c("tm", "XML", "SnowballC", "wordcloud", "topicmodels"))
install.packages("corpus.JSS.papers", repos = "http://datacube.wu.ac.at/", type = "source")
社交网络分析常用 igraph 包。例如可生成一个 100 个节点、连边概率为 0.05 的随机图:
library(igraph)
plot(erdos.renyi.game(100, 0.05))
实际分析中,还可以结合 tidytext、jiebaR、quanteda、ggraph、statnet、ergm、huge、glasso 等工具完成文本和网络建模。
十六、本讲小结
文本挖掘与社交网络分析分别处理“内容”和“关系”两类重要数据。文本挖掘的关键是把自然语言转化为词项、权重和主题等结构化表示;社交网络分析的关键是把行动者、对象或变量之间的关系转化为图结构,并通过中心性、凝聚性、分割和统计模型理解网络机制。
在传媒与社会科学研究中,两者经常结合使用:例如从社交媒体文本中提取议题和情感,再分析用户互动网络、信息扩散路径和意见群体结构。
