1. 引言
藏头诗是一种汉语诗歌的形式,最早起源于中国,其特点是每一行的开头字连起来可以读出一个人名、地名、话题或某种意义的词语。然而,在现代社会,藏头诗也被用于隐藏敏感信息或不当内容。随着社交媒体和网络论坛的兴起,这种形式的敏感词汇检测成为了内容监管的一项挑战。由于藏头诗的结构特殊性,传统的敏感词检测算法往往无法准确地识别其中的敏感内容。因此,研究一种能够有效识别藏头诗中敏感词的算法显得尤为重要。
现在藏头诗已经演变成多种形式:藏头、藏尾、藏中、藏角、斜梯等,本文主要研究五种藏匿位置的五言藏头诗如图1,目前缺少一种能够检测出藏头诗中隐匿敏感信息的方法。近些年在自然语言处理领域,基于深度学习的命名实体识别任务(Named Entity Recognition, NER)取得了重大突破,受此启发,本文提出了藏头诗敏感词检测的一种有效方法。本文通过大模型生成不同类型的藏头诗数据,将诗句中的敏感词作为实体进行标注构成实体识别数据集,提出了基于BiLSTM-CRF的藏头诗敏感词检测算法,通过在训练集上的学习,在测试集中表现出了很好的效果。

Figure 1. Five forms of five-character head-rhyme poems
图1. 五种形式的五言藏头诗
2. 相关工作
传统的敏感词过滤算法较为简单,主要是单模式匹配和多模式匹配,这种基于字符串的匹配方法能够快速识别出文中敏感词 [1] [2] [3] 。该类方法实现简单,但是扩展性不强,需要动态更新敏感词表。为此有学者对DFA算法进行改进提出了ST-DFA算法 [4] ,当敏感词库更新时可以实时更新决策树,但该方法对变体敏感词检测的准确率不高。这些方法都只能检测出文本中连续文字组成的敏感词,不适用藏头诗中由跨句文字组成的敏感词,并且计算比较复杂,检测时间较长。
由于传统检测算法在敏感词及其变体上的局限性,有学者开始将敏感词检测任务与命名实体检测任务相结合进行研究。文献 [5] 就安全漏洞领域提出了一种命名实体识别方法,文献 [6] [7] 提出了基于BiLSTM-CRF的专业领域命名实体识别模型,文献 [8] 采用了基于BERT-BiLSTM-CRF的模型进行敏感词及其变体识别。通过这些研究,本文先利用大语言模型生成诗歌数据,然后人工标注敏感词构成数据集,在此数据集上构建命名实体识别模型,为藏头诗敏感词检测提出了有效的解决方案。
3. 本文方法
3.1. BiLSTM模型
Hochreiter提出LSTM [9] 是为了解决传统的RNN在处理长序列时梯度消失或梯度爆炸问题。它通过门控制机制(包括遗忘门、输入门、输出门)来调节信息的流动,能够较好地保存长期依赖信息。计算公式如下:
(1)
式中:
表示时间步 的遗忘门、输入门和输出门的激活向量;
表示更新后的记忆元状态;
为时间t的隐状态;的W为权重矩阵;b为偏置量。
BiLSTM即双向长短时记忆网络(Bidirectional Long Short-Term Memory)在标准的LSTM网络上进行了扩展,通过将数据正向和反向输入两个独立的LSTM网络,然后将它们的信息整合,以此来提高对上下文的理解能力。BiLSTM的结构如图2所示。
对于一个给定的序列
,BiLSTM通过正向LSTM按顺序遍历序列,计算隐藏状态序列
,
,…,
。通过反向LSTM按逆序遍历序列,计算隐藏状态序列
,…,
,
。然后,对于序列中的每个时间步 ,BiSLTM的输出
是正向隐状态和反向隐状态的拼接。
(2)
接下来,BiLSTM的每个时间步输出 通常会通过全连接层,这些层可以学习如何基于BiLSTM层提取的特征来执行分类任务。在全连接层之后,会应用一个激活函数softmax,将全连接层的输出转换成概率分布对标签进行预测。
3.2. CRF模型
在本文中,我们采用条件随机场(CRF)模型来优化BiLSTM输出的实体识别标签,以获得巡检文本中的最佳实体标签序列。CRF模型 [10] 通过考虑输入序列 和其对应的标签序列Y之间的关系,定义了一个条件概率分布
,这里的 和 都是随机变量序列,假设X和Y等长,并且用序列
和
分别代表输入和标签数据。在随机变量对
上,CRF模型的构建依赖于特定的局部特征向量f以及与之相对应的权重向量
。每一个局部特征可以是一个状态特征
,或者是一个转移特征
。y和
表示标签序列中的元素,x表示输入的序列,而i指的是序列中的具体位置。
CRF模型利用全局特征向量来表达输入序列x和相应标签序列y之间的关系。全局特征向量是位置信息i上所有局部特征函数
的累加即:
(3)
基于此,CRF模型定义的标签序列y给定输入序列x的条件概率分布可以表述为:
(4)
其中,
是规范化因子,确保所有可能的上的概率总和为1,通过下式计算:
(5)
对于给定的输入序列x,最有可能的标签序列 可以通过最大化条件概率得到:
(6)
最后,通过维特比算法计算转移得分矩阵,可以找到具有最大条件概率的输出序列,实现标签序列的预测。
3.3. 敏感词检测模型
本文将藏头诗敏感词看成一种特殊的实体,利用命名实体识别技术可以有效识别出敏感词实体。对比传统的检测算法,该算法在处理规模和速度上均有明显优势。本文构建的BiLSTM + CRF模型如图3所示。模型大体分成三个部分:词嵌入模型、双向长短期记忆网络模型和条件随机场模型CRF。首先采用词嵌入方法将文字表示成高维向量,再利用BiLSTM模型对藏头诗正反双向的上下文语义进行理解,并捕获文本序列中跨句藏头词的依赖关系,最后由CRF模型根据上下文序列标签相关性输出最终的标记序列。

Figure 3. BiLSTM-CRF model framework
图3. BiLSTM-CRF模型框架
4. 实验
4.1. 数据集
由于藏头诗的敏感词检测属于新的研究方向,网络上没有现成的数据集。因为诗歌的复杂性很难靠自己撰写大量数据,而且含有敏感信息无法使用普通的诗歌生成工具。本文使用的语料库由大语言模型生成后经过人工筛选得到,然后通过程序对这些语料进行统一实体标注。因为诗句中的敏感词均由跨句文字构成,所以没有采用传统的命名实体标注体系,而是采用B1-B4的标签标注敏感词,用O标注非敏感无关字符,最终得到的数据集如图4所示。图中,标签B1代表敏感词的第一个字,B2代表敏感词的第二个字依此类推。数据集共包含1450首诗,将数据集按照8:1:1的比例划分为训练集、测试集和验证集。
4.2. 实验环境与评价指标
本文的实验环境为:linux操作系统、Python3.9、Pytorch 1.11.0。服务器CPU为Intel(R) Core(TM) i7-12700H,内存32 GB,GPU为RTX3070Ti。
为验证使用BiLSTM-CRF模型对敏感词识别的可行性和准确性,本文采用召回率R、准确率P和F1得分来评判模型的性能,各评价指标的计算方法如下:
(7)
(8)
(9)
其中TP (True Positives)是正确预测的正类数目,TN (True Negatives)是正确预测的负类数目,FP (False Positives)是错误预测为正类的负类数目,FN (False Negatives)是错误预测为负类的正类数目。
4.3. 实验结果
本文旨在评估BiLSTM-CRF模型在中文藏头诗中敏感词检测的性能。为了提升模型效果,反复训练最终将主要参数设置为:lstm_lr = 0.001,crf_lr = 0.1,epoches = 20,batch_size = 50。模型训练过程采用交叉熵损失函数和Adam优化函数。
根据上面设定的参数,模型的实验结果如表1所示。为了证明CRF的效果,本文在相同的数据集上分别训练了BiLSTM和BiLSTM-CRF模型。从结果来看BiLSTM-CRF的评估指标明显优于BiLSTM,这是因为BiLSTM虽然能捕获敏感词的跨句依赖关系,但是无法学到输出标签的约束条件。所以BiLSTM-CRF在处理藏头诗的上下文信息方面具有更强的能力,能更有效地识别和定位敏感词。
Table1. Comparison of different model results
表1. 不同模型结果比较
5. 结论
本文提出了一种BiLSTM-CRF模型,实现了对中文藏头诗中敏感词的检测。该方法是第一个将命名实体识别技术应用到中文藏头诗文本的敏感词检测领域,BiLSTM模型能根据目标实体自动提取文本序列特征,CRF模型可以学习到输出的标签之间的约束条件和依赖关系,实验展示了该模型在中文藏头诗敏感词检测任务中的准确性和有效性。
总体而言,本文为中文藏头诗的敏感词检测提供了一个强有力的工具,对于维护网络环境的健康与安全具有重要意义。随着文本形式的不断增加,藏匿敏感信息的方式越来越多而且更加隐晦难以发现,今后将继续改进模型和扩充语料库,逐步提升模型识别能力。