一种基于语义角色位置映射的文本水印嵌入及提取方法_2

文档序号:9453332阅读:来源:国知局
映射,对所有码字进行映射,完成水印的嵌入。
[0033] 本实施例中,语义角色包括表示动作的施事的角色A0,表示动作的影响的角色 A1,和关系相对模糊的角色ADV等三种主要语义角色类型。
[0034] 进一步的,步骤1)中的水印信息预处理,现有文本水印算法通常是将水印字符转 换为二进制信息来按位嵌入,此时每个嵌入点只能嵌入1位信息,水印容量受到较大限制。 同时,当水印信息为中文时,提取水印不能将二进制直接转换为中文,需要先将二进制转换 为十六进制,再转换为中文。本实施例采用Unicode编码,将水印字符转换成十六进制信息 嵌入。Unicode编码与中文之间可直接转换,并且可以兼顾水印信息含有中文、英文以及其 它语言和符号,具有通用性。以字符"南通大学"为例,转换成Unicode码后得到的十六进 制编码为:
[0035] \u5357\u901a\u5927\u5b66
[0036] 本发明提出的方法是将文本中的语义角色作为水印的载体,如果直接将表示水印 信息的十六进制Unicode编码嵌入的话,需要16种不同的语义角色,不便实现。为此,本实 施例运用Huffman编码对十六进制水印信息中的码元数量进行压缩。与上述选定的A0、A1、 ADV三种语义角色相匹配,采用三元Huffman编码将十六进制的Unicode码串转换成由0、 1、2表示的Huffman编码。
[0037] Huffman编码是一种常用的压缩编码方法。它的基本原理是按照概率大小的顺序 排列信源符号,并设法按逆顺序分配码字字长,使编码的码子为可辨识的。D元Huffman编 码过程是每次把r个符号(概率最小)合并成一个新的信源符号,并分别用0,1,…,r-1 等码元表示。首次合并的符号个数由如下公式描述:
[0038] r = RDj(K_2) +2
[0039] K为信源消息个数,r为D元编码首次合并个数。
[0040] Huffman编码压缩的本质是将频繁使用的数据用较短的码来表示,较少使用的用 较长的码表示,使得到的平均码长为最短。本实施例采用三元Huffman编码对表示水印信 息的十六进制Unicode码串进行压缩处理,即根据Unicode码中字母和数字的出现频率来 编码,压缩到平均码长最短。以字符"南通大学"为例,其Unicode码串经Huffman编码处 理后得到的结果为:
[0041] 20212211122022021011121201212021220112202202122001010
[0042] 对比二进制按位嵌入的方式,1个字符用16位二进制表示,4个字符为16*4 = 64 位。上述对其Unicode码进行Huffman编码处理之后得到的码串长度为53位,减少了 11 位,水印容量可提高17%。
[0043] 水印信息预处理的实现如下:
[0044] 将用中文等字符表示的水印信息转换成十六进制的Unicode编码,用Java语言实 现的程序代码为:
[0045]
[0046] result中所含即为水印信息的Unicode编码。
[0047] 对水印信息的Unicode编码进行Huffman编码压缩处理,得到由0、1、2构成的 Huffman编码。Huffman编码实现过程如下:
[0048] 将信源按照概率分布大小依次排列,计算所需的实际信源符号数,相关程序代码 如下:
[0049]
[0050]
[0051] 建立Huffman节点,对Huffman结点数组进行排序,给出每个符号的码符号。实现 程序如下:
[0052]
[0053]
[0054] 通过排序,合并符号以及递归调用,即可得出各信源符号所对应的码符号序列,即 相应的码字,至此,Huffman编码完成。实现程序如下:
[0055]
[0056」
[0057」
[0058] hf中所含即为得到的Huffman编码后的结果。
[0059] 步骤2)中,通过语言技术平台LTP处理,确定和标记文本中的语义角色,LTP的 处理结果为一个包含文本中句子成分语义角色关系的XML格式的文件,文件包含若干用于 标明各种句段关系、句法关系、语义角色的结点标签,结点标签包括para、sent、word、arg。 每个类别的结点标签均包含用于标明序号的id属性。其中,para为段落结点,包含id属 性。sent为句子结点,包含属性id、cont,id为段落句子序号,cont为句子内容。word为 分词结点,包含属性id、cont,id为句子中词的序号,cont为分词内容,可选属性有pos、ne、 parent、relate,其中parent为依存句法分析的父亲结点id号。relate为相对应的关系, 如HED表示核心关系。arg为语义角色信息结点,任何一个谓词都会有若干个该结点,其属 性有id、type等,id为对应的arg结点序号,type代表角色类型。
[0060] 查找选定的语义角色并标记其位置的方法具体包括如下步骤:
[0061] 2-1)对XML文件进行解析遍历,定位到relate="HED"的word结点。
[0062] 2-2)接着遍历此word结点下的arg结点内的type属性,判断其是否为指定查找 的类型,如果是,则标记出该语义角色的位置,标记语义角色位置的表达式如下:
[0063] L = p+para. id+s+sent. id+a+arg. id
[0064] 其中,p表示para属性,s表示sent,a表示arg。即用每个结点属性的首字母加 上其对应的id值来标记一个语义角色。比如某语义角色属性arg的id为2,对应的para 属性的id为9, sent属性的id为3,其位置表示为:
[0065] L = 9p 3s 2a
[0066] 2-3)重复上述步骤2-1)、2-2),标记出文本中所有的三种语义角色的位置信息, 分别存入三个不同的集合L1、L2、L3中。
[0067]语义角色位置标记的具体实现如下:
[0068] 按照LTP系统应用程序接口API的要求,将需要提交处理的文本转换为字符串的 形式,可以用Java语言的输入输出流的相关函数来实现,相应的程序代码为:
[00691
[0070] 其中,filepath为待处理的文本文件的路径,text即为包含文本内容的字符串。
[0071] 设置API参数,包括访问LTPWeb服务的地址url、使用API的钥匙api_key(用户 注册时获得)、分析模式pattern(选择ALL)、结果格式类型format(选择XML格式)等,将 包含文本内容的字符串(text)提交给LTP平台进行语义角色标注处理,得到包含文本中句 子成分语义角色关系的XML文件。实现这一过程的核心程序代码如下:
[0072]
[0074] linel中存放的即为处理后的结果。
[0075] 对XML结果进行解析遍历,定位到relate = "HED"的word结点,遍历此word结 点下的arg结点内的type属性,判断其是否为三种语义角色类型A0、A1、ADV之一,如果是, 则取出此arg结点的id和该word结点父节点sent的id和sent结点父节点para的id, 构成位置信息,放入一集合中。实现这一过程的核心代码如下:
[0076]

.}
[0078] 集合11、12、13中存放的即为三种语义角色A0、A1、ADV的位置信息。
[0079] 水印的嵌入通过将水印信息映射为语义角色的位置信息来进行。文本中的三种语 义角色A0、Al、ADV的位置信息已提取存储在三个集合中。水印信息经过预处理后为由0、 1、2构成的码元串。让水印信息中的三种码元与三种语义角色类型一一对应,即A0对应0, A1对应1,ADV对应2。逐个取出水印信息串中的码字,将该码字与所对应
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1