文本编码识别方法和装置与流程

文档序号:11407122阅读:277来源:国知局
文本编码识别方法和装置与流程

本发明涉及计算机技术领域,特别是涉及一种文本编码识别方法和装置。



背景技术:

伴随着互联网的快速发展,全世界的网民之间的联系越来越紧密,越来越多的人依赖于通过网络获取信息。但是由于世界各地使用多种不同的语言,而每种语言又使用多种不同的文本编码,如果不对信息进行编码识别和转换的话,就会出现乱码的问题,导致信息传递出现障碍。

传统技术中,基于文本编码范围的编码识别方法指的是基于每种文本编码的特定范围,判断信息是否在该范围之内,若是则判定该信息采用此种文本编码。但是由于各种文本编码之间往往存在重叠的部分,所以此种基于文本编码范围的编码识别方法经常会出现错误,造成乱码的问题。基于字符分布的编码识别方法的基本思路是:每种语言都有其特定的字符分布规律。所以可事先建立每种语言的字符分布模型,通过字符分布模型对信息进行编码识别,此种方法的问题在于,不仅难以避免不出现识别错误,还会花费大量的时间,效率低下。



技术实现要素:

基于此,有必要针对上述问题,提供一种能高效地、准确地进行文本编码识别的文本编码识别方法和装置。

一种文本编码识别方法,所述方法包括:

获取待识别文本,确定所述待识别文本对应的多个编码种类;

从所述待识别文本中提取字符串,根据所述多个编码种类分别对所述字符串进行编码,生成与每个编码种类对应的字符串编码结果;

将每个所述字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对所述多个编码种类进行第一次排序;

将每个所述字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对所述多个编码种类进行第二次排序;

根据所述多个编码种类分别对所述待识别文本进行编码,生成与每个编码种类对应的文本编码结果;

将每个所述文本编码结果与所述预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对所述多个编码种类进行第三次排序;

获取所述多个编码种类对应的匹配字符数量最多的编码种类,根据所述匹配字符数量最多的编码种类对所述待识别文本进行编码。

一种文本编码识别装置,所述装置包括:

编码种类确定模块,用于获取待识别文本,确定所述待识别文本对应的多个编码种类;

编码结果生成模块,用于从所述待识别文本中提取字符串,根据所述多个编码种类分别对所述字符串进行编码,生成与每个编码种类对应的字符串编码结果;

排序模块,用于将每个所述字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对所述多个编码种类进行第一次排序;用于将每个所述字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对所述多个编码种类进行第二次排序;

所述编码结果生成模块还用于根据所述多个编码种类分别对所述待识别文本进行编码,生成与每个编码种类对应的文本编码结果;

所述排序模块还用于将每个所述文本编码结果与所述预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对所述多个编码种类进行第三次排序;

编码模块,用于获取所述多个编码种类对应的匹配字符数量最多的编码种类,根据所述匹配字符数量最多的编码种类对所述待识别文本进行编码。

上述文本编码识别方法和装置,根据待识别文本确定对应的多个编码种类,从待识别文本中提取一定长度的字符串,使用多个编码种类分别对该字符串进行编码,生成与每个编码种类对应的字符串编码结果,将每个字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第一次排序,将每个字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序,根据多个编码种类分别对待识别文本进行编码,生成与每个编码种类对应的文本编码结果;将每个文本编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第三次排序,获取多个编码种类对应的匹配字符数量最多的编码种类,根据匹配字符数量最多的编码种类对待识别文本进行编码。使得文本编码识别具备广泛的适用性,可高效地、准确地进行文本编码识别。

附图说明

图1为一个实施例中文本编码识别方法的流程图;

图2为另一个实施例中文本编码识别方法的流程图;

图3为一个实施例中文本编码识别方法建立样本库的流程图;

图4为一个实施例中文本编码识别装置的结构框图;

图5为另一个实施例中文本编码识别装置的结构框图;

图6为又一个实施例中文本编码识别装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,在一个实施例中,提供了一种文本编码识别方法,该方法包括:

s102,获取待识别文本,确定待识别文本对应的多个编码种类。

本实施例中,待识别文本指的是任意语言及任意编码种类的文字组成的文本,在对其进行识别之前,无法得知该文本采用采用何种编码。对于每种语言预先设定其对应的多个编码种类,在获取待识别文本后,通过文本中的文字可以得知该文本使用的语言,从而确定该待识别文本对应的多个编码种类。

s104,从待识别文本中提取字符串,根据多个编码种类分别对字符串进行编码,生成与每个编码种类对应的字符串编码结果。

本实施例中,从待识别文本中提取字符串可采用多种方式,包括但是不限于提取预设数量的字符串、提取预设百分比的字符串、提取系统界面中输入数量的字符串或提取系统界面中输入百分比的字符串。在具体的提取方式上,也可选择顺序提取、倒序提取或随机抽取等方式。例如待识别文本中包括3种语言,则可根据每种语言文字占文本总文字数的比例,按比例提取每种语言的字符串。编码指的是信息从一种形式或格式转换为另一种形式的过程。一个文本存在一个或多个可正确识别文本的编码种类,通过该正确的编码种类对待识别文本进行编码可生成正确的编码结果。

s106,将每个字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第一次排序。

本实施例中,样本库是预先设立作为样本参照的字符库,按照不同的语言通过对随机获取的多个分类的文本进行字频统计,通过各编码种类对出现次数最多的字符进行编码,从而建立各编码种类对应的样本库。样本库包括但是不限于样本字符库和样本词语库。将每个字符串编码结果与样本库中的字符进行匹配,可得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第一次排序。其中可选择按照匹配字符的数量由大到小的方式进行排序或由小到大的方式进行排序等排序方式。

s108,将每个字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序。

本实施例中,全字符库是预先对每种语言的每种编码,尽可能全面的收集其字符,从而建立每种编码对应的全字符库。例如可以词典为基础收集字符。将每个字符串编码结果与全字符库中的字符进行匹配,可得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序。其中可选择按照匹配字符的数量由大到小的方式进行排序或由小到大的方式进行排序等排序方式。

具体的,每个编码种类对应的字符串编码结果的编码识别情况是不同的,有的字符串编码结果与全字符库进行匹配可得到很多匹配的字符,那么认为该字符串编码结果对应的编码种类很可能是待识别文本的编码种类,匹配字符的数量越多,概率越大;若系统检测到某个编码种类对应的字符串编码结果与全字符库进行匹配的匹配字符的数量超过预设的阈值,则可判断该编码种类是否是待识别文本的编码种类,或直接确定该编码种类是待识别文本的编码种类。在确定待识别文本的编码种类后可终止文本编码识别过程,提升效率。反之,若字符串编码结果与全字符库进行匹配后,匹配字符的数量极少,甚至为0。那么可在本步骤中直接排除该字符串编码结果对应的编码种类,将该编码种类从多个编码种类中删除,在后续步骤中不再使用该编码种类及其对应的字符串编码结果,避免不必要的计算。

s110,根据多个编码种类分别对待识别文本进行编码,生成与每个编码种类对应的文本编码结果。

本实施例中,通过多个编码种类分别对待识别文本进行编码,可生成与每个编码种类对应的文本编码结果。通过对待识别文本整体进行处理,可得到更加稳定的处理结果。

s112,将每个文本编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第三次排序。

本实施例中,每个编码种类对应的文本编码结果的编码识别情况是不同的,有的文本编码结果与全字符库进行匹配可得到很多匹配的字符,那么认为该文本编码结果对应的编码种类很可能是待识别文本的编码种类,匹配字符的数量越多,概率越大;若系统检测到某个编码种类对应的文本编码结果与全字符库进行匹配的匹配字符的数量超过预设的阈值,则可判断该编码种类是否是待识别文本的编码种类,或直接确定该编码种类是待识别文本的编码种类。在确定待识别文本的编码种类后可终止文本编码识别过程,提升效率。反之,若文本编码结果与全字符库进行匹配后,匹配字符的数量极少,甚至为0。那么可在本步骤中直接排除该文本编码结果对应的编码种类,将该编码种类从多个编码种类中删除,在后续步骤中不再使用该编码种类及其对应的文本编码结果,避免不必要的计算。

s114,获取多个编码种类对应的匹配字符数量最多的编码种类,根据匹配字符数量最多的编码种类对待识别文本进行编码。

本实施例中,在第一次排序和第二次排序中,匹配字符数量最多的编码种类是待识别文本的编码种类的概率最大,在经过第三次排序后,若多个编码中存在待识别文本的编码种类,则一般为匹配字符数量最多的编码种类。根据该编码种类对待识别文本进行编码,可得到普通人可正常阅读的文本。

在一个实施例中,文本编码识别的流程中,可采用编码种类一个一个处理的执行方式,即随机或按照一定的规律选择一个编码种类,从s104开始执行,在执行过程中若检测到该编码种类明显不是待识别文本的编码种类,则停止执行,将该编码种类从多个编码种类中删除,选择下一个编码开始执行。若检测到该编码种类匹配字符的数量超过预设的阈值,则可判断该编码种类是否是待识别文本的编码种类,或直接确定该编码种类是待识别文本的编码种类。在确定待识别文本的编码种类后可终止文本编码识别过程。

在一个实施例中,值得说明的是,在对多个编码种类进行第一次排序之后,可得到经过第一次排序的多个编码种类,从中提取匹配字符的数量最多的一个或多个编码种类,执行后续步骤,或直接检测该一个或多个编码种类是否为待识别文本的编码种类,很大程度上减少运算步骤,提升效率。此方式也适用于在对多个编码种类进行第二次排序之后,以及其它灵活的实施方式,以实现在保证准确性的前提性,提升文本编码识别效率。

上述文本编码识别方法和装置,根据待识别文本确定对应的多个编码种类,从待识别文本中提取一定长度的字符串,使用多个编码种类分别对该字符串进行编码,生成与每个编码种类对应的字符串编码结果,将每个字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第一次排序,将每个字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序,根据多个编码种类分别对待识别文本进行编码,生成与每个编码种类对应的文本编码结果;将每个文本编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第三次排序,获取多个编码种类对应的匹配字符数量最多的编码种类,根据匹配字符数量最多的编码种类对待识别文本进行编码。使得文本编码识别具备广泛的适用性,可高效地、准确地进行文本编码识别。

如图2所示,在一个实施例中,提供了一种文本编码识别方法,该方法包括:

s202,获取待识别文本。

本实施例中,获取到的待识别文本是任意语言及任意编码种类的文字组成的文本。

s204,判断待识别文本是否存在字节顺序标记,若是,进入步骤s206,若否,进入步骤s210。

本实施例中,字节顺序标记(bom,byteordermark)一般出现在文本头部,用于标识文本采用的编码种类,标识一般由预设位数的数字、字母和特殊符号中的至少一种组成,每一个编码种类被设置了对应的标识,根据该编码种类的标识可唯一识别对应的编码种类。

s206,若待识别文本存在字节顺序标记,则根据字节顺序标记确定待识别文本的编码种类。

本实施例中,每个字节顺序标记对应着唯一的编码种类,根据字节顺序标记可确定待识别文本的编码种类。例如字符零宽无间断间隔(zerowidthno-breakspace)可作为文本的第一个字符,当其为feff时,表明文本编码种类为big-endian,当其为efbbbf时,表明文本编码种类为utf-8。

s208,根据字节顺序标记确定的编码种类对待识别文本进行编码。

本实施例中,根据字节顺序标记可确定待识别文本对应的编码种类,根据该编码种类对待识别文本进行编码,可得到普通人可正常阅读的文本。

s210,确定待识别文本对应的多个编码种类。

本实施例中,对于每种语言预先设定其对应的多个编码种类,在获取待识别文本后,通过文本中的文字可以得知该文本使用的语言,从而确定该待识别文本对应的多个编码种类。其中判断文本语言的过程可通过终端自动判定,也可经人工处理后将判定结果反馈给终端。例如,该待识别文本由中文简体、英文、法文构成,则确定该文本对应的编码种类包括预先设定中文简体的多个编码种类、英文的多个编码种类和法文的多个编码种类。

s212,从待识别文本中提取字符串,检测字符串是否超出多个编码种类中的任意一个编码种类的范围,若是,则将超出范围的编码种类从多个编码种类中删除。

本实施例中,可采用多种方式,在待识别文本中提取一定数量的字符,通过提取到的字符对待识别文本的编码种类进行检测和排除。具体的,每个编码种类都有其固定的范围,若字符串中存在超出该范围的字符,则可以判定该编码种类不是待识别文本的编码种类,将该编码种类从多个编码种类中删除。这个过程可以选择多种方式实现,例如采用状态机对整个流程进行控制。

s214,从待识别文本中提取字符串,根据多个编码种类分别对字符串进行编码,生成与每个编码种类对应的字符串编码结果。

本实施例中,编码指的是信息从一种形式或格式转换为另一种形式的过程。一个文本存在一个或多个可正确识别文本的编码种类,通过该正确的编码种类对待识别文本进行编码可生成正确的编码结果。例如通过utf-8对一般的中文简体文本进行识别可得到正确的文本文件,不会出现乱码的问题。本实施例中,从待识别文本中提取一定数量的字符,根据待识别文本对应的多个编码种类分别对这些字符进行编码,生成与每个编码种类对应的多个字符编码结果。

s216,将每个字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第一次排序。

具体的,每个编码种类对应的字符串编码结果的编码识别情况是不同的,有的字符串编码结果与样本库进行匹配可得到很多匹配的字符,那么认为该字符串编码结果对应的编码种类很可能是待识别文本的编码种类,匹配字符的数量越多,概率越大;若系统检测到某个编码种类对应的字符串编码结果与样本库进行匹配的匹配字符的数量超过预设的阈值,则可判断该编码种类是否是待识别文本的编码种类,或直接确定该编码种类是待识别文本的编码种类。在确定待识别文本的编码种类后可终止文本编码识别过程,提升效率。反之,若字符串编码结果与样本库进行匹配后,匹配字符的数量极少,甚至为0。那么可在本步骤中直接排除该字符串编码结果对应的编码种类,将该编码种类从多个编码种类中删除,在后续步骤中不再使用该编码种类及其对应的字符串编码结果,避免不必要的计算。

s218,将每个字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序。

本实施例中,将每个字符串编码结果与全字符库中的字符进行匹配,可得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序。其中可选择按照匹配字符的数量由大到小的方式进行排序或由小到大的方式进行排序等排序方式。

s220,根据多个编码种类分别对待识别文本进行编码,生成与每个编码种类对应的文本编码结果。

本实施例中,在对多个编码种类进行第二次排序之后,可得到一个较小的编码种类范围,通过多个编码种类分别对待识别文本进行编码,可生成每个编码对应的文本编码结果。

s222,将每个文本编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第三次排序。

本实施例中,若多个编码种类中存在待识别文本对应的编码种类,则在将每个文本编码结果与预设全字符库中的字符进行匹配后,可以很容易的确定匹配字符的数量最多的编码种类为待识别文本对应的编码种类。具体的,对于字符串的处理是为了排除和筛选编码种类,选出最可能为待识别文本对应的编码种类,尽可能的提升效率,减少不必要的计算。而对于待识别文本的处理,则可以问编码识别提供稳定、准确的结果。

s224,获取经过第三次排序的多个编码种类中匹配字符数量最多的编码种类对应的文本编码结果。

本实施例中,经过第三次排序的多个编码种类中,匹配字符数量最多的编码种类是待识别文本的编码种类的概率最大,根据第三次排序的方式,可以直接获取该编码种类对应的文本编码结果。例如,若第三次排序是按照匹配字符数量的多少依序排列的话,则第一个编码种类为匹配字符的数量最多的编码种类。

s226,获取文本编码结果与预设全字符库中的字符进行匹配得到的匹配字符的数量。

本实施例中,每个文本编码结果对应着匹配字符的数量,根据匹配字符的数量可判断该文本编码结果对应的编码种类是否是待识别文本的编码种类。

在一个实施例中,在s222中,在将每个文本编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量的步骤之后,可获取到多个编码种类中匹配字符的数量最多的编码种类,直接进入s228,对该编码种类进行检测,判断该编码种类是否是待识别文本的编码种类。

s228,判断匹配字符的数量占待识别文本字符数量的比例是否超过预设的阈值,若是,则确定多个编码种类对应的匹配字符数量最多的编码种类为待识别文本的编码种类。

本实施例中,根据匹配字符的数量和待识别文本的字符数量的比值,可以计算出匹配字符的数量占待识别文本字符数量的比例,这个比例的数值范围是大于等于0且小于等于1,越接近1说明该编码种类的匹配程度越高,当这个比例为1时,则通过该编码种类可以完全识别待识别文本。具体的,可预先设定一个阈值作为标准,例如0.95,当匹配字符的数量占待识别文本的95%以上时,可确定该编码种类为待识别文本的编码种类。

s230,根据确定的编码种类对待识别文本进行编码。

本实施例中,根据该编码种类对待识别文本进行编码,可通过原本使用不同语言或不同编码的文本,生成任意语言的可供普通人正常阅读的文本。

在一个实施例中,文本编码识别方法还包括:对待识别文本进行预处理。

本实施例中,可统计待识别文本的大小、占用空间、行数、字符数等数据。在预处理的过程中,若检测到待识别文本中存在除文本外的其它内容,例如图片等,则需将这些内容剔除,避免对文本识别过程产生不利影响。

如图3所示,在一个实施例中,提供了一种建立样本库的方法,该方法包括:

s302,依照预设的分类随机获取多个文本。

本实施例中,预设分类可为学科分类、文本性质分类或用户群分类等。通过获取不同类别的文本,可得到不同领域的文本内容,以获取更全面的样本内容。

s304,统计多个文本中的字符出现频率,按照频率高低对多个文本中的字符进行排序。

本实施例中,根据字符的含义和使用习惯等因素,其使用频率大小有所不同,通过对多个文本中的字符的出现频率进行统计,可获得不同类别的文本的字符使用情况,按照频率高低对多个文本中的字符进行排序。

s306,选择多个文本中排序在先的预设数量的字符建立高频库。

本实施例中,通过选择多个文本中排序在先的预设数量的字符,可获得不同分类的文本中,使用频率最高的字符,这些字符也是各领域中最具代表性的字符,利用这些字符可建立高频库。

s308,通过多个编码种类对高频库进行编码,得到多个编码种类对应的样本库。

本实施例中,根据多个编码种类采用特定的编码方式对高频库进行编码,可得到多个编码种类对应的样本库,样本库可分为字符样本库和词语样本库,词语样本库与字符样本库的不同之处在于,其对于文本的处理是以词语为单位进行的,如在中文中,词语样本库的建立包括对成语和谚语的处理,在英文中,词语的识别需要识别空格的作用和字符的含义。

如图4所示,在一个实施例中,提供了一种文本编码识别装置400,包括:

编码种类确定模块402,用于获取待识别文本,确定待识别文本对应的多个编码种类。

编码结果生成模块404,用于从待识别文本中提取字符串,根据多个编码种类分别对字符串进行编码,生成与每个编码种类对应的字符串编码结果。

排序模块406,用于将每个字符串编码结果与预设样本库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第一次排序;用于将每个字符串编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第二次排序。

编码结果生成模块404还用于根据多个编码种类分别对待识别文本进行编码,生成与每个编码种类对应的文本编码结果。

排序模块406还用于将每个文本编码结果与预设全字符库中的字符进行匹配,得到匹配字符的数量,按照匹配字符的数量对多个编码种类进行第三次排序。

编码模块408,用于获取多个编码种类对应的匹配字符数量最多的编码种类,根据匹配字符数量最多的编码种类对待识别文本进行编码。

如图5所示,在一个实施例中,提供了一种文本编码识别装置400,包括:

字节顺序标记模块410,用于判断待识别文本是否存在字节顺序标记,若否,则进入确定待识别文本对应的多个编码种类的步骤;用于若待识别文本存在字节顺序标记,则根据字节顺序标记确定待识别文本的编码种类。

编码模块408还用于根据字节顺序标记确定的编码种类对待识别文本进行编码。

编码结果获取模块412,用于获取经过第三次排序的多个编码种类中匹配字符数量最多的编码种类对应的文本编码结果。

数量获取模块414,用于获取文本编码结果与预设全字符库中的字符进行匹配得到的匹配字符的数量。

阈值判断模块416,用于判断匹配字符的数量占待识别文本字符数量的比例是否超过预设的阈值,若是,则确定多个编码种类对应的匹配字符数量最多的编码种类为待识别文本的编码种类。

编码模块408还用于根据确定的编码种类对待识别文本进行编码。

编码种类删除模块418,用于从待识别文本中提取字符串,检测字符串是否超出多个编码种类中的任意一个编码种类的范围,若是,则将超出范围的编码种类从多个编码种类中删除。

如图6所示,在一个实施例中,提供了一种文本编码识别装置400,还包括:

文本获取模块420,用于依照预设的分类随机获取多个文本。

频率统计模块422,用于统计多个文本中的字符出现频率,按照频率高低对多个文本中的字符进行排序。

高频库建立模块424,用于选择多个文本中排序在先的预设数量的字符建立高频库。

样本库建立模块426,用于通过多个编码种类对高频库进行编码,得到多个编码种类对应的样本库。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1