![[中英对照] 基于 Python 与数据框的语料库语言学编程](/storage/uploads/4407_7bc4bce7-99cf-473d-be6b-02748b8d412d.jpg)
资源介绍
(双语对照版电子书)
本书共分为 5 个主要章节及结论与参考文献部分,各章节逻辑清晰、层层递进,构建了完整的语料库语言学编程知识体系。
(一)数据框语料库(第 1 章)
本章开篇明义,介绍了数据框语料库的定义与优势。数据框语料库是将语言数据存储在 “少列多行” 的表格中,每一行对应一个文本中的一个词元,列则存储词元本身及相关元数据(如词性标注、文本 ID、说话人 / 作者 ID 等)。这种结构能极大简化语料库语言学任务的编程流程,例如快速创建索引、查找搭配词列表、计算词汇频率等。
同时,本章重点介绍了处理数据框的关键工具 ——Python 的 Pandas 库。由于 Python 本身没有专门用于表格数据操作的内置数据类型,Pandas 库便成为了高效处理数据框的核心工具,书中后续所有数据处理操作均基于该库展开。此外,本章还对书中代码格式进行了说明,如关键词、方法、函数等采用等宽字体,以区分代码元素与描述性语言。
(二)语料库语言学 Python 基础(第 2 章)
本章围绕 Python 语言基础展开,聚焦于文本数据处理相关的知识点,为后续数据框操作奠定基础。内容涵盖 Python 的安装步骤(包括安装解释器及配置系统路径,建议搭配 PyCharm、Spyder 等集成开发环境)、版本兼容性(书中代码适用于 Python 3.11 及以上版本)以及 IDLE(Python 自带的集成开发与学习环境)的使用方法。
在核心知识点方面,本章详细讲解了变量(变量命名规则、赋值方式)、数据类型(整数 int、浮点数 float、字符 char、字符串 str、列表 list、字典 dict 等,及其转换方法)、方法与属性(如字符串的 count () 方法、整数的 denominator 属性)、函数(函数的调用、定义与返回值)、列表与字典操作(列表的分割、拼接、元素添加与删除,字典的键值对存储、查找与修改)、循环与条件判断(for 循环、if-else 条件语句)以及列表推导式与字典推导式等。这些知识点均结合语料库语言学场景举例说明,例如通过列表推导式快速筛选文本中的词元,通过字典存储词频统计结果等。
(三)数据框操作(第 3 章)
本章是本书的技术核心之一,系统介绍了 Pandas 库中 DataFrame 和 Series 两种关键数据类型,以及数据框的加载、查看、保存、计数、分组、筛选等核心操作方法。
DataFrame 可理解为 “表格”,包含多个 Series(“列”);Series 则是一维数组,类似列表但更高效,支持向量运算,且每个值都有对应的索引。本章首先介绍了 Pandas 与 NumPy 库的安装方法(通过 Python 的 pip 包管理器安装,Pandas 会自动安装依赖的 NumPy 库,NumPy 为高效的数学运算提供支持)。
随后,详细讲解了数据框的基本操作:加载数据(如通过 pd.read_pickle () 读取 pickle 格式的语料库文件)、查看数据(通过 shape 属性查看数据框维度,head ()/tail () 方法查看前 / 后 n 行数据)、数据类型处理(重点介绍了 category 数据类型,该类型通过建立值与整数键的映射,大幅减少内存占用,提升排序、搜索等操作的效率,尤其适用于词性标注、文件名等重复值较多的列)。
此外,本章还深入介绍了数据框的核心分析方法,包括:
计数操作:使用 value_counts () 方法统计词元频率,并可通过 normalize 参数实现频率归一化,便于跨语料库比较;
范围计算:借助 groupby () 方法按指定列分组,结合 nunique () 方法计算词元在文本中的出现范围(即出现词元的文本数量);
索引与筛选:通过 loc 属性实现行的精准定位,支持单条件、多条件(使用 & 表示 “且”、| 表示 “或”、~ 表示 “非”)筛选,例如筛选出特定词元且属于特定语域的行;
移位操作:利用 shift () 方法实现数据框的前后移位,用于查找目标词元前后的词元,如找出紧跟人称代词后的词;
模糊匹配与正则表达式:通过 str 模块的 startswith ()、endswith ()、contains () 方法实现词元的模糊筛选,支持正则表达式,可灵活查找符合特定模式的词元(如以 “un” 开头、以 “ing” 结尾的词);
多词序列查找:结合 shift () 与 str.cat () 方法,实现多词序列(如 “i used to”“on the * hand”)的查找与分析,为后续词汇束分析奠定基础;
上下文窗口构建:通过 Python 的 range 类型构建目标词元的上下文窗口,实现类似 “关键词语境”(Keyword in Context)的分析效果,可查看目标词元前后指定数量的词元,辅助语料分析。
(四)常见语料库语言学任务算法(第 4 章)
本章是本书的实践核心,针对 5 类常见的语料库语言学任务,提供了完整的算法实现,每个算法均包含目标输出、输入条件及详细步骤,且兼顾语言学分析逻辑与编程技术要点。
创建索引(4.2 节):该算法旨在找出一个或多个目标词 / 语言特征的所有实例,并以垂直格式呈现其上下文(指定数量的前后词元)。输入包括语料库数据框、目标词元列表(如语义相关的 “fill”“pour”“load”)及上下文窗口大小(左侧 L 个词元、右侧 R 个词元)。算法步骤为:加载语料库与目标词元,提取目标词元所在行的索引,构建每个索引的上下文窗口,将上下文窗口中的词元整理为新的数据框,并重命名列以体现词元与目标词元的距离,最后导出为 Excel 表格。
词汇束分析(4.3 节):词汇束是指出现频率高于特定阈值的重复多词序列(如每百万词出现 40 次以上)。本章算法参考经典研究,将词汇束定义为 “在至少 5 个文本中,每百万词出现 40 次以上的 4 个词汇词序列”(不含标点),并以 “访谈” 语域为例展开分析。算法步骤包括:加载语料库并筛选目标语域文本,设置频率、范围阈值及标点正则表达式,添加 4 词序列列到语料库,计算 4 词序列的频率(归一化到每百万词)与文本范围,过滤不符合条件的序列(含标点、频率 / 范围不达标),最后排序并导出结果。
搭配词查找(4.4 节):搭配词是指与目标词(节点词)共现频率高于预期的词。本章采用 LogDice(可跨语料库比较的搭配强度度量指标)计算搭配强度,以 “misinformation”(虚假信息)在新闻语域中的搭配词分析为例。算法步骤为:加载语料库并筛选目标语域,设置节点词、上下文窗口大小及频率阈值,计算所有词元的语料库频率,提取节点词索引并构建上下文窗口,统计上下文窗口中词元的共现频率,根据公式计算 LogDice 值,最后过滤低频率词并排序导出。
关键词分析(4.5 节):关键词是指在焦点语料库中比在参考语料库中更突出的词。本章采用 “文本分布关键词度”(TDK)方法,通过计算对数似然比(LLR)衡量词的突出程度。算法步骤包括:导入数学计算相关库,加载语料库并过滤标点,定义 LLR 计算函数,构建焦点语料库(如新闻语域)与参考语料库(其他语域),计算词元在两个语料库中的文本范围,处理零值(将 0 替换为 0.5 以避免对数计算错误),应用 LLR 函数计算每个词元的关键词度,过滤低 LLR 值(如小于 3.84,对应 p<0.05 的显著性水平)并排序导出。
关键特征分析(4.6 节):该分析聚焦于词汇 - 语法特征,通过比较两个语料库中语法特征的频率,识别具有显著差异的关键特征。本章以体育报道语域与其他语域的比较为例,采用科恩 d 值(标准化均值差)衡量特征的关键程度。算法步骤为:导入相关库,定义科恩 d 值计算函数,加载语料库并过滤标点,构建 “特征 - 文本” 频率数据框(统计 11 类语法特征,如第三人称代词、过去时、被动语态等在各文本中的出现次数),将频率归一化到每千词,分割出体育报道与其他语域的特征数据,计算各特征的科恩 d 值,过滤低绝对值(如小于 0.2)的特征并排序导出。
(五)创建数据框语料库(第 5 章)
本章解决了语料库来源问题,介绍了如何从原始文本文件创建数据框语料库,核心工具是用于自然语言处理的 spaCy 库(用于词元化、词性标注和词形还原)。
首先,本章详细说明了 spaCy 库的安装步骤(通过 pip 安装 spaCy 及对应的语言模型,如英文的 en_core_web_sm 模型)及基本使用方法,包括加载语言模型、处理文本生成文档对象、提取词元的文本、词性标注、词形还原等信息。
随后,本章提供了完整的语料库创建算法,以美国国家语料库(OANC)的开放部分为例,步骤如下:导入所需库与函数,设置语料库文件路径,加载 spaCy 语言模型,创建空数据框并保存为临时 CSV 文件,获取目录下所有文本文件路径(利用 os 模块的 walk () 函数遍历嵌套目录,筛选.txt 文件),遍历每个文本文件(打开并读取文本内容,使用 spaCy 处理文本,提取词元、小写形式、词形还原、词性标注等信息,构建单文本数据框并追加到临时 CSV 文件,删除单文本数据框以释放内存),最后读取临时 CSV 文件,将列数据类型转换为 category 以优化内存,保存为 pickle 格式文件并删除临时 CSV 文件。