在多字节测试编码中利用统计模型消除噪声的制作方法

文档序号:7530019阅读:120来源:国知局
专利名称:在多字节测试编码中利用统计模型消除噪声的制作方法
技术领域
本发明涉及字符代码序列的确认。
背景技术
双字节字符编码通常用于许多目的,其中包括编码诸如GB2312-80-用在中国大陆的简体汉字之类的复杂字符集。GB2312-80包含7,445个被表示成一对字节的汉字,其中每个字节是从161到254的数。这使汉字与用0到127范围内的字节值表示的传统ASCII文本混合在一起。在技术上,GB2312-80与ASCII的同时表示被称为EUC-CN编码,但为了简单起见,在本说明书中我们自始至终将它称为GB2312-80。这必然意味着,在161到254范围内的字节必须成对出现,并且在在任何两个单字节ASCII字符之间的一行中,这样的字符的任何字符串必须含有偶数个这样的字节。128到160范围内的字节值对于GB2312-80是无效的。尽管存在这些法则,但发现在5%到10%的中文网页和新闻专线文本中仍然出现统称为“噪声”的无效字符和序列。这种噪声的来源不明。
当前可用于处理双字节编码的应用程序不足以对付这种噪声。例如,GB到单一码转换器(GB to Unicode converter)简单地崩溃在第一无效字节序列,使噪声之后的所有信息都丢失了。
修复这样的噪声存在不明确的问题。例如,考虑都在161-254范围内的GB2312-80字符的9-字节序列的情况-哪个“半字”是要放弃的噪声?放弃任何一个字节都有可能使四个汉字完全有效,但处在不可理解的序列中。在概率上,有可能只放弃一个字节就可以生成可理解的字符串。
我们需要的是确认双字节字符串以检测和消除这样的噪声的方法。

发明内容
本发明公开了确认具有多个状态的字节序列的方法,该方法包括从多个状态当中指定一个或多个噪声状态,为字节序列生成最可能状态序列(mostprobable state sequence),利用所述状态序列识别字节序列中的所有噪声,并将所述噪声定位在所述噪声状态中。
在本发明的另一个方面中,接着从字节序列中删除噪声。
在本发明的另一个方面中,噪声状态是ASCII状态。
在本发明的另一个方面中,最可能状态序列的所述生成包括计算P(X0...XN|S0...SN),这里P(X0...XN|S0...SN)代表给定状态序列条件下所述字节序列的条件概率。
在本发明的另一个方面中,所述计算P(X0...XN|S0...SN)包括将状态标记Si指定给字节序列的第i字节Xi,以便使如下等式达到最大P(X0...XN|S0...SN)=P0(S0)[Πi=1NA‾(Si|Si-1)][Πi=0NB‾(Xi|Si)]]]>其中,P0(S0)是状态的初始分布;A(Si|Si-1)是“状态到状态”转移矩阵;而B(Xi|Si)是给定状态Si条件下生成字节值Xi的概率的“来自某状态的字节”矩阵。
在本发明的另一个方面中, 其中,每个p(Si-1→Si)是在具有σ个状态的有效字节序列中,特定Si状态正好在Si-1状态之后的概率。
在本发明的另一个方面中,A‾(Si|Si-1)=p(A→A)p(A→GB1)p(A→GB2)p(GB1→A)p(GB1→GB1)p(GB1→GB2)p(GB2→A)p(GB2→GB1)p(GB2→GB2)]]>其中,每个p(Si-1→Si)是在具有三个状态的有效字节序列中,特定Si状态正好在Si-1状态之后的概率。
在本发明的另一个方面中,
A‾(Si|Si-1)=0.9951570.00484300010.0379440.9620560]]>和所述有数字节序列是GB2312-80字符集下的有效文本。
在本发明的另一个方面中, 其中,hs(Xi)是σ个状态的直方图函数,而εj(Xi)是在字节值Xi的r+1个范围内,与多个字节的噪声状态的关联噪声的概率。
在本发明的另一个方面中, 其中,hs(Xi)是状态的直方图函数,而εj(Xi)是在三状态字节序列的多个Xi范围内,与ASCII状态的关联噪声的概率。
本发明的另一个方面进一步包括提供具有ASCII状态和包括有效ASCII和双字节字符的有效三状态字节序列,通过包括如下步骤的方法计算ASCII直方图hs(Xi)取样有效ASCII文本,以便测量每个字节值的出现频率;在Xi的ASCII范围上计算所述取样的非标准化直方图;和标准化所述非标准化直方图,以便包含所述ASCII直方图的矩阵的整个列加起来等于1,通过取样有效双字节文本和在奇数字节上计算非标准化第一字节直方图计算第一字节直方图h1(Xi),并标准化所述第一字节直方图,以便包含所述第一字节直方图的矩阵的整个列加起来等于1,和通过取样有效双字节文本和在偶数字节上计算非标准化第二字节直方图计算第二字节直方图h2(Xi),和标准化所述第二字节直方图,以便包含所述第二字节直方图的矩阵的整个列加起来等于1。
本发明公开了有形地体现可被机器执行以完成确认具有多个状态的字节序列的方法步骤的指令程序的机器可读程序存储设备,所述方法包括从多个状态当中指定一个或多个噪声状态,为字节序列生成最可能状态序列,利用所述状态序列识别字节序列中的所有噪声,并将所述噪声定位在所述噪声状态中。
在设备的另一个方面中,所述噪声在所述噪声状态中的所述定位包括检查所述字节序列中与噪声状态不对应的每个字节,确定该字节是非有效,如果该字节无效,那么,将所述字节的状态重新指定成噪声状态。
在设备的另一个方面中,该设备包括有效字节的查找表,其中,字节是否有效的所述确定通过访问所述查找表完成。
本发明公开了确认具有包括ASCII状态的多个状态的字节序列的方法,该方法包括选择ASCII状态作为噪声状态,通过包括如下步骤的方法为字节序列生成最可能状态序列计算P(X0...XN|S0...SN),P(X0...XN|S0...SN)代表给定状态序列条件下所述字节序列的条件概率,其中,所述计算P(X0...XN|S0...SN)包括将状态标记Si指定给字节序列的第i字节Xi,以便使如下等式达到最大P(X0...XN|S0...SN)=P0(S0)[Πi=1NA‾(Si|Si-1)][Πi=0NB‾(Xi|Si)]]]>
其中,P0(S0)是状态的初始分布;A(Si|Si-1)是“状态到状态”转移矩阵;而B(Xi|Si)是给定状态Si条件下生成字节值Xi的概率的“来自某状态的字节”矩阵;利用所述状态序列识别字节序列中的所有噪声,将所述噪声定位在所述噪声状态中,并从字节序列中删除所述噪声。


图1是本发明实施例的整个过程的图形;和图2是本发明的典型Markov模型的图形。
具体实施例方式
参照图1,图1描绘了本发明的基本流程,其中,可能损坏字节序列(corrupted byte sequence)经过状态序列标记器100,状态序列标记器100首先对字节序列生成最可能状态序列,然后,修改状态序列以便将所有错误或“噪声”定位到单个状态中。然后,让字节序列和相关的状态序列经过修复模块110,修复模块110检查这些序列以确定在字节序列中是否存在什么错误,如果存在,则纠正它们,从而输出有效字节序列。
图2描绘了与混合双字节和ASCII序列(譬如,GB-型字节序列)有关的容许状态序列的典型Markov模型。本例中的字节的状态可以是下列三个状态之一,即,ASCII字符(状态A)、双字节字符状态的第一字节(状态GB1)或双字节字符状态的第二字节(状态GB2)。依赖于用户想要检测的、在本例中是无效字符代码的噪声,由用户指定状态。正如在图中看到的那样,单字节ASCII字符(状态A)后面可以接着另一个ASCII字符(状态A)或双字节字符状态的第一字节(状态GB1),但ASCII字符(状态A)后面决不可以接着双字节字符状态的第二字节(状态GB2)。这通过指向和背离ASCII状态A的箭头方向示出。同样,第一GB字节(状态GBB1)后面可以接着第二字节(状态GB2),但决不可以接着ASCII字符(状态A);和第二字节(状态GB2)后面可以接着ASCII字符(状态A),但决不可以接着第一字节(状态GB1)。在图1的状态序列标记器100生成的状态串中不允许破坏这些法则,在数学上这可以由下面更详细描述的等式4c的“状态到状态”的转移矩阵A(Si|Si-1)中的零项来保证。
在数学上利用状态到状态矩阵把适当状态序列强加于损坏字节序列将导致无效字符代码,也就是说,将存在被标记成与任何有效ASCII字符都不对应的ASCII状态的字节和与任何有效双字节字符都不对应的GB1和GB2字节对。这些无效字符由修复模块110检测和修复。正如下面将说明的那样,修复模块通过将无效字符“定位”到一个或多个指定“噪声状态”来完成这个工作。
状态序列标记器为特定字节序列生成状态序列所使用的方法利用概率模型。对于任何字节序列X0,X1,X2,...XN,(1)我们希望生成相应的状态序列S0,S1,S2,...SN,(2)其中,每个Xi是从0到255的整数(对于8-位字节),而每个Si对于单字节ASCII字节、第一双字节字节或第二双字节字节,分别是A、1或2。
然后,我们可以将在给定等式2的状态序列条件下,等式1的字节序列的条件概率模型化成
其中,P0(S0)是状态的初始分布,即,P0(A)=P0(1)=P0(2)=1/3;A(Si|Si-1)是状态到状态的转移矩阵,并且具有正在被利用的Markov模型的特性;和B(Xi|Si)是给定状态Si条件下生成字节值Xi的概率的“来自某状态的字节”矩阵。
对于总共σ个状态的任何字节序列,状态到状态矩阵将是σ×σ大小的矩阵
在如图2所示的三状态Markov模型的情况下,状态到状态矩阵将具有如下形式A‾(Si|Si-1)=p(A→A)p(A→GB1)p(A→GB2)p(GB1→A)p(GB1→GB1)p(GB1→GB2)p(GB2→A)p(GB2→GB1)p(GB2→GB2)---(4b)]]>其中,p(Si-1→Si)表示在有效字节序列中第i字节的特定Si状态正好在前一个字节(i-1)的特定Si-1状态之后的概率,或观察频率。应该明白,等式4b是三状态字节序列的矩阵。当应用于GB2312-80字符集时,发现状态到状态矩阵像如下那样A‾(Si|Si-1)=0.9951570.00484300010.0379440.9620560---(4c)]]>图4b的矩阵项的意义也可以通过下表示出表1Si=A Si=GB1 Si=GB2

Si-1=ASi-1=GB1Si-1=GB2从表1可以看出,例如,ASCII字符(即,状态A)后面接着另一个ASCII字符的概率是p(A→A)=0.995157,而ASCII字符后面接着双字节字符的第一字节的概率只是p(A→GB1)=0.004843。表1中的数字代表对于有效文本概率应该是多少,并可以从实际有效文本的编译统计中得出它们。
B(Xi|Si)矩阵通过如下形式描述
其中,hs(Xi)是状态的直方图函数,而εj(Xi)是在r+1个Xi范围内与第s状态的关联噪声的概率。正如下面更详细描述的那样,这表示第s状态已经按照本发明被选作“噪声状态”。
对于图2的三状态Markov模型,等式5a变成 其中,hA(Xi)是通过如下步骤计算的取样有效ASCII文本,计算它的字节的直方图,然后标准化它们,以便矩阵的整个列(包括ε)加起来等于1。第一字节直方图h1(Xi)是通过取样有效双字节文本和在奇数字节上计算直方图计算的,而第二字节直方图h2(Xi)是在偶数字节上计算的。然后,也标准化直方图h1(Xi)和h2(Xi),使它们各自的列加起来等于1。注意,上面的矩阵意味着ASCII状态是指定噪声状态。
对于GB2312-80,B(Xi|Si)矩阵项的意义可以通过下表描述表2Si=A Si=GB1 Si=GB2

1≤Xi≤127128≤Xi≤160161≤Xi≤254Xi=255其中可以看出,例如,与GB2312-80汉字(即,161≤Xi≤254)相联系的字节最有可能已经由状态GB1和GB2生成,但具有来源于ASCII字符的小错误概率ε2。
为了生成给定字符串的状态序列,等式3用于找出使P(X0...XN|S0...SN)的值最大的状态序列。然后,分析标记为GB1后面接着GB2的所有字节对,以确认它们是有效GB字符(GB2312-80字符集在字节的有效范围内包含一些“空隙”,因此,用于这样“有空隙”字符集的优选实施例通过查找查找表中的值进行这种检验)。如果它们没有形成有效字符,则在状态序列中,将这两个字节重新标记成噪声状态,在本例中,标记成ASCII。
从上面的操作中得出的状态序列被传送到修复模块110,并且,具有如下特性表3

其中可以看出,所有噪声现在被定位到一个状态,即,ASCII状态。这仅仅是举例说明,因为我们可以修改序列标记器100的过程,以便将所有噪声定位到其它状态之一。
修复模块110简单地识别序列中的无效ASCII字符并删除它们。在另一个实施例中,修复模块110也可以检测字符串中的歧义部分并通过访问实际语言样本的统计数据库作出纠正。
尽管我们针对GB2312-80汉字集,以及只有三个状态和将所有噪声定位到ASCII状态描述了本发明,但本发明可推广到具有σ个状态的任何字符集,其中,σ>1。本发明不局限于含有单字节和双字节字符的字符状态,而是可推广到任何个字节的字符的任何组合。基本过程是利用概率模型将所有错误定位到一个或多个指定噪声状态。此外,代表禁止转变字节值的状态总是可以被加入模型中,也可以用作指定噪声状态。因此,本发明可以容易地推广到所有多字节文本,并可用作各种各样字符转换器和文本翻译器、编辑器、搜索引擎等的过滤器。
此外,应该指出,可以将不止一个状态指定成噪声状态和根据一组法则将错误指定给每个噪声状态。如果某人希望分开不同类型的噪声,这是有用的。噪声状态不必与实际有效状态相对应,而是可以独立地被指定成分立状态。
本发明的方法可以作为可由诸如计算机之类的机器读取的有形地体现在存储设备上的指令程序来执行。
作为本发明的工作的一个例子,考虑如下的GB2312-80字节序列,其中,每个双字节序列与它代表的中文字一起示出字节序列|180 231|202 211|189 218|196 191|汉字| 电 | 视 | 节 | 目 |现在考虑序列被插在开头的杂散字节值,即,十进制数189破坏掉的情况字节序列|189 181|231 202|211 189|218 196|191|汉字| 降 | 缡 | 咏 | 谀 | |当前技术不能确定上面的序列是否有效,但讲本族语的中国人马上将这个损坏序列识别成乱语。根据本发明,将损坏字节串传送到图1的状态序列标记器100,在状态序列标记器100中根据等式1-5构建相应的状态序列
字节序列|189 181|231 202|211 189|218 196|191|状态序列|A GB1|GB2 GB1|GB2 GB1|GB2 GB1|GB2|汉字 | 降 | 缡 | 咏 | 谀 | |将可疑字节序列和相应状态序列传送给修复模块110,假设我们已经选择了将噪声定位到ASCII状态的情况下,在修复模块110中检查非ASCII状态以测试它们是否在有效数字范围内。发现不是的任何状态都被重新标记成ASCII。然后,检查ASCII状态,并且不在可接受字节值内的任何ASCII状态都被认为是无效的。但是,在我们的例子中,所有非ASCII都是有效的,因此,剩下的唯一工作是修复模块110转到最后步骤,并标记或删除无效ASCII字符字节序列|189|180 231|202 211|189 218|196 191|汉字 |(标记/删除)| 电 | 视 | 节 | 目 |从而恢复正确的序列。
当然,尽管我们已经描绘了分立的状态序列标记器100和修复模块110,但这只是为了例示和说明。像本发明的实践者所需要的那样,这些模块的功能可以整合在一起,或者相反,被进一步细分。
应该注意到,字节序列的“状态”是不明确的,因此,在本发明的用户的控制范围之内。为本发明的方法选择的状态依赖于某人希望消除的噪声。在上面的例子中,我们使用了三状态Markov模型,以及将ASCII状态指定成噪声状态。在我们感兴趣的噪声只是无效字节的情况下,这足够了,但是,我们可以将Markov模型扩展到找出其它噪声。例如,可以加入与标点符号、辅音字母、元音字母、大写字母等有关的附加状态,以监视其它形式的损坏。
我们甚至可以使用每次分析两个或更多个字节,而不是每次分析一个字节的Markov模型。因此,“来自某状态的字节”矩阵B(Xi|Si)将放大成具有稍作修改的状态的定义的2562x#个状态。这样的模型将挑出不允许的字节对(例如,在模型的英语形式中,字母q后面接着除了“u”之外的任何其它字母都被挑作噪声,或任何辅音字母后面接着元音字母都是不合适的)。
应该明白,除非另有明确说明,本文公开的所有物理量不能被解释成完全等同于公开的物理量,而是大致等同于公开的物理量。并且,仅仅缺乏诸如“大致”等的限定词也不能被解释成任何这样的公开物理量是确切物理量的明确表示,与是否针对本文公开的任何其它物理量使用这样的限定词无关。
虽然已经示出和描述了本发明的优选实施例,但是,可以对它们作出各种各样的修改和替代,而不偏离本发明的精神和范围。因此,应该明白,本发明只是通过例示得到描述,像本文已经公开的那样的例示和实施例不能被解释成对权利要求书的限制。
权利要求
1.一种确认字节序列的方法,该方法包括为字节序列定义多个状态;从多个状态当中指定一个或多个噪声状态;为字节序列生成最可能状态序列;利用所述状态序列识别字节序列中的所有噪声;和将所述噪声定位在所述噪声状态中。
2.根据权利要求1所述的方法,进一步包括从字节序列中删除所述噪声。
3.根据权利要求1所述的方法,其中,还将ASCII状态指定成噪声状态。
4.根据权利要求1所述的方法,其中,最可能状态序列的所述生成包括计算P(X0...XN|S0...SN),这里P(X0...XN|S0...SN)代表给定状态序列条件下所述字节序列的条件概率。
5.根据权利要求1所述的方法,其中,所述计算P(X0...XN|S0...SN)包括将状态标记Si指定给字节序列的第i字节Xi,以便使如下等式达到最大P(X0···XN|S0···SN)=P0(S0)[Πi=1NA‾(Si|Si-1)][Πi=0NB‾(Xi|Si)]]]>其中,P0(S0)是状态的初始分布;A(Si|Si-1)是“状态到状态”转移矩阵;而B(Xi|Si)是给定状态Si条件下生成字节值Xi的概率的“来自某状态的字节”矩阵。
6.根据权利要求5所述的方法,其中 其中,每个p(Si-1→Si)是在具有σ个状态的有效字节序列中特定Si状态正好在Si-1状态之后的概率。
7.根据权利要求6所述的方法,其中A‾(Si|Si-1)=p(A→A)p(A→GB1)p(A→GB2)p(GB1→A)p(GB1→GB1)p(GB1→GB2)p(GB2→A)p(GB2→GB1)p(GB2→GB2)]]>其中,每个p(Si-1→Si)是在具有三个状态的有效字节序列中特定Si状态正好在Si-1状态之后的概率。
8.根据权利要求7所述的方法,其中A‾(Si|Si-1)=0.9951570.00484300010.0379440.9620560]]>而所述有数字节序列是GB2312-80字符集下的有效文本。
9.根据权利要求5所述的方法,其中 其中,hs(Xi)是σ个状态的直方图函数,而εj(Xi)是在字节值Xi的r+1个范围内,与多个字节的噪声状态的关联噪声的概率。
10.根据权利要求5所述的方法,其中B‾(Xi|Si)=hA(Xi=1)00··················hA(Xi=127)00ϵ1(Xi=128)00··················ϵ1(Xi=160)ϵ2(Xi=161)h1(Xi=161)h2(Xi=161)··················ϵ2(Xi=254)h1(Xi=254)h2(Xi=254)ϵ3(Xi=255)00]]>其中,hs(Xi)是状态的直方图函数,而εj(Xi)是在三状态字节序列的多个Xi范围内,与ASCII状态的关联噪声的概率。
11.根据权利要求10所述的方法,进一步包括提供具有ASCII状态和包括有效ASCII和双字节字符的有效三状态字节序列;通过包括如下步骤的方法计算ASCII直方图hs(Xi)取样有效ASCII文本,以便测量每个字节值的出现频率;在Xi的ASCII范围上计算所述取样的非标准化ASCII直方图;和标准化所述非标准化ASCII直方图,以便包含所述ASCII直方图的矩阵的整个列加起来等于1;通过取样有效双字节文本和在奇数字节上计算非标准化第一字节直方图计算第一字节直方图h1(Xi),并标准化所述第一字节直方图,以便包含所述第一字节直方图的矩阵的整个列加起来等于1;和通过取样有效双字节文本和在偶数字节上计算非标准化第二字节直方图计算第二字节直方图h2(Xi),并标准化所述第二字节直方图,以便包含所述第二字节直方图的矩阵的整个列加起来等于1。
12.一种有形地体现可被机器执行以完成确认字节序列的方法步骤的指令程序的机器可读程序存储设备,所述方法包括为字节序列定义多个状态;从多个状态当中指定一个或多个噪声状态;为字节序列生成最可能状态序列;利用所述状态序列识别字节序列中的所有噪声;和将所述噪声定位在所述噪声状态中。
13.根据权利要求12所述的设备,其中,所述噪声在所述噪声状态中的所述定位包括检查所述字节序列中与噪声状态不对应的每个字节;确定该字节是非有效;和如果该字节无效,那么,将所述字节的状态重新指定成噪声状态。
14.根据权利要求13所述的设备,进一步包括有效字节的查找表;和其中,字节是否有效的所述确定通过访问所述查找表完成。
15.一种确认字节序列的方法,该方法包括为字节序列定义包括至少一个ASCII状态的多个状态;将至少一个ASCII状态指定成噪声状态;通过包括如下步骤的方法为字节序列生成最可能状态序列计算P(X0...XN|S0...SN),P(X0...XN|S0...SN)代表给定状态序列所述字节序列的条件概率;其中,所述计算P(X0...XN|S0...SN)包括将状态标记Si指定给字节序列的第i字节Xi,以便使如下等式达到最大P(X0···XN|S0···SN)=P0(S0)[Πi=1NA‾(Si|Si-1)][Πi=0NB‾(Xi|Si)]]]>其中,P0(S0)是状态的初始分布;A(Si|Si-1)是“状态到状态”转移矩阵;而B(Xi|Si)是给定状态Si条件下生成字节值Xi的概率的“来自某状态的字节”矩阵;利用所述状态序列识别字节序列中的所有噪声;将所述噪声定位在所述噪声状态中;和从字节序列中删除所述噪声。
全文摘要
本发明公开了确认具有多个状态的字节序列的方法,该方法包括从多个状态当中指定一个或多个噪声状态;为字节序列生成最可能状态序列;利用所述状态序列识别字节序列中的所有噪声;和将所述噪声定位在所述噪声状态中。一旦得到定位,可以从字节序列中删除噪声。
文档编号H03M7/30GK1695121SQ02829961
公开日2005年11月9日 申请日期2002年11月27日 优先权日2001年6月15日
发明者杰弗里·S·麦卡利, 朱玮晶 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1