2. 文本预处理基础
公告新闻是一种高度格式化的文本类型,通常来自交易所披露、公司公告、监管文件或财经媒体。它的语言风格介于正式公文与新闻报道之间:既有固定套话,也有具体事实。要让机器从这类文本中抽取“谁、何时、发生了什么、涉及多少钱”,第一步不是建模,而是把原始字符串整理成可计算的语言单元。本节围绕中文分词、去停用词、词性标注和命名实体识别四个基础环节,说明它们在公告新闻事件抽取中的实际作用与常见陷阱。
一、核心原理:为什么中文预处理不能照搬英文
英文以空格自然切分词语,中文则连续书写,词与词之间没有显式边界。因此中文预处理的第一道关卡是分词。分词的本质是“把字符序列还原为词序列”,但“词”的界定本身依赖语境和领域。例如“上市公司”可以切成“上市/公司”,也可以整体保留;“回购股份”切成“回购/股份”更利于事件识别。公告新闻中大量出现公司名、证券代码、金额、日期、法规名称,这些单元如果被切碎,后续实体识别和关系抽取都会受损。
去停用词的目标是降低噪声。公告中“的、了、和、关于、现将、如下”等词出现频率极高,却几乎不携带事件信息。但停用词表不能一刀切:在“不排除”“未及时”“非公开发行”中,“不”“未”“非”是否定或限定信号,一旦删除,事件方向可能完全反转。词性标注为每个词赋予名词、动词、形容词等类别,帮助判断“收购”是动词事件触发词,“控股股东”是名词性实体。命名实体识别则进一步把词序列中的公司、人物、时间、金额、比例、证券代码等抽取为结构化槽位。
一句话理解四者关系:分词决定“切得对不对”,去停用词决定“留得准不准”,词性标注决定“用得稳不稳”,命名实体识别决定“抽得全不全”。四者不是孤立步骤,而是逐层为事件抽取提供候选证据。
二、方法流程:从原始公告到结构化候选
在实战中,建议把预处理组织为一条可复现的流水线,而不是在脚本里零散调用。典型流程如下:
- 文本清洗:去除 HTML 标签、多余空白、页眉页脚、PDF 转换产生的乱码和断行。
- 分句与分段:按句号、分号、换行切分,保留标题与正文的层级关系。
- 中文分词:使用通用分词器加载财经领域自定义词典,加入公司名、产品名、法规名。
- 去停用词:使用基础停用词表,但保留否定词、程度词、时间词和数量词。
- 词性标注:标记动词、名词、时间词等,为事件触发词识别提供特征。
- 命名实体识别:抽取公司、人物、时间、金额、比例、证券代码等实体。
- 输出候选:形成“实体 + 触发词 + 时间 + 金额”的候选事件记录,供后续分类或关系抽取使用。
下面是一个使用 Python 和 jieba 的简化示例,展示分词、词性标注与自定义词典的基本写法:
import jieba
import jieba.posseg as pseg
# 加载财经领域自定义词典,保证公司名和专有名词不被切碎
jieba.load_userdict("finance_dict.txt")
text = "2024年5月10日,甲公司发布公告,拟以自有资金回购股份不超过2亿元。"
# 精确模式分词
words = jieba.lcut(text)
print(words)
# 词性标注
for word, flag in pseg.cut(text):
print(word, flag)
运行后可能得到类似输出:
['2024年', '5月', '10日', ',', '甲公司', '发布', '公告', ',', '拟', '以', '自有', '资金', '回购', '股份', '不超过', '2亿元', '。']
2024年 t
5月 t
10日 t
甲公司 nr
发布 v
公告 n
拟 v
以 p
自有 v
资金 n
回购 v
股份 n
不超过 v
2亿元 m
。 x
可以看到,“甲公司”被识别为名词性实体,“回购”被标注为动词,成为潜在事件触发词,“2亿元”被标注为数量词。这些标签就是后续事件抽取的输入特征。
三、公告新闻中的典型场景与实体类型
公告新闻的事件类型相对集中,常见包括回购、增持、减持、并购、重组、业绩预告、分红、诉讼、担保、停牌、复牌等。不同事件关注的实体槽位不同,但预处理阶段需要统一识别以下几类对象:
| 实体类型 | 公告中的示例 | 在事件抽取中的作用 |
|---|---|---|
| 公司/机构 | 甲公司、某某证券、控股股东 | 事件主体或交易对手 |
| 人物 | 董事长张某、实际控制人李某 | 责任主体或关联方 |
| 时间 | 2024年5月10日、本公告日 | 事件发生或生效时间 |
| 金额 | 2亿元、不超过5000万元 | 交易规模或上限 |
| 比例 | 占总股本3%、不低于1% | 股权变动幅度 |
| 证券代码 | 600XXX、300XXX | 唯一标识标的公司 |
| 事件触发词 | 回购、增持、减持、收购 | 决定事件类型 |
这张清单可以直接转化为标注规范。例如,一条“回购”事件至少需要“公司 + 回购 + 金额/比例 + 时间”四个槽位;如果缺少金额,仍可保留事件,但置信度应降低。预处理阶段不必追求一次性抽全,而应保证候选实体不漏、不碎、不歧义。
四、误区与复盘:预处理做错,后面全错
误区一:停用词表越大越好。把“不”“未”“非”“无”删除,会把“未及时披露”变成“及时披露”,事件性质完全相反。建议维护一份“不可删除词表”,至少保留否定词、时间词、数量词和程度词。
误区二:分词器默认词典足够用。通用词典对“某某转债”“某某科技股份有限公司”往往切分不理想。公告新闻中公司名和产品名是核心实体,必须通过自定义词典和规则补丁保证完整性。
误区三:命名实体识别一次就能完美。公告中大量出现简称、代称和嵌套实体,例如“公司”“本公司”“控股子公司”。需要结合上下文和公司别名表做归一化,否则同一主体会被拆成多个 ID。
复盘时建议检查三个指标:一是实体召回率,看公司、金额、时间是否漏抽;二是实体完整率,看公司名是否被切碎;三是事件方向准确率,看否定词和限定词是否被误删。只有预处理阶段稳定,后续的事件分类、关系抽取和事件研究才不会建立在流沙之上。