基于主题词与信息熵编码的文本零水印算法*
2021-09-15张先国张佳慧蒋彤彤
张 娜 张 琨 张先国 张佳慧 蒋彤彤 方 悦
(1.南京理工大学计算机科学与工程学院 南京 210094)(2.中国科学技术大学网络空间安全学院 合肥 230022)(3.中电科网络空间安全研究院有限公司安全验证所 北京 100071)
1 引言
随着互联网的发展与数字媒体的普及,大量信息以电子文本的形式出现在网络上,其易复制、易修改的特性使得非法复制与盗版问题日趋严重,数字媒体的版权保护问题亟待解决。数字水印技术被公认为数字产品版权保护、认证的有效技术。目前针对电子文本类的数字水印研究成果[1],大多集中于嵌入式水印,主要包括字间距、行距的移动[2~3],字体颜色改变[4],添加不可见字符[5]等方式实现。而嵌入式水印需要对原文档进行一定的修改,使得水印的鲁棒性与不可感知性产生冲突,而不改变载体信息的零水印方案正好解决了这些问题。
零水印通过从载体文本中提取具有代表性的特征,来构造载体的水印。现有研究中大多使用文中关键词代表文章语义特性构造水印,却欠缺对文章组织结构的考虑;部分研究通过统计分析,找出文中关键句子的位置等特性来构造水印,却忽略了文章的语义信息。
本文在现有技术的基础上,提出了基于主题词抽取与文本信息熵[6]编码的零水印算法。算法通过主题词获取文本的语义特性,通过语句信息熵获取文本统计特性,融合后的水印信息高度提炼了文本特征,可作为文章的标识,且具有完全的隐蔽性,能够抵抗各种常见格式变换与内容攻击。为验证本文算法效果,在收集了大量文本的数据集的上进行了语句删减、同义词替换、句型转换等攻击实验,并选取了相似算法进行对比,结果显示本文算法易实现,时间复杂度低,且抗攻击性均优于现有算法。
2 研究现状及相关技术
2.1 文本零水印技术
零水印技术在不改变原文本信息的基础上,提取出能代表该文本的特征信息,如主题词、句,中心思想等来构造载体的水印。现有研究中大多使用文本的词语级特性,如:文献[7~8]通过统计不同词性的词语的频率信息,作为特征以构造水印;文献[9]通过随机选择词性标记串中对应的单词,构成水印序列;文献[10]通过获取汉字的拼音信息的频率统计构造文本水印,更详细地统计了全文字词,文献[11]针对散文类文章的特性,选取重要词汇及形容词比例等信息形成水印,但这些方法都仅考虑了词语本身,未考虑词语的位置、作用等。为将词语与文章联系起来,文献[12~13]统计了主谓语信息与不同语义角色的位置信息等生成水印;文献[14]通过指代消解技术,根据代词指代的原词语进行水印构造;以及通过词语间的关联词汇链[15]、关键词语的分布位置信息[16]生成文本水印等,此类算法通过关键词的上下文关系形成文本特征,却没有考虑到词语原本的语义信息。因此一些研究转向文本的语句级特性,如通过关键句子的位置信息[6,17]或段落中心句本身及文章逻辑关系[18]等信息构造水印,但当部分关键句子被删除时,水印也会被大幅度破坏,抗攻击性难以保障;文献[19]使用主题词、句子相关度等计算出关键句子,并用句子中的关键词语生成水印信息,此算法充分考虑了词语语义及文本统计特性,但不易于实现,时间复杂度极高。
因此,文本零水印技术虽取得了极大的发展,但仍存在许多亟待解决的问题。
2.2 文本主题词抽取
通常文本零水印技术中需要用到主题词抽取技术,本文在主题词权重计算时,使用了TF-IDF[20](词频-逆文件频率)算法。TF-IDF是用于资讯检索与文本挖掘的常用加权技术,用以评估某一字词对于一个文件集或一个语料库中某一份文件的重要程度。词频(TF)指的是某一个给定的词语在该文件中出现的频率。设单词w在全文中出现的次数为nw,全文词总数为N,则w的词频TFw可以表示为
词语权重的设置依赖于该词预测主题的能力,词语预测主题的能力越强,权重越大,反之越小。往往一些词频很高的通用词语对于主题作用不大,而一些频率较低的词,在所有文件集或语料库中,只有很少几篇文章中出现过,这样的词对文章主题的作用往往很大,因此引入逆向文件频率(IDF)的概念。
IDF是一个词语普遍重要性的度量。主要思想是:如果语料库中包含词语w的文档越少,则w的IDF越大,说明词语w具有很好的类别区分能力。设语料库总共包含Ndoc个文件,其中有Mw个文件包含词语w,则词语w的IDFw可以表示为
式(2)中分母加1是为了避免分母为0。某一文件内的高频率词语,以及该词语在整个文件集中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。计算公式为
2.3 同义词词林
基于自然语言技术的文本水印技术中,同义词词典是一个必不可少的工具。本文使用了哈工大信息检索研究室开发的《哈工大信息检索研究室同义词词林扩展版》。
同义词词林中把所有的词语按照树状的结构组织在一起,构成一个五层的树状结构,如图1所示。词林中的词语分成大、中、小三类,大类有12个,中类有97个,小类有1400个。每个小类里中含有若干个词群,这些词群又可以分成若干个原子词群。在树形结构中,每个原子词群中的词语语义上关联度最高,两个原子词群之间的距离越长,则属于这两个原子词群的词语之间关联度就越低。
图1 同义词词林结构
2.4 文本信息熵计算
信息熵是对信息的量化度量,表达了信源的不确定性。信息熵一般和信息度呈负相关,即信息度越高,信息熵越低。在文本分析领域,信息熵可以用来描述文本内容所含信息量的多少。信息熵的计算公式如下(其中信息熵用符号H表示,X为随机变量,p(xi)表示事件xi发生的概率,n表示所有可能发生事件的总数):
通常来说,需要计算文本中某个句子的信息熵的时候,式(4)同样适用,只是这时X表示需要求信息熵的句子,p(xi)指X中第i个词语在全文出现的频率(词频)。
3 算法描述
本文提出了一种基于主题词抽取与文本信息熵编码的中文文本水印算法。通过TF-IDF算法对文本的主题词进行抽取,并从同义词词林中获取主题词的编码,作为水印的第一部分。再通过主题词计算文本中每条语句的信息熵,并对信息熵进行统计分析,获取不同信息熵值区间内的语句频率,再对语句频率的统计结果进行信息编码,形成水印信息的第二部分。将主题词编码与信息熵编码进行拼接后进行加密,并添加时间戳信息,生成最终的文本水印,并发送至第三方机构进行注册保存。
当争议文本出现时,使用水印构造算法获取争议文本的水印信息。并通过水印相似度算法,计算争议文本的水印与第三方机构保存的原文本水印之间的相似度,当相似度超过阈值,则争议文本存在抄袭行为,否则不存在抄袭行为。
3.1 水印构造算法
3.1.1 水印构造算法设计
零水印构造的流程如图2所示,具体步骤如下。
图2 水印构造流程图
1)首先对文本进行预处理,包括去掉文本格式信息,并进行分句、分词、去除停用词等操作。
2)计算文本预处理后所有词的权重,并根据权重抽取文章的主题词。
3)根据《同义词词林(第二版)》,获取所有主题词的编码。
4)根据词频计算文章中每条语句的信息熵。
5)将[0,1]以某个差值进行等分,作为信息熵区间。统计各区间内包含的句子数目直方图,归一化处理后生成每个信息熵区间内的频率值。
6)将[0,1]以某个差值进行等分,生成频率区间,并定义一个编码表与之对应(如区间[0,0.1]对应字母a,则区间(0.1,0.2]对应字母b……)。依次判断步骤5)中生成的频率值所在的频率区间,并记录区间对应的编码字符,即为全文的信息熵编码。
7)将步骤3)与步骤5)中得到的主题词编码与信息熵编码融合后,进行加密,并加入时间戳传入第三方注册机构进行注册。
3.1.2 水印构造算法实现
1)获取主题词编码
文本预处理。首先读取文本、去除格式等干扰后获取其纯文本信息,并进行分句、去除停用词、分词等操作。
采用TF-IDF算法对预处理后的文本进行主题词抽取,依据式(3)计算词语权重,并排序,选出权重最高的n个词作为主题词,组成全文的主题词集:K={k1,k2,…,kn},其中ki为文本的第i个主题词。权重对应为W={w1,w2,…,wn},根据同义词词林获取所有主题词的编码,最终获取所有主题词编码集CW={cw1,cw2,…,cwn},其中cwi为文本的第i个主题词的编码。
2)获取信息熵编码
对预处理后的文本进行分句,获取文本句子集:T={t1,t2,…,tm},其中ti为文本分句后的第i个句子。对每条语句进行分词,并依据各词语的词频信息计算句子的信息熵,进而统计直方图,获得信息熵编码,具体步骤如下。
(1)依据式(4)获取所有语句的信息熵,并对熵值进行归一化处理。设第i条语句信息熵为hi,所有语句中信息熵最大的语句的信息熵为max H,信息熵最小的语句的信息熵为min H,则对hi的归一化公式为
(3)直方图归一化,计算纵坐标与语句总数的比值,结果为信息熵落在横轴对应区间内的语句的频率。
(4)获取(3)中每个区间对应的频率值,得到频率集F={f1,f2,…,ft}。之后以σ为步长,将[0,1]区间等分成s个子区间,建立s个子区间到编码表的一一映射,即每个子区间对应编码表中唯一的一个编码。
(5)依据s个子区间到编码表的映射关系对频率集F进行编码。根据F中每一个值fi,依据其处在的频率区间,获得对应的编码。将F中的频率转化为编码后,即获得信息熵编码集CF={cf1,cf2,…,cft}。
3)获取水印信息
将主题词编码集CW,与信息熵编码集CF进行拼接,生成文本的原始水印信息,并进行加密。将加密后的文本水印加入时间戳信息,传入第三方可信机构注册保存。
3.2 水印检测算法
3.2.1 水印检测算法设计
当出现文本版权争议时,先获取争议文本及原文本第三方注册的水印信息,再依据图3所示流程进行判定,具体步骤如下。
图3 水印检测过程
1)根据本文水印构造算法,获取有争议文本的主题词编码与信息熵编码。同时对第三方注册的文本水印信息进行解密,获取原文本的主题词编码与信息熵编码。
2)计算争议文本主题词编码和原文本的主题词编码之间的相似度。
3)计算争议文本信息熵编码和原文本的信息熵编码之间的相似度。
4)将步骤2)、3)的结果进行加权求和,作为最终水印相似度,将该值不低于预定的相似度阈值,则认为争议文本与原文本相似度过高,可能存在抄袭行为。
3.2.2 水印检测算法实现
1)当出现版权问题时,对第三方保存的水印信息进行解密,获取文本水印WM1,包括主题词编码CW1与信息熵编码CF1。
2)通过水印构造算法,获取有争议文本的水印信息WM2,包括主题词编码信息CW2与信息熵编码信息CF2。
3)计算CW1与CW2的相似度。设每个主题词编码包含n个编码,CW1和CW2编码相同的字符数为m,则主题词编码相似度为
4)计算信息熵编码。信息熵编码CF1和CF2的相似度为
其中xi、yi分别表示CF1、CF2中下标为i的字符的ASCII码(i∈{1,2,…,t},t为每个信息熵编码字符数)。
5)计算最终相似度。文本水印WM1和WM2总的相似度R(WM1,WM2)可以表示为
其中p和q分别表示主题词编码相似度和信息熵编码相似度在总相似度中的权重,p∈[0,1],q∈[0,1],且p+q=1。
6)版权判断,若最终相似度不低于相似度阈值ф,则争议文本存在抄袭嫌疑。
4 实验结果及性能分析
基于本文提出的算法,在Windows10系统下使用python语言进行开发实现。实验数据集为从搜狗实验室数据中随机获取的100篇新闻文章;从《朱自清文集》中随机获取的12篇散文;以及网络中随机获取的6篇小说与记叙文等。
4.1 相关参数值的确定
对信息熵划分间隔δ与频率划分间隔σ进行确定。取δ,σ区间为[0.01-0.1]进行实验,选取数据集中部分文章进行随机删减,计算删减后水印与原文本水印间相似度,部分结果如表1所示,δ,σ值均为0.05时,不同删减率下的文章(即相似文章)水印与原文章水印相似度最大。因此确定δ=0.05,σ=0.05。
表1 δ与σ在各删减率下对相似度的影响
4.2 抗攻击性试验
从文本删减攻击、同义词替换攻击以及句型转换攻击三个方面进行抗攻击性实验,其中相似度计算中主题词相似度权重p=0.5,信息熵编码相似度权重q=0.5。
为了综合评估算法的有效性,复现了相似中文零水印算法:文芳等人[6]与刘等人[19]提出的算法,并基于本文数据集进行了对比试验。
4.2.1 相似度阈值ф的确定
在搜狗实验室新闻数据中随机获取200篇文章,以两篇为一组,分别计算相似度,结果如图4所示。不同文章的相似度均不高于0.65,因此本文选取相似度阈值为ф=0.7。即相似度大于0.7则认为可能存在抄袭嫌疑。
图4 不同文章的水印相似度
4.2.2 文本删减攻击
通过随机删除特定比例的句子实现删减攻击。实验中删减率选取0.05~0.5,对文本进行删减,计算每篇文章删减后生成的水印,与原文本水印的相似度。通过对数据集中所有文本进行该操作后,以各删减率下,每篇文章与原文章的相似度的平均值作为实验结果。与文献[6]、文献[19]算法的对比试验结果如图5所示。本文算法在应对删减攻击时具有很强的稳定性。相似度-删减率曲线整体斜率最小,对同一文本的识别率最高。
图5 不同删减度下水印相似度结果对比
4.2.3 同义词替换攻击
从数据集中选取部分文章,并对每篇文章进行一定比例的同义词替换,来模拟同义词替换攻击。替换操作使用“飞鲁达”替换工具与人工修改相结合的方式。计算替换后文章的水印与原文本水印的相似度,结果如图6所示。
图6 同义词替换攻击下水印相似度结果对比
结果显示本文算法对于同义词替换攻击,具有很强的鲁棒性。这是由于本文考虑到同义词对水印的影响,主题词部分使用同义词词林进行编码,计算词频时也进行了同义词消歧。因此同义词替换攻击对主题词编码与信息熵编码影响都很小。
4.2.4 句型转换攻击
通过人工修改的方式,对实验文章进行了不同程度的句型转换,将句型转换后的文本水印与原文本水印对比,计算相似度,结果如图7所示,其中横坐标为句型转换率,纵坐标为句型转换后生成的水印与原文本的水印的相似度。
图7 句型转换攻击下水印相似度结果对比
结果显示,在不同程度的句型转换攻击下,本文算法都表现出了较好的性能和较强的稳定性。这是由于句型转换对词影响较小,对句长和句子中的词频影响也很小。因此在句型转换攻击下,本文算法与其他算法相比具有更好的鲁棒性。
4.3 性能分析
4.3.1 算法时间复杂度
本文算法在充分考虑并获取了能代表文本的特征的前提下,简单易实现。假设一篇文本总共有m个句子,其中平均每个句子有n个词语,计算每句话熵值的时间消耗为O(mn),则统计句长与熵值以及编码部分的的时间均为:O(m)。本文算法最终时间复杂度约为O(mn)。
文献[6]时间开销主要用于计算句子信息熵,时间复杂度为O(mn)。文献[19]的算法时间开销主要用于计算句子相关性上,该方法的时间复杂度约为O(m2n2)。
4.3.2 鲁棒性
本文提出的文本水印算法为零水印算法,因此具有完全的隐蔽性。且由于算法仅获取纯文本内容作为水印生成的原始信息,因此完全不受字移、行移、字体转换、颜色变换、重新编辑等攻击的影响,同样对于打印、扫描、截屏等攻击的影响具有抵抗性。对于改变文章内容的常规文本内容攻击,具有很强的抗攻击性。
5 结语
为解决电子文档的版权保护问题,本文结合自然语言处理技术,提出了一种新的中文文本零水印算法。通过提取主题词获取文本的语义特性。通过词频与语句长度计算全文语句信息熵,并对统计后的信息熵进行编码以获取文本的统计特性。相对于目前研究较多的以词语代表文本特征的方案,算法使用的句子特性更好地表示了文本特征,具有更高的准确性。实验结果显示本文提出的水印算法具有较好的鲁棒性。下一步的主要工作是研究如何获取更优的文本特征来表示文本,生成水印信息。