4、文本预处理基础:分词、去停用词、词形还原、词干提取、正则表达式清洗金融文本
金融文本是自然语言处理(NLP)在金融领域落地时最典型、也最具挑战性的数据形态。无论是上市公司年报、券商研报、财经新闻、股吧评论,还是监管公告、信贷审批意见,原始文本中往往夹杂着大量噪声:HTML标签、特殊符号、数字单位、中英文混排、时态与复数变化、停用词干扰等。如果不对这些文本进行系统化预处理,后续的向量化、情感分析、主题建模、实体识别等任务都会受到严重干扰。本章围绕金融文本预处理的核心链路——正则表达式清洗、分词、去停用词、词干提取与词形还原——展开讲解,并结合金融场景给出可落地的操作流程与案例拆解。
上图展示了金融文本预处理的标准链路。需要特别强调的是,金融场景下预处理并非“一刀切”的流水线,而是需要根据下游任务(情感分析、信息抽取、文本分类等)灵活调整。例如,在情感分析中,“不看好”中的“不”字是核心情感词,不能简单归为停用词;在信贷审批文本中,“逾期90天”中的数字“90”具有关键语义,不能直接删除。因此,预处理策略必须结合业务语义进行定制。
4.1 正则表达式清洗:金融文本的第一道防线
核心原理
正则表达式(Regular Expression)是一种基于模式匹配的文本处理技术,通过定义字符模式来识别、提取或替换特定文本片段。在金融文本中,正则清洗主要解决四类问题:噪声字符去除(HTML标签、URL、emoji、特殊符号)、格式统一(日期格式、数字格式、货币单位)、敏感信息脱敏(身份证号、手机号、银行卡号)、无用内容过滤(版权声明、免责条款、表格乱码)。
操作流程与常用模式
| 清洗目标 | 正则模式示例 | 说明 |
|---|---|---|
| HTML标签 | <[^>]+> | 匹配所有尖括号包裹的内容 |
| URL链接 | https?://\S+ | 匹配http或https开头的链接 |
| 特殊符号 | [^\w\s\u4e00-\u9fa5] | 保留中英文、数字、空格,去除其他符号 |
| 多余空白 | \s+ | 将多个空白字符压缩为一个空格 |
| 日期统一 | (\d{4})年(\d{1,2})月(\d{1,2})日 | 将中文日期转为标准格式 |
| 手机号脱敏 | (1[3-9]\d)\d{4}(\d{4}) | 保留前3后4,中间用*替换 |
案例拆解:清洗一份上市公司公告
假设我们获取到一段原始公告文本:
【公告】XX科技2024年年度报告摘要\n
来源:巨潮资讯网 发布时间:2024-03-28 18:30:00\n
本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏。\n
联系电话:010-88886666,邮箱:ir@xxtech.com.cn\n
公司实现营业收入1,234,567,890.12元,同比增长15.3%;净利润987,654,321.45元,同比下降2.7%。\n
<div class="footer">版权声明:本公告仅供参考,不构成投资建议。</div>
清洗步骤与结果如下:
- 去除HTML标签:使用
<[^>]+>删除<div class="footer">和</div>。 - 去除URL和邮箱:使用
\S+@\S+删除邮箱,使用https?://\S+删除URL。 - 去除特殊符号:使用
[^\w\s\u4e00-\u9fa5]删除冒号、分号、括号等,但保留数字中的逗号和点号需要额外处理。 - 数字格式统一:将
1,234,567,890.12中的逗号去除,转为1234567890.12,便于后续数值提取。 - 去除停用段落:根据业务规则,删除“版权声明”“免责条款”等固定模板内容。
常见误区
- 过度清洗:将“%”和“.”等符号全部删除,导致“15.3%”变成“153”,语义完全改变。
- 忽略中文标点:中文文本中的“,”“。”与英文逗号句号编码不同,需要单独处理。
- 正则性能陷阱:在超长文本上使用回溯量词(如
.*)可能导致性能急剧下降,应使用非贪婪模式或原子组。
4.2 分词:中英文金融文本的切分艺术
核心原理
分词是将连续的文本序列切分为独立的词语单元。英文文本天然以空格分隔,但存在时态、复数、所有格等变形;中文文本则没有天然分隔符,需要借助算法进行切分。金融领域的分词难点在于:专业术语识别(如“量化宽松”“不良贷款率”)、新词发现(如“元宇宙概念股”)、歧义消解(如“中国/人民银行”vs“中国人/民银行”)。
主流分词方法对比
| 方法 | 代表工具 | 优点 | 缺点 | 金融场景适用性 |
|---|---|---|---|---|
| 基于词典 | Jieba、HanLP | 速度快、易定制 | 对未登录词处理差 | 需加载金融词典 |
| 基于统计 | THULAC、LTP | 对新词有一定识别能力 | 训练数据依赖大 | 适合大规模语料 |
| 基于深度学习 | BERT分词、Lattice LSTM | 语义理解强、歧义消解好 | 计算资源消耗大 | 适合复杂语义场景 |
金融分词实战要点
- 加载金融领域自定义词典:将“市盈率”“市净率”“定向增发”“可转债”等术语加入自定义词典,避免被错误切分。
- 处理中英文混合:金融文本常出现“GDP增长”“CPI数据”等中英混排,需保留英文单词完整性。
- 数字与单位绑定:将“15.3%”作为一个整体,而非拆分为“15.3”和“%”。
4.3 去停用词:金融语境下的取舍之道
核心原理
停用词(Stop Words)指对文本语义贡献较小的高频词,如“的”“了”“是”“在”等。去除停用词可以降低特征维度、减少噪声。但金融场景中,停用词表需要定制化,不能直接套用通用停用词表。
金融停用词表的特殊考量
- 保留否定词:“不”“无”“非”等词在金融舆情中具有关键语义反转作用,如“不看好”“无风险”。
- 谨慎处理程度副词:“大幅”“小幅”“显著”等词在研报中表达程度差异,对情感强度分析有用。
- 删除金融模板词:“本公司”“董事会”“公告”等词在多数公告中高频出现,但区分度低,可考虑去除。
案例拆解:股吧评论的情感分析预处理
假设我们处理一条股吧评论:“这只股票今天涨了5个点,但是我觉得明天可能会回调,不打算加仓了。”如果使用通用停用词表去除“了”“的”“可能”,会得到“股票 今天 涨 5个点 但是 觉得 明天 回调 不 打算 加仓”。其中“不”被保留,但“但是”作为转折词也被保留,这对情感分析至关重要。若进一步使用金融定制停用词表,可去除“股票”“今天”等低信息词,保留“涨”“回调”“不”“加仓”等核心情感词。
4.4 词形还原与词干提取:英文金融文本的规范化
核心原理
词干提取(Stemming)和词形还原(Lemmatization)都用于将单词的变形形式归并为基本形式,但二者有本质区别:词干提取是启发式截断,如“trading”变为“trad”,“investing”变为“invest”;词形还原则基于词典和词性标注,将“trading”还原为“trade”,“better”还原为“good”。金融英文文本中,词形还原更受青睐,因为它保留了单词的真实语义。
对比分析
| 维度 | 词干提取(Porter/Snowball) | 词形还原(WordNet/Spacy) |
|---|---|---|
| 输出形式 | 可能不是合法单词 | 一定是词典中的原形 |
| 依赖资源 | 无需词典 | 需要词典和词性标注 |
| 处理速度 | 快 | 较慢 |
| 语义保真度 | 低 | 高 |
| 金融场景示例 | “overvalued”→“overvalu” | “overvalued”→“overvalue” |
金融场景选择建议
在构建金融知识图谱或信息抽取系统时,推荐使用词形还原,因为“defaulted”和“default”需要被映射到同一实体“default”。但在大规模文本检索场景中,词干提取的速度优势更明显,且对检索效果影响不大。实际项目中,可以混合使用:先词形还原,再对未命中词使用词干提取兜底。
4.5 金融文本预处理完整流程与质量评估
标准处理流水线
- 文本去噪:正则清洗HTML、URL、特殊符号、乱码。
- 编码统一:统一为UTF-8编码,处理全角/半角转换。
- 分句与分段:按句号、感叹号、问号分句,保留段落结构。
- 分词/Tokenize:中文用Jieba+金融词典,英文用Spacy或NLTK。
- 去停用词:使用三层定制停用词表。
- 词形还原/词干提取:英文文本执行,中文可跳过。
- 标准化:数字格式化、日期统一、货币单位转换。
- 质量抽检:随机抽取200条样本,人工检查清洗效果。
质量评估指标
| 指标 | 计算方式 | 金融场景合格标准 |
|---|---|---|
| 分词准确率 | 正确切分词语数/总词语数 | ≥95% |
| 清洗完整率 | 成功去除噪声字符数/应去除噪声总数 | ≥98% |
| 信息保留率 | 清洗后保留的关键信息数/原始关键信息总数 | ≥90% |
| 词形还原准确率 | 正确还原单词数/总还原单词数 | ≥92% |
总结复盘
金融文本预处理不是简单的“清洗+分词”机械操作,而是一个需要结合业务语义、下游任务和计算资源进行综合权衡的工程环节。核心要点可归纳为:正则清洗要保留关键数字与语义符号;分词要加载金融词典并处理中英混排;去停用词要定制化并保留否定词;词形还原优先于词干提取;每一步都要有质量评估与人工抽检机制。只有将预处理做到位,后续的金融NLP模型才能建立在干净、准确、语义完整的数据基础之上。