用于对文本进行处理的方法和系统转让专利

申请号 : CN200910136952.5

文献号 : CN101876965B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 左志波李彬沙志强庞丽群

申请人 : 国际商业机器公司

摘要 :

本发明提供了一种对文本进行处理的方法和系统。所述方法包括确定一文本中的至少部分字符;利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段;以及对所述多个文本片段分别进行译码。

权利要求 :

1.一种对文本进行处理的方法,包括:

确定一文本中的至少部分字符;

利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段;

根据第一译码方法对所述多个文本片段分别进行译码,以便得到所述文本的第一译码结果;以及根据第二译码方法对所述多个文本片段分别进行译码,以便得到所述文本的第二译码结果;以及将所述文本的第一译码结果,与所述文本的第二译码结果进行比较,以便确定译码差别。

2.根据权利要求1所述的方法,其中,所述文本至少包括双字节编码字符和多字节编码字符其中之一;所述至少部分字符为至少部分标点符号,所述确定一文本中的至少部分字符进一步配置为,根据标点符号的编码确定所述文本中的至少部分标点符号。

3.根据权利要求1所述的方法,其中,

分别从每个文本片段的头部开始对所述多个文本片段进行译码,以便得到所述文本的第一译码结果;

分别从每个文本片段的尾部开始对所述多个文本片段进行译码,以便得到所述文本的第二译码结果。

4.根据权利要求1所述的方法,其中,根据第二译码方法对所述多个文本片段分别进行译码包括:确定所述文本中的另一部分字符;

利用所述另一部分字符作为分隔符,将所述文本划分为第二多个文本片段;

对所述第二多个文本片段分别进行译码,以便得到所述文本的第二译码结果。

5.根据权利要求2所述的方法,其中对所述多个文本片段分别进行译码进一步包括:从一文本片段的头部开始向后进行译码,作为所述文本片段的第一译码结果,并且从所述文本片段的尾部开始向前进行译码,作为所述文本片段的第二译码结果。

6.根据权利要求2所述的方法,其中所述文本包括具有双字节编码的文本片段,所述方法进一步包括:确定所述双字节编码的文本片段包括的字节数是否为奇数;

如果所述文本片段包括的字节数是奇数,从所述文本片段的头部开始向后进行译码,作为所述文本片段的第一译码结果,并且从所述文本片段的尾部开始向前进行译码,作为所述文本片段的第二译码结果。

7.根据权利要求5或6所述的方法,其中进一步包括:从所述第一译码结果中确定所述文本片段的前部成分;

从所述第二译码结果中确定所述文本片段的后部成分;以及将所述前部成分和所述后部成分组合为所述文本片段的最终译码结果。

8.根据权利要求7所述的方法,其中进一步包括:确定一文本片段是否包括ASCII编码字符;

如果所述文本片段中包括一ASCII编码字符,则利用所述ASCII编码字符作为分隔符将所述文本片段进一步划分为两个子文本片段,并且对所述两个子文本片段分别进行译码。

9.一种对文本进行处理的系统,包括:

字符确定模块,用于确定一文本中的至少部分字符;

文本片段划分模块,用于利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段;

译码模块,配置为根据第一译码方法对所述多个文本片段分别进行译码,以便得到所述文本的第一译码结果;根据第二译码方法对所述多个文本片段分别进行译码,以便得到所述文本的第二译码结果;以及译码差别比较模块,用于将所述文本的第一译码结果,与所述文本的第二译码结果进行比较,以便确定译码差别。

10.根据权利要求9所述的系统,其中,所述文本至少包括双字节编码字符和多字节编码字符其中之一;所述至少部分字符为至少部分标点符号,所述字符确定模块进一步配置为,根据标点符号的编码确定所述文本中的至少部分标点符号。

11.根据权利要求9所述的系统,其中,

所述译码模块,分别从每个文本片段的头部开始对所述多个文本片段进行译码,以便得到所述文本的第一译码结果;

所述译码模块,分别从每个文本片段的尾部开始对所述多个文本片段进行译码,以便得到所述文本的第二译码结果。

12.根据权利要求9所述的系统,其中,所述译码模块根据第二译码方法对所述多个文本片段分别进行译码包括:确定所述文本中的另一部分字符;

利用所述另一部分字符作为分隔符,将所述文本划分为第二多个文本片段;

对所述第二多个文本片段分别进行译码,以便得到所述文本的第二译码结果。

13.根据权利要求10所述的系统,其中所述译码模块进一步配置为:从一文本片段的头部开始向后进行译码,作为所述文本片段的第一译码结果,并且从所述文本片段的尾部开始向前进行译码,作为所述文本片段的第二译码结果。

14.根据权利要求10所述的系统,其中所述文本包括具有双字节编码的文本片段,所述系统进一步包括:字节数确定模块,用于确定所述双字节编码的文本片段包括的字节数是否为奇数;

如果所述文本片段包括的字节数是奇数,所述译码模块从所述文本片段的头部开始向后进行译码,作为所述文本片段的第一译码结果,并且所述译码模块从所述文本片段的尾部开始向前进行译码,作为所述文本片段的第二译码结果。

15.根据权利要求13或14所述的系统,其中进一步包括:文本片段的前部成分确定模块,用于从所述第一译码结果中确定所述文本片段的前部成分;

文本片段的后部成分确定模块,用于从所述第二译码结果中确定所述文本片段的后部成分;以及成分组合模块,用于将所述前部成分和所述后部成分组合为所述文本片段的最终译码结果。

16.根据权利要求15所述的系统,其中,

字符确定模块进一步配置为,用于确定一文本片段是否包括ASCII编码字符;

如果所述文本片段中包括一ASCII编码字符,则文本片段划分模块利用所述ASCII编码字符作为分隔符将所述文本片段进一步划分为两个子文本片段,并且所述译码模块对所述两个子文本片段分别进行译码。

说明书 :

用于对文本进行处理的方法和系统

技术领域

[0001] 本发明涉及信息处理技术,尤其涉及用于对文本进行处理的方法和系统。

背景技术

[0002] 在过去的二十多年的时间里,随着电子技术的迅猛发展,计算机网络,尤其是互联网的性能和容量发生了爆炸性的增长。用户每天利用计算机处理各种信息,编辑形成大量的电子文本。这些电子文本(下文简称为文本)包括以文档方式存储的文本以及以记录和表格等方式存储在数据库中的文本。这些文本中的信息是个人或企业的重要资产。以文档或记录等电子化的方式存储和处理这些文本,为用户重复利用其中的信息提供了便利并提高了工作效率。
[0003] 但是,在一些情况下,文本可能会被损坏(例如,文本文档被损坏),从而影响对文本中信息的重复利用。这浪费了为形成文本而投入的时间等资源。造成文本被损坏的原因有多种,例如通信故障、存储介质故障等。操作系统故障、处理文档的应用程序中的缺陷,也会损坏文档。文档损坏是一种可以尽量减少,但是却很难完全避免的问题。
[0004] 当文档被损坏后,用户经常希望可以从该文档中找回未被损坏的部分,而不必重新编辑全部文档内容。对于文字处理类型的文档,文本往往是其中比较重要的内容,而格式和其它非文本信息往往相对不重要。因此,恢复文档中的文本比较重要。文本在文档中,一般根据预定的字符集以字符编码的方式存储。
[0005] 字符集指特定字符的集合,分为单字符集(即单字节编码字符集)和多字符集(双字节或多字节编码字符集)。单字符集主要包括ASCII,Latin-1等编码字符集,主要用于英文等字母语言。多字符集主要包括GB2312,GBK,GB18030,Shit-JIS,ISO2022等编码字符集,主要用于中文、日文和韩国文等。微软的视窗操作系统,其核心用UTF-16编码,为双字节编码,外层应用可以随着使用语言设置(locale)的不同而不同。比如中文Windows,就可以用GB2312编码或者GB18030编码。
[0006] 用于存储信息的数据库也可以使用不同的编码。数据库系统软件安装时可以设定一个默认编码,但是在建不同的数据库时可以指定成用户需要的编码。安装数据库系统软件后,如建了两个数据库,一个用于处理员工信息,一个用于处理机器设备信息。员工信息可以用GB2312编码或UTF-16编码以便支持中文,或者使用Shit-JIS编码以便支持日文。机器设备信息可以使用ASCII编码,因为机器设备名称、IP地址等信息都是ASCII编码的。
[0007] 文本损坏的一个重要原因是字节丢失。放在硬盘、优盘等存储设备上的文档。受到震动、复杂环境等不可预知的因素的影响,可能会导致文档的某些字节损坏而造成丢失字节。
[0008] 数据库之间的文档复制,尤其是采用不同编码的数据库之间进行文档复制,也可能造成字节丢失。例如,如果复制的缓存发生数据溢出,就会发生字节丢失。一个跨国公司的多个协作服务器,由于需要支持不同国家中的英文、中文、日文和韩国文用户,其中的文本采用单字节编码和双字节或多字节编码。在这种协作服务器系统之间同步或备份时,如果方法不当,发生溢出,可能会丢失字节。例如,一种使用多字节编码的数据库,每个字符的编码字节数为1至3个。在拷贝一串字符时,使用了一个512个字节的缓冲区。当存满这个缓冲区时,由于程序设计问题或内存分配问题,最后一个字符可能没有复制完整,即丢失了字节。比如:“ABC中国”这几个字,如果ABC各使用单字节编码,占用3个字节,中国两个字采用三字节编码,分别需要占用三个字节。如果将上述编码的“ABC中国”存到一个最后的8字节空间里,会导致最后一个字的最后一个字节丢失。
[0009] 不同文档格式或数据格式进行格式转换,尤其是不同编码的系统或应用之间对包括文本的内容进行格式转换,也可能发生丢失字节。
[0010] 由于软硬件技术的发展,以及多年使用计算机处理各种信息,一些企业用户可能积累了多种不同的文档,这些文档基于不同的软硬件系统。由于需要处理的情况复杂,在重复利用这些积累的文档的过程中,文本中丢失字节的现象时有发生。
[0011] 因此,有必要针对上述不同的情况,采取必要的技术处理措施,以便尽可能恢复受到损坏的文本。并且,需要一种机制,来检测涉及文本的处理,对该文本是否安全。

发明内容

[0012] 鉴于已有技术的不足,本发明提供了一种对文本进行处理的方法,包括:确定一文本中的至少部分字符;利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段;以及对所述多个文本片段分别进行译码。
[0013] 本发明还提供了一种对文本进行处理的系统,包括:字符确定模块,用于确定一文本中的至少部分字符;文本片段划分模块,用于利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段;以及译码模块,用于对所述多个文本片段分别进行译码。
[0014] 上述对文本进行处理的方法和系统,可以将文本划分为多个片段,然后对每个片段分别进行译码。这样,如果文本中存在乱码,可以进行有效的隔离。

附图说明

[0015] 图1示出了根据本发明一实施例对文本进行处理的流程图。
[0016] 图2a、图2b示出了一文本发生乱码前后的示意图。
[0017] 图3示出了根据本发明另一实施例的对文本片段进行译码的流程图。
[0018] 图4示出了根据本发明另一实施例的用于对文本进行处理的流程图。
[0019] 图5示出了根据本发明另一实施例的用于确定文本受损坏程度的流程图。
[0020] 图6示出了根据本发明另一实施例的对文本进行处理的系统方框图。

具体实施方式

[0021] 以下参照按照本发明实施例的方法、装置描述本发明。其中,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置(means)。
[0022] 也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
[0023] 还可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0024] 在本发明实施例的描述中,字符可以是字母、文字或标点符号中的一种或多种。对于使用日文的情况,文本中的字符还可以是字母、平假名、片假名和汉字中的一种或多种。
[0025] 图1示出了根据本发明一实施例对文本进行处理的流程图。其中,示出了一种对文本进行译码的方法100。在步骤S110,首先确定需要译码的文本中的至少部分字符。可以通过字符的编码来确定文本中的字符。例如,可以通过字符的编码来识别文本中的字符,并记录这些字符在所述文本中的位置。例如,“的”的GB2312编码为0xB5 0xC4,根据该编码可以识别出文本中多个“的”,并记录每个“的”在文本中的存储位置。其中,所述至少部分字符可以为至少部分标点符号。可以通过标点符号的编码来确定文本中的至少部分标点符号。例如,可以通过标点符号的编码来识别文本中的至少部分标点符号,并记录每个标点符号在所述文本中的位置。例如,常用的标点符号的GB2312编码如下:
[0026]标点符号 GB2312编码
, 0xA3 0xAC
。 0xA1 0xA3
; 0xA3 0xBB
! 0xA3 0xA1
: 0xA3 0xBA
? 0xA3 0xBF
、 0xA1 0xA2
[0027] 图2示出了一文本发生乱码前后的示意图。其中,图2a示出了使用GB2312编码的一段文本及其译码结果。其中,每个汉字的编码用两个字节。例如,床的编码为0xB4 0xB2,前的编码为0xC7 0xB0,上的编码为0xC9 0xCF,标点符号“,”的编码为0xA3 0xAC,标点符号“。”的编码为0xA1 0xA3。图2b示出了发生字节丢失后,丢失字节之后的文本发生了乱码。其中,上的第一个字节0xC9丢失,导致了从上字开始后续文本的乱码,即乱码范围被扩大了。本领域的技术人员可以理解,如果文本中多出了字节,如多了一个字节,也会发生乱码。
[0028] 根据本发明图1的实施例,标点符号作为分隔符,用于将一长段文本分隔为多个较短的文本片段。然后对每个文本片段分别进行译码。这样,一个文本片段中的乱码,就不会影响到对其它文本片段进行的译码。因此,可以根据具体需要来选择部分标点符号。例如,可以仅仅选择逗号“,”和句号“。”。如果文本中被损坏的字节较多,也可以选择多种标点符号,以便将该文本分隔为更多的文本片段,如选择上表中所列出的7种标点符号。还可以确定不同的标点符号选择方案,以便将文本以不同的方式划分为多个文本片段。
[0029] 对于使用上述7种标点符号,在被损坏的文本中发生标点符号选择错误的概率可以用以下公式进行估算,大约为0.54%。即,
[0030] (7/(0xff-0xa0))2x100%=0.54%
[0031] 这个公式要说明的问题是错误识别标点符号的概率是多少。因为上述译码方法是通过识别标点符号来纠正乱码。所以需要考量正确识别标点符号的概率大小。
[0032] 以下以中文GB2312字符集为例子计算概率,GB2312的码表如http://ash.jp/code/cn/gb2312tbl.htm所示,共有6763个字符,从0xA10xA0到0xFE 0xFF。假设需要识别常用的7个标点符号:“,。;!:?、”,那么识别错误的概率可以通过上述公式进行估算。
[0033] 出现错误识别标点符号的情况可能是,两个汉字,汉字1和汉字2,两个汉字紧挨着,并且汉字1的第二个字节是某个标点的第一个字节,汉字2的第一个字节是某个标点的第二个字节。出现这种情况的概率可如下计算。
[0034] 其中一个字节有0至0xFF个值,除去中文里没有的值0至0xA0。所以每个字节可以取0xFF-0xa0个值,只有当这个值是7个标点中的一个时才会错,所以一个字节出现这种情况是7/(0xff-0xa0),因为每个字符由两个字节组成,所以两个相乘就得到(7/2
(0xff-0xa0))x100%=0.54%。如果考虑到上述汉字1和汉字2在实际上下文中相邻的可能性,则识别标点符号错误的概率更小。
[0035] 如果仅仅采用两个最常用的标点符号“,”和“。”,标点符号选择错误的概率大约为0.04%。如上文所述,如果考虑到上述汉字1和汉字2在实际上下文中相邻的可能性,则识别标点符号错误的概率更小。因此,采用标点符号作为分隔符,可以有效地隔离乱码的影响。
[0036] 在步骤S120,利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段。例如,利用所述标点符号作为分隔符,将所述文本划分为多个文本片段。在确定所述文本中的至少部分标点符号之后,两个标点符号之间的部分文本就成为可以单独进行译码的文本片段。可以根据识别出的至少部分标点符号及它们在文本中的相应位置,将两个标点符号之间的部分文本作为一个文本片段。如图2所示,如果选择了标点符号“,”和“。”作为分隔符,则所述文本可以被划分为4个文本片段。这样,每个文本片段中的乱码,不会影响到其它文本片段,即乱码范围通过隔离被缩小了。本领域的技术人员可以理解,确定文本中标点符号的目的,是为了利用所述标点符号作为分隔符,将所述文本划分为多个文本片段。因此,如上文所述,可以根据需要确定不同数量的标点符号。例如,可以选择常用的几个标点符号,或者所述文本中用的较多的标点符号。其中,至少部分标点符号可以包括“,”“。”“;”“:”“!”“?”或“、”。还可以在确定标点符号之后,进一步确定划分文本片段的策略。
[0037] 在步骤S130,对所述多个文本片段分别进行译码。由于标点符号作为分隔符,可以有效地隔离乱码的影响。因此,根据该实施例对损坏的文本进行译码的结果,将明显优于采用已有技术进行译码的结果。根据图1实施例的方法,对图2b中的文本进行处理,可以得到如下译码结果。其中,无法确定的字符用空格代替。
[0038] “床前明月光,疑是地纤__,举头望明月,低头思故乡。”显然,乱码的范围通过标点符号作为分隔符进行隔离,被限制在一个文本片段中。其它的文本片段被正确译码。
[0039] 所述对文本进行译码方法可以适用于对包含双字节编码字符或多字节编码字符的文本。所述文本可以选自中文文本、日文文本或韩国语文本中的一种。所述文本还可以是包含双字节编码字符或多字节编码字符的其它语言的文本。
[0040] 根据本发明的另一实施例,所述方法用于对受到损坏的包含双字节编码字符或多字节编码字符的文本进行译码、显示的方法。
[0041] 本领域的技术人员可以理解,对于数据库或其它格式的文档中包括的文本(如演示文稿中的文本或表格中的文本),可以采用相应的方法读取其中的文本,然后对文本进行译码。
[0042] 图3示出了根据本发明另一实施例的对文本片段进行译码的流程图。在步骤S310,输入需要译码的一文本片段。在步骤S320,从所述文本片段头部开始进行译码,得到的译码结果作为所述文本片段的第一译码结果。在步骤S330,从所述文本片段的尾部开始进行译码,得到的译码结果作为所述文本片段的第二译码结果。
[0043] 在程序员参与修复受损坏的文档的情况下,可以将上述第一译码结果和第二译码结果显示给程序员。程序员可以根据实际的上下文确定如何处理上述第一译码结果和第二译码结果,以便得到最终的译码结果。
[0044] 在计算机自动修复受损坏的文本的情况下,可以继续执行以下步骤来确定最终的译码结果。在步骤S340,从所述第一译码结果中确定文本片段前部成分。在步骤S350,从所述第二译码结果中确定文本片段后部成分。对于其中存在乱码的文本片段,在第一译码结果中,发生乱码字符之后的部分很可能是没有语义含义或规律的一串字,发生乱码字符之前的部分将是有语义关系的多个字。在第二译码结果中,发生乱码字符之前的部分很可能是没有语义含义或规律的一串字,发生乱码字符之后的部分将是有语义关系的多个字。这样就可以根据语义关系确定文本片段的前部成分和后部成分。例如,可以采用下文所述的分词技术从所述第一译码结果中确定文本片段的前部成分和后部成分。
[0045] 在步骤S360,将所述文本片段前部成分和所述文本片段后部成分,组合为所述文本片段的最终的译码结果。其中,可以从第一译码结果中确定存在可能性最大的文本片段前部成分;以及从第二译码结果中确定存在可能性最大的文本片段后部成分。
[0046] 对于确定存在可能性最大的文本片段前部成分以及从第二译码结果中确定存在可能性最大的文本片段后部成分,可以采用已有技术中的多种文本或句子分析方法。例如,可以利用分词技术对可能性最大的前半部分和后半部分进行判断。当连续的几个字并不能组成正确的词时,这几个字成为文本片段有效成分的可能性将降低,根据这种可能性可以分别确定文本片段的前部成分和后部成分。
[0047] 比如“中国航天官员应邀到美国与太空总署官员开会”这句话,如果“与”的后半个字节丢了。那么,第一种译码结果是:
[0048] 中国航天官员 应邀 到美国犹□兆苁鸸僭笨□帷
[0049] 第二种译码结果是(从右向左读):
[0050] 会开员官署总空太庸□赖窖□υ惫偬旌焦
[0051] 其中,可以得到分词,如中国航天官员、应邀、到美国、太空总署、官员、开会。所以把第一译码结果得到的前半部分和第二译码结果的得到的后半部分组合在一起就是改进后的译码结果,其中乱码用空格标识。
[0052] 中国航天官员应邀到美国太空总署官员开会
[0053] 分词技术属于自然语言处理技术。对于一句话,计算机通过语料库的知识来确定哪些是词,哪些不是词,其处理过程就是分词算法。该技术在语音识别、智能翻译、搜索引擎等领域有广泛的应用。
[0054] 分词方法的一种叫字符串匹配分词法,又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如:1)正向最大匹配法(由左到右的方向);2)逆向最大匹配法(由右到左的方向);和3)最少切分(使每一句中切出的词数最小)。
[0055] 还可以将上述各种分词方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。实际使用的分词系统,可以把机械分词作为一种初分手段,然后通过利用各种其它的语言信息来进一步提高切分的准确率。
[0056] 例如,一种分词方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。对于机械分词方法,还可以建立一个一般的模型,在这方面有许多已有技术,这里不做详细论述。
[0057] 根据本发明的另一实施例,将图1所示的文本处理方法用于包括双字节编码字符的文本片段。图1所述的译码方法可以进一步包括:确定所述双字节编码的文本片段包括的字节数是否为奇数。对于采用双字节编码的文本片段,其包括的字节数应当为偶数个字节,如果所述文本片段包括的字节数为奇数,说明其中可能有字节丢失的情况。在实际损坏的文本中,丢失字节的情况比较常见,而多出字节的情况则非常罕见。如果所述文本片段包括的字节数为奇数,可以从所述文本片段的头部开始向后进行译码,作为第一译码结果;并且可以从所述文本片段的尾部开始向前进行译码,作为第二译码结果。
[0058] 根据本发明的另一实施例,还可以进一步根据文本中包括的单字节字符,如ASCII编码字符,进行进一步的译码改进,如改进图1所示的译码方法。首先,确定一文本片段是否包括单字节字符,如ASCII编码字符。如果所述文本片段中包括一ASCII编码字符,则利用所述ASCII编码字符作为分隔符将所述文本片段进一步划分为两个子文本片段,并且对所述两个子文本片段分别进行译码。
[0059] 因为单字节字符不会出现乱码问题,所以当双字节和多字节混合在一起的数据出现丢失字节的情况时,单字节字符可以充当同步因子。在此,同步是指译码程序对于一串编码,不管从哪个位置开始译码,都可以正确的译码。非同步是指译码程序对于一串编码,从第一个字节开始译码,不能从中间开始译码,否则容易发生错误。
[0060] 因为一个字符集在制定编码标准时,将考虑兼容ASCII编码。ASCII编码的内码范围是0-0x79,所以其他字符集一般避开0-0x79,选择0x80-0xFF中的值用于编码。例如,当译码程序读取到IBM的I这个字符时,根据ASCII编码会识别出这个字符,可以正确的译码出这个字符。所以如果I之前的文本中的乱码,不会影响到I之后的文本译码。亦即,乱码的范围会停在I这个字符,不会继续乱下去,所以ASCII编码字符充当了同步因子的作用。
[0061] 图4示出了根据本发明另一实施例的用于对文本进行处理的流程图。其中的方法适用于确定文本是否受到损坏,以及受损坏程度。因此,该实施例的方法还可以用于检测对于一文本进行的预定处理,是否会损坏该文本。
[0062] 其中,对于需要处理的文本,在步骤S410,确定文本中的至少部分标点符号。在步骤S420,利用所述至少部分标点符号作为分隔符,将所述文本划分为多个文本片段。在步骤S430,分别从每个文本片段的头部开始对所述多个文本片段进行译码,以便得到所述文本的第一译码结果。在步骤S440,分别从每个文本片段的尾部开始对所述多个文本片段进行译码,以便得到所述文本的第二译码结果。在步骤S450,将所述文本的第一译码结果,与所述文本的第二译码结果进行比较,以便确定译码差别。如果第一译码结果和第二译码结果相同,即译码差别为0,可以确定没有发生乱码,可以认为文本未受到损坏。如果存在译码差别,则在所述文本的第一译码结果和第二译码结果中,发生乱码的字符产生的乱码范围不同,而未发生乱码的部分相同。因此,上述译码差别反应了文本的受损坏程度。译码差别越大,文本的受损坏程度越大。这样,根据译码差别可以确定文本受损坏的程度。数据库系统管理员可以确定文本是否受到损坏,并根据受损坏程度对文本进行相应的标识、进一步处理或管理。
[0063] 对文本进行预定处理之后,如果译码差别为0,则可以确定上述预定处理对于文本是安全的。如果译码差别越大,上述预定处理对于文本越不安全。例如,如果一预定处理方法存在缺陷(bug),处理系统或者处理程序中存在的破坏正常运转能力的问题或者缺陷(如处理程序中的缺陷或者处理程序在一种执行环境中可能存在缺陷),则可以针对经过预定处理的文本,用上述方法确定译码差别。使用上述确定译码差别的方法,针对的是文本的最终使用状态是否有问题以及问题大小。对于需要处理的文本较多的情况,使用上述确定译码差别的方法,来检测文本是否受损,或者检测对于文本进行的一预定处理方法是否会损坏文本,可以发现其它方法或人工检测无法发现的一些问题,技术效果更加明显。
[0064] 图5示出了根据本发明另一实施例的用于确定文本受损坏程度的流程图。其中,在步骤S505,输入需要处理的文本。在步骤S510,确定文本中的第一部分标点符号。在步骤S520,利用所述第一部分标点符号作为分隔符,将所述文本划分为第一多个文本片段。在步骤S530,对所述第一多个文本片段分别进行译码,以便获得所述文本的第一译码结果。在步骤S540,确定文本中的第二部分标点符号。所述第二部分标点符号可以与所述第一部分标点符号不同或部分相同。在步骤S550,利用所述第二部分标点符号作为分隔符,将所述文本划分为第二多个文本片段。在步骤S560,对所述第二多个文本片段分别进行译码,以便获得所述文本的第二译码结果。在步骤S570,将所述文本的第一译码结果,与所述文本的第二译码结果进行比较,以便确定译码差别。
[0065] 本领域的技术人员可以理解,上述实施例的方法可以用于损坏文档的恢复。也可以作为一种检验方法,用于验证对文本处理的方法,如系统之间的复制方法对数据库文本内容、文档内容是否安全,是否会对文本造成字节丢失。不同文档格式或数据格式进行格式转换,尤其是在不同编码的系统或应用之间进行格式转换,对其中的文本是否安全。例如,将一种业务的文本或内容从一系统中转移到另一系统;从一应用(一种多字节编码)中复制到另一应用(另一种两字节或多字节编码)之中。
[0066] 本领域的技术人员可以理解,上述使用标点符号作为分隔符的处理方法,也适用于使用其它字符(如使用频率比较高的常用文字)作为分隔符对文本进行处理。对于使用日文的情况,文本中的字符还可以是字母、平假名、片假名和汉字中的一种或多种。
[0067] 图6示出了根据本发明另一实施例的对文本进行处理的系统方框图。其中,对文本进行处理的系统600包括:字符确定模块610,用于确定一文本中的至少部分字符;文本片段划分模块620,用于利用所述至少部分字符作为分隔符,将所述文本划分为多个文本片段;以及译码模块630,用于对所述多个文本片段分别进行译码。
[0068] 其中,所述文本可以至少包括双字节编码字符和多字节编码字符其中之一。其中,所述至少部分字符可以为至少部分标点符号,字符确定模块620可以进一步配置为,根据标点符号的编码确定所述文本中的至少部分标点符号。
[0069] 其中,所述译码模块630可以进一步配置为:根据第一译码方法对所述多个文本片段分别进行译码,以便得到所述文本的第一译码结果;以及根据第二译码方法对所述多个文本片段分别进行译码,以便得到所述文本的第二译码结果。所述系统600可以进一步包括:译码差别比较模块,用于将所述文本的第一译码结果,与所述文本的第二译码结果进行比较,以便确定译码差别。
[0070] 其中,所述译码模块630可以分别从每个文本片段的头部开始对所述多个文本片段进行译码,以便得到所述文本的第一译码结果;所述译码模块630可以分别从每个文本片段的尾部开始对所述多个文本片段进行译码,以便得到所述文本的第二译码结果。
[0071] 其中,所述译码模块630对所述多个文本片段分别进行译码,以便得到所述文本的第一译码结果。所述系统600可以进一步配置为:所述字符确定模块610,进一步用于确定所述文本中的另一部分字符;所述文本片段划分模块620,进一步利用所述另一部分字符作为分隔符,将所述文本划分为第二多个文本片段;所述译码模块630,进一步对所述第二多个文本片段分别进行译码,以便得到所述文本的第二译码结果。所述系统600可以进一步包括译码差别比较模块,用于将所述文本的第一译码结果,与所述文本的第二译码结果进行比较,以便确定译码差别。
[0072] 其中所述译码模块630可以进一步配置为:从一文本片段的头部开始向后进行译码,作为所述文本片段的第一译码结果,并且从所述文本片段的尾部开始向前进行译码,作为所述文本片段的第二译码结果。
[0073] 其中,所述文本可以包括具有双字节编码的文本片段,所述系统600进一步包括:字节数确定模块,用于确定所述双字节编码的文本片段包括的字节数是否为奇数。如果所述文本片段包括的字节数是奇数,所述译码模块630可以从所述文本片段的头部开始向后进行译码,作为所述文本片段的第一译码结果,并且所述译码模块630可以从所述文本片段的尾部开始向前进行译码,作为所述文本片段的第二译码结果。
[0074] 其中,系统600还可以进一步包括:文本片段的前部成分确定模块,用于从所述第一译码结果中确定所述文本片段的前部成分;文本片段的后部成分确定模块,用于从所述第二译码结果中确定所述文本片段的后部成分;以及成分组合模块,用于将所述前部成分和所述后部成分组合为所述文本片段的最终译码结果。
[0075] 其中,系统600还可以进一步包括:字符确定模块,用于确定一文本片段是否包括ASCII编码字符。如果所述文本片段中包括一ASCII编码字符,则文本片段划分模块620可以利用所述ASCII编码字符作为分隔符将所述文本片段进一步划分为两个子文本片段,并且所述译码模块630可以对所述两个子文本片段分别进行译码。
[0076] 其中,上述至少部分标点符号可以包括“,”“。”“;”“:”“!”“?”或“、”;所述文本可以至少包括中文文本、日文文本和韩国语文本中的一种。
[0077] 本发明还提供了一种存储介质或信号载体,其中包括用于执行根据本发明的方法的指令。
[0078] 附图中的流程图和框图,图示了按照本发明实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0079] 所属技术领域的技术人员知道,本发明可以体现为系统、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(medium of expression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
[0080] 可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是--但不限于--电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括--但不限于--无线、电线、光缆、RF等等。
[0081] 用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言--诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言--诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络--包括局域网(LAN)或广域网(WAN)--连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
[0082] 以上结合优选法方案对本发明进行了详细的描述,但是可以理解,以上实施例仅用于说明而非限定本发明。本领域的技术人员可以对本发明的所示方案进行修改而不脱离本发明的范围和精神。