一种基于多音字的中文文本篡改检测水印算法

2011-09-04 06:09费文斌唐向宏王丽娜
关键词:多音字读音汉字

费文斌,唐向宏,张 宁,王丽娜

(杭州电子科技大学通信工程学院,浙江杭州310018)

0 引言

随着计算机技术的不断发展,与人们生活息息相关的数字产品已被广泛关注,盗版问题已经成了人们关心的焦点[1]。数字水印技术就是将特殊的不可见标记嵌入到数字媒体(图像、声音、文档和视频等)中,以保护原创作者对其作品的所有权。目前,对于数字产品的保护,图像、视频、音频的研究已经非常成熟,由于数字水印是利用载体本身大量的冗余信息实现水印的嵌入,而文本的冗余空间相对较小,所以对文本水印的研究相对较少。目前对于文本数字水印的研究主要有基于传统图像的文本水印算法[2]、基于格式的文本水印算法[3]、基于自然语言的文本水印算法[4]、以及基于文本特征的文本水印算法[5]等4类。本文将结合零水印嵌入原理,通过多音字来定位原始文本的内容,提取两个多音字之间的汉字以及多音字的读音特征来构造水印,探讨一种基于多音字的零水印算法。

1 文本水印基本原理

国家语委制定的《现代汉语通用字表》收录的7 000个汉字(内含2 500常用字、1 000次常用字)中有625个多音字,其中的326个是常用字,占多音字总数的52%[6]。本文将通过常用多音字定位原始文本的内容,提取两个多音字之间的汉字以及多音字的读音特征来构造零水印,其水印嵌入流程框图如图1所示。

图1 水印嵌入流程框图

1.1 水印嵌入算法

(1)对原始文本预处理:除去文本中符号,提取出文本中所有汉字标记T,找出T中的常用多音字D(i),i=1,2,…,k。

(2)分别记录两多音字D(i)与D(i+1)之间非多音汉字的个数,记为p1;根据汉字拼音表,将两多音字D(i)与D(i+1)之间的非多音汉字用汉字拼音表示,记录这组拼音字母个数,记为q1。例如:我省环保工作的先进单位。位于多音字“省”与“作”之间的汉字数为p1=3,相应的拼音字母为“huanbaogong”,q1=11。多音字用灰色表示。

(3)将p1和q1分别转化为8位二进制码,前后相连得到一个16位的二进制字符串A。例如,p1=3,q1=11,转换得到 A=[00000011 00001011]。

(4)记录多音字D(i)的读音数,记为p2;记录这个多音字读音的字母总数q2。例如:多音字“会”有3个读音,分别是huì/kuài,记读音数p2=2,读音的字母总数q2=7。

(5)将p2和q2分别转化为8位二进制码,前后相连得到一个16位的二进制字符串B。例如,p2=2,q2=7,转换得到B=[00000010 00000111]。将A与B按位异或,得到字符串C。

(6)重复(2)至(5)步,直到T结束,从而形成由两个多音字之间的汉字以及多音字的读音特征构成的二进制特征序列C。

(7)将所要嵌入的原始水印信息转化为16位二进制Unicode码W。

(8)水印的嵌入:将二进制序列C和W按以下规则比较,形成水印特征Q。1)C和W相对应的代码都为0,则Q的对应位也为0。2)C的代码为0,W相对应的代码为1,则Q的对应位为1。3)C的代码为1,W相对应的代码为0,则Q的对应位为2。4)C和W相对应的代码都为1,则Q的对应位也为3。

1.2 水印提取算法

水印的提取为嵌入的逆过程。按如下规则提取水印:(1)C’为0,Q的对应位为0,则W’相对应的位为0;(2)C’为0,Q的对应位为1,则W’相对应的位为1;(3)C’为1,Q的对应位为2,则W’相对应的位为0;(4)C’为1,Q的对应位为3,则W’相对应的位为1。当不满足以上的规则时,表明所对应的内容已被篡改,对篡改位置进行定位处理。

2 实验仿真与性能分析

为了验证本水印算法的性能,首先,在实验中对算法的抗文本格式转换、文本字体调整、删除空格、标点符号转换等常规文本操作的鲁棒性进行了仿真,仿真表明本算法对这些常规文本操作具有较强的鲁棒性。由于在构造水印时采用零水印,没有向原始文本中加入任何信息,所以所嵌入的水印是完全不可见的。同时,本算法在水印容量上也有较大的提高。

为更好的说明本算法的定位能力,下面仅给出部分仿真实验结果。如图2所示给出了一段含有140个字符的原始文本,其中常用多音字23个。因此,该文本的水印容量为22个汉字,能够嵌入的水印百分比(按汉字数)=15.714 2。仿真实验中所嵌入的原始水印信息如图3所示。

图2 原始文本

图3 原始水印信息

2.1 水印文本中增加汉字

在水印文本中增加汉字分增加的汉字含多音字和不含多音字两种,如图4所示,带单下划线表示增加的汉字。提取的水印信息如表1所示,与原始水印不同的地方用单下划线表示。

图4 增加汉字后的文本

表1 提取的水印信息

从表1可以看出被增加的汉字位于第7个多音字和第8个多音字之间,当增加含有多音字的文字时,提取的水印信息会相应的增加,而当增加不含多音字的文字时,提取的水印信息与原始水印信息数目保持相等,以下仿真结果类似。

2.2 水印文本中删除汉字

在水印文本中删除汉字也分删除的汉字含多音字和不含多音字两种,如图5所示,带波浪线标记为删除的汉字。提取的水印信息如表2所示。

图5 删除汉字后的文本

表2 提取的水印信息

2.3 水印文本中汉字的替换

替换水印文本中的汉字分为4种情况,如图6所示,带双下划线标记为被替换后的汉字。提取的水印信息如表3所示。

表3 提取的水印信息

从以上仿真实验结果可以看出,本算法能有效检测出水印文本内容是否被删除、增加和替换等操作,并能有效定位篡改的位置。由于仿真中,只采用了常用多音字,可以进一步完善本算法,采用全部的多音字作标志位,这样能使本算法在水印容量和定位精度上进一步得到提高。另外,在仿真实验中也对算法的虚检情况进行了仿真。采用零水印思想提出的算法尽管在不可见性和鲁棒性有其独特的优势,但也会产生虚检的问题。非作者作品经过零水印算法的检测被误判为该作者作品的概率,称为虚检概率。由于未对原始文本进行改变,当使用与原始文本内容完全不同的文本进行检测时,也能得到一定数量的水印信息,会产生虚检,因此对虚检的检测具有十分重要的实际意义。本文所指的虚检是指用已获取的水印信息去检验其它文本是否含有水印信息。在表4中给出了利用4段不同的文本检测的结果。虚检率定义为R/N,其中N为文本的水印容量,R为检测到正确的水印信息数。从表4可以看出,采用其它类似文本进行提取水印信息时,误检概率都小于0.10,能够有效防止误判情况的发生。

表4 虚检率

3 结束语

本文从汉字的一字多音出发,结合零水印的思想,提出了一种基于多音字的中文文本篡改检测水印算法。该算法采用两个多音字之间的汉字以及多音字的读音特征来构造水印特征,产生基于文本特征的零水印算法。仿真结果表明,该算法即含有很强的透明性,具有较强鲁棒性,而且本算法在提取和检测时,没有用到原始文本,实现了盲检测。

[1] 王丽娜,张焕国.信息隐藏技术与应用[M].武汉:武汉大学出版社,2003:25-28.

[2] 赵星阳,孙继银.一种可抗二值化攻击的文本图像可见水印算法[J].计算机应用,19(1):165-167.

[3] Ding Huang,Hong Yan.Interword distance changes represented by sine waves for watermarking text images[J].IEEE Trans on Circuits and System for Video Technology,2001,11(12):1 237-1 245.

[4] 张 宇,刘 挺,陈毅恒.自然语言文本水印[J].中文信息学报,2005,19(1):56-62.

[5] 赵理,崔杜武.基于汉字拼音声调的文本水印算法[J].计算机工程,2009,35(10):142-144.

[6] 龚嘉镇.汉字汉语汉文化论集[M].成都:四川巴蜀书社,2002:139-140.

猜你喜欢
多音字读音汉字
认识多音字
认识多音字
“那”与“哪”的读音
字词篇
汉字这样记
汉字这样记
你会读多音字吗?
多音字也能出糗
我是小字典
“箪食”之“食”读音考辨