发明内容
本申请实施例提供了一种字符串处理方法和装置,以至少解决对灌水帖的字符串中有效字符的比例计算速度慢的技术问题。
根据本申请实施例的一个方面,提供了一种字符串处理方法,包括:获取目标字符串;从所述目标字符串上随机选择预设数量的字符;利用预先设置的有效字符集从选择的所述预设数量的字符中确定出有效字符,统计所述有效字符的数量;以及根据所述预设数量和所述有效字符的数量计算选择的所述预设数量的字符中有效字符的比例,将所述比例作为所述目标字符串中有效字符的比例。
进一步地,在所述根据所述预设数量和所述有效字符的数量计算选择的所述预设数量的字符中有效字符的比例之后,所述方法还包括:记录所述有效字符的比例;判断从所述目标字符串上随机选择预设数量的字符的次数是否超过预设次数;在从所述目标字符串上随机选择预设数量的字符的次数未超过所述预设次数时,将从所述目标字符串上随机选择预设数量的字符的次数加1,并返回执行从所述目标字符串上随机选择预设数量的字符的步骤;在从所述目标字符串上随机选择预设数量的字符的次数超过所述预设次数时,计算记录的有效字符的比例的平均值,将所述平均值作为所述目标字符串中有效字符的比例。
进一步地,从所述目标字符串上随机选择预设数量的字符包括:从所述目标字符串上随机截取多个预设长度的字符串;利用预先设置的有效字符集从选择的所述预设数量的字符中确定出有效字符,统计所述有效字符的数量包括:利用所述预先设置的有效字符集分别从多个预设长度的字符串中确定出有效字符,统计每个预设长度的字符串中有效字符的数量;根据所述预设数量和所述有效字符的数量计算选择的所述预设数量的字符中有效字符的比例,将所述比例作为所述目标字符串中有效字符的比例包括:根据所述预设长度和所述每个预设长度的字符串中有效字符的数量分别计算每个预设长度的字符串中有效字符的比例,计算所述多个预设长度的字符串中有效字符的比例的平均值,将所述平均值作为所述目标字符串中有效字符的比例。
进一步地,在获取目标字符串之后,所述方法还包括:计算所述目标字符串的长度;从所述目标字符串上随机选择预设数量的字符包括:随机生成所述预设数量的随机数,其中,所述随机数为小于目标字符串的长度的正整数;以所述随机数作为位置编号,从所述目标字符串上选择所述随机数对应的位置处的字符。
进一步地,在获取目标字符串之后,以及从所述目标字符串上随机选择预设数量的字符之前,所述方法还包括:计算所述目标字符串的长度;判断所述目标字符串的长度是否小于长度阈值;在判断所述目标字符串的长度小于所述长度阈值时,利用预先设置的有效字符集遍历所述目标字符串得到有效字符的数量,并计算所述目标字符串上有效字符的比例;在判断所述目标字符串的长度大于等于所述长度阈值时,确定从所述目标字符串上随机选择预设数量的字符。
根据本申请实施例的另一方面,还提供了一种字符串处理装置,包括:获取单元,用于获取目标字符串;选择单元,用于从所述目标字符串上随机选择预设数量的字符;第一确定单元,用于利用预先设置的有效字符集从选择的所述预设数量的字符中确定出有效字符,统计所述有效字符的数量;以及第一计算单元,用于根据所述预设数量和所述有效字符的数量计算选择的所述预设数量的字符中有效字符的比例,将所述比例作为所述目标字符串中有效字符的比例。
进一步地,所述装置还包括:记录单元,用于在所述根据所述预设数量和所述有效字符的数量计算选择的所述预设数量的字符中有效字符的比例之后,记录所述有效字符的比例;第一判断单元,用于判断从所述目标字符串上随机选择预设数量的字符的次数是否超过预设次数;所述第一确定单元具体用于在从所述目标字符串上随机选择预设数量的字符的次数未超过所述预设次数时,将从所述目标字符串上随机选择预设数量的字符的次数加1,并执行从所述目标字符串上随机选择预设数量的字符的步骤;所述第一计算单元具体用于在从所述目标字符串上随机选择预设数量的字符的次数超过所述预设次数时,计算记录的有效字符的比例的平均值,将所述平均值作为所述目标字符串中有效字符的比例。
进一步地,所述获取单元具体用于从所述目标字符串上随机截取多个预设长度的字符串;所述第一确定单元具体用于利用所述预先设置的有效字符集分别从多个预设长度的字符串中确定出有效字符,统计每个预设长度的字符串中有效字符的数量;所述第一计算单元具体用于根据所述预设长度和所述每个预设长度的字符串中有效字符的数量分别计算每个预设长度的字符串中有效字符的比例,计算所述多个预设长度的字符串中有效字符的比例的平均值,将所述平均值作为所述目标字符串中有效字符的比例。
进一步地,所述装置还包括:第二计算单元,在获取目标字符串之后,计算所述目标字符串的长度;所述选择单元包括:生成模块,用于随机生成所述预设数量的随机数,其中,所述随机数为小于目标字符串的长度的正整数;选择模块,用于以所述随机数作为位置编号,从所述目标字符串上选择所述随机数对应的位置处的字符。
进一步地,所述装置还包括:第三计算单元,用于在获取目标字符串之后,以及从所述目标字符串上随机选择预设数量的字符之前,计算所述目标字符串的长度;第二判断单元,用于判断所述目标字符串的长度是否小于长度阈值;遍历单元,用于在判断所述目标字符串的长度小于所述长度阈值时,利用预先设置的有效字符集遍历所述目标字符串得到有效字符的数量,并计算所述目标字符串上有效字符的比例;第二确定单元,用于在判断所述目标字符串的长度大于等于所述长度阈值时,确定从所述目标字符串上随机选择预设数量的字符。
根据本申请实施例,通过获取目标字符串,从目标字符串上随机选择预设数量的字符,利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量,根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例,将该比例作为目标字符串中有效字符的比例,解决了对灌水帖的字符串中有效字符的比例计算速度慢的技术问题,提高了对灌水帖的字符串中有效字符的比例计算速度。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例,提供了一种字符串处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的字符串处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取目标字符串。
步骤S104,从目标字符串上随机选择预设数量的字符。
步骤S106,利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量。
步骤S108,根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例。将该比例作为目标字符串中有效字符的比例。
目标字符串可以是待测帖子所包含的字符串。在获取到目标字符串之后,从其中随机选择预设数量的字符,选择的字符数量即预设数量可以根据需求进行设置。再利用预先设置的有效字符集对选择出的字符进行遍历,确定出其中的有效字符。有效字符集中包含有给定的有效字符,在确定有效字符时,可以将选择的字符与该有效字符集进行匹配,如果匹配上有效字符集中的字符,则认为该选择的字符为有效字符,依次遍历选择的预设数量中所有的字符,得到其中有效字符,并统计有效字符的数量。
在得到选择的预设数量中的有效字符的数量之后,有效字符的数量除以预设数量即可得到选择的预设数量中有效字符的比例,本实施例中,将该比例作为目标字符串中有效字符的比例,从而得到整个待测帖子中的有效字符的比例,继而可以通过判断该比例是否超过预设比例来确定该待测帖子是否为灌水帖,若超过,则为灌水帖。
本实施例中,选择的预设数量的字符相当于是对目标字符串的采样,通过随机选择预设数量的字符来进行采样,使得采样中有效字符的比例与目标字符串中有效字符的比例较为接近,可以将采样中有效字符的比例作为目标字符串中有效字符的比例。而由于采样的字符比目标字符串所包含的字符数量少,从而降低遍历的字符数量,从而快速确定出目标字符串中有效字符的数量,进而提高灌水帖的识别效率。
根据本申请实施例,通过获取目标字符串,从目标字符串上随机选择预设数量的字符,利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量,根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例,将该比例作为目标字符串中有效字符的比例,解决了对灌水帖的字符串中有效字符的比例计算速度慢的技术问题,提高了对灌水帖的字符串中有效字符的比例计算速度。
优选地,在根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例之后,方法还包括:记录有效字符的比例;判断从目标字符串上随机选择预设数量的字符的次数是否超过预设次数;在从目标字符串上随机选择预设数量的字符的次数未超过预设次数时,将从目标字符串上随机选择预设数量的字符的次数加1,并返回执行从目标字符串上随机选择预设数量的字符的步骤;在从目标字符串上随机选择预设数量的字符的次数超过预设次数时,计算记录的有效字符的比例的平均值,将平均值作为目标字符串中有效字符的比例。
具体地,如图2所示,本实施例的字符串处理方法包括:
步骤S202,获取目标字符串。
步骤S204,从目标字符串上随机选择预设数量的字符。
步骤S206,利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量。
步骤S208,根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例。
上述步骤以此与图1中的步骤S102至S108基本类似,这里不做赘述。其在计算得到预设数量中有效字符的比例之后,还执行以下步骤:
步骤S210,记录有效字符的比例。
步骤S212,判断从目标字符串上随机选择预设数量的字符的次数是否超过预设次数。在从目标字符串上随机选择预设数量的字符的次数未超过预设次数时,执行步骤S214,反之,则执行步骤S216。
步骤S214,将从目标字符串上随机选择预设数量的字符的次数加1,返回步骤S204。
步骤S216,计算记录的有效字符的比例的平均值,将平均值作为目标字符串中有效字符的比例。
本实施例中,对目标字符串进行多次采样,即多次(即预设次数)从目标字符串上随机选择预设数量的字符,然后计算得到每次的有效字符的比例,再求平均值,将该平均值作为目标字符串中有效字符的比例,提高确定出的目标字符串中有效字符的比例的准确性。
根据伯努利大数定律:
其中,A表示是有效字符,n为预设数量,fA表示n个字符中有效字符的个数,p为n个字符中任意一个字符是有效字符的概率,ε为任意的正数。
基于该原理,可以根据应用的需求,如根据要求的解析准确率或者解析的消耗时间,灵活的设置采样次数和各项阈值,大大的减少了遍历字符串的消耗。
优选地,从目标字符串上随机选择预设数量的字符包括:从目标字符串上随机截取多个预设长度的字符串;利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量包括:利用预先设置的有效字符集分别从多个预设长度的字符串中确定出有效字符,统计每个预设长度的字符串中有效字符的数量;根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例,将比例作为目标字符串中有效字符的比例包括:根据预设长度和每个预设长度的字符串中有效字符的数量分别计算每个预设长度的字符串中有效字符的比例,计算多个预设长度的字符串中有效字符的比例的平均值,将平均值作为目标字符串中有效字符的比例。
本实施例中,以预设长度的字符串为采样单位,从目标字符串中随机截取多个预设长度的字符串,然后计算对每个采样单位即预设长度的字符串中有效字符的比例,计算平均值,然后将该平均值作为目标字符串中有效字符的比例。
优选地,在获取目标字符串之后,方法还包括:计算目标字符串的长度;从目标字符串上随机选择预设数量的字符包括:随机生成预设数量的随机数,其中,随机数为小于目标字符串的长度的正整数;以随机数作为位置编号,从目标字符串上选择随机数对应的位置处的字符。
在获取到目标字符串之后,计算目标字符串的长度,在选择预设数量的字符时,先随机生成预设数量的小于目标字符串长度的随机数,该随机数各不相同,然后以该随机数作为位置编号从目标字符串中选择对应位置出的字符,例如,目标字符串的长度为10000,选择字符时,随机生成100个随机数,依次为:1、3、4、7、8、15、……9999,以这些随机数作为位置编号,依次选择目标字符串上第1、3、4、7、8、15、……9999个字符。
根据本申请实施例,通过随机生成的随机数来选择字符,保证字符选择的随机性,可以提高目标字符串中有效字符的比例的准确性。
优选地,在获取目标字符串之后,以及从目标字符串上随机选择预设数量的字符之前,方法还包括:计算目标字符串的长度;判断目标字符串的长度是否小于长度阈值;在判断目标字符串的长度小于长度阈值时,利用预先设置的有效字符集遍历目标字符串得到有效字符的数量,并计算目标字符串上有效字符的比例;在判断目标字符串的长度大于等于长度阈值时,确定从目标字符串上随机选择预设数量的字符。
本申请实施例中,预先设置长度阈值,该阈值可以根据需求进行设置,在获取到目标字符串之后,计算目标字符串的长度,然后利用预设设置的长度阈值对目标字符串进行判别,如果目标字符串的长度大于等于该长度阈值,表明目标字符串的长度较长,此时可以通过对目标字符串进行采样来确定其有效字符的比例,也即是,随机选择预设数量的字符,计算选择的字符中有效字符的比例,或者进一步地多次选择求平均的方式,将最终结果作为目标字符串中有效字符的比例。
如果目标字符串的长度小于该长度阈值,表明目标字符串的长度较短,可以利用有效字符集对目标字符串所有的字符进行遍历,从而在目标字符串比较短时,不影响有效字符的比例确定的时间的情况下,保证其准确性。
下面对本申请实施例的一种优选实施方式进行描述。具体包括:
(1获取目标字符串,先计算其长度为length;
(2)根据预先设定的长度阈值threshold_length(可根据需求自行设定),如果length<threshold_length,则利用遍历的方法计算其有效字符的比例;
(3)如果length>=threshold_length,设定2个值:sample_times和sample_nums;
(4)利用随机数生成方法,生成sample_nums个在0-length范围内的数;
(5)找到sample_nums个数在目标字符串上对应位置处的字符,其中有效字符为valid_nums,计算出valid_nums/sample_nums的值为valid_ratio;
(6)重复执行(4)到(5)的过程sample_times次,得到sample_times个valid_ratio,求出这些valid_ratio的平均值为valid_ratio_average,将该值作为整个字符串的有效字符的比例。
本申请实施例还提供了一种字符串处理装置,该装置可以用于执行本申请实施例的字符串处理方法,如图3所示,该装置包括:获取单元10、选择单元20、第一确定单元30和第一计算单元40。
获取单元10用于获取目标字符串。
选择单元20用于从目标字符串上随机选择预设数量的字符。
第一确定单元30用于利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量。
第一计算单元40用于根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例,将比例作为目标字符串中有效字符的比例。
目标字符串可以是待测帖子所包含的字符串。在获取到目标字符串之后,从其中随机选择预设数量的字符,选择的字符数量即预设数量可以根据需求进行设置。再利用预先设置的有效字符集对选择出的字符进行遍历,确定出其中的有效字符。有效字符集中包含有给定的有效字符,在确定有效字符时,可以将选择的字符与该有效字符集进行匹配,如果匹配上有效字符集中的字符,则认为该选择的字符为有效字符,依次遍历选择的预设数量中所有的字符,得到其中有效字符,并统计有效字符的数量。
在得到选择的预设数量中的有效字符的数量之后,有效字符的数量除以预设数量即可得到选择的预设数量中有效字符的比例,本实施例中,将该比例作为目标字符串中有效字符的比例,从而得到整个待测帖子中的有效字符的比例,继而可以通过判断该比例是否超过预设比例来确定该待测帖子是否为灌水帖,若超过,则为灌水帖。
本实施例中,选择的预设数量的字符相当于是对目标字符串的采样,通过随机选择预设数量的字符来进行采样,使得采样中有效字符的比例与目标字符串中有效字符的比例较为接近,可以将采样中有效字符的比例作为目标字符串中有效字符的比例。而由于采样的字符比目标字符串所包含的字符数量少,从而降低遍历的字符数量,从而快速确定出目标字符串中有效字符的数量,进而提高灌水帖的识别效率。
根据本申请实施例,通过获取目标字符串,从目标字符串上随机选择预设数量的字符,利用预先设置的有效字符集从选择的预设数量的字符中确定出有效字符,统计有效字符的数量,根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例,将该比例作为目标字符串中有效字符的比例,解决了对灌水帖的字符串中有效字符的比例计算速度慢的技术问题,提高了对灌水帖的字符串中有效字符的比例计算速度。
优选地,装置还包括:记录单元,用于在根据预设数量和有效字符的数量计算选择的预设数量的字符中有效字符的比例之后,记录有效字符的比例;第一判断单元,用于判断从目标字符串上随机选择预设数量的字符的次数是否超过预设次数;第一确定单元具体用于在从目标字符串上随机选择预设数量的字符的次数未超过预设次数时,将从目标字符串上随机选择预设数量的字符的次数加1,并执行从目标字符串上随机选择预设数量的字符的步骤;第一计算单元具体用于在从目标字符串上随机选择预设数量的字符的次数超过预设次数时,计算记录的有效字符的比例的平均值,将平均值作为目标字符串中有效字符的比例。
本实施例中,对目标字符串进行多次采样,即多次(即预设次数)从目标字符串上随机选择预设数量的字符,然后计算得到每次的有效字符的比例,再求平均值,将该平均值作为目标字符串中有效字符的比例,提高确定出的目标字符串中有效字符的比例的准确性。
优选地,获取单元具体用于从目标字符串上随机截取多个预设长度的字符串;第一确定单元具体用于利用预先设置的有效字符集分别从多个预设长度的字符串中确定出有效字符,统计每个预设长度的字符串中有效字符的数量;
第一计算单元具体用于根据预设长度和每个预设长度的字符串中有效字符的数量分别计算每个预设长度的字符串中有效字符的比例,计算多个预设长度的字符串中有效字符的比例的平均值,将平均值作为目标字符串中有效字符的比例。
本实施例中,以预设长度的字符串为采样单位,从目标字符串中随机截取多个预设长度的字符串,然后计算对每个采样单位即预设长度的字符串中有效字符的比例,计算平均值,然后将该平均值作为目标字符串中有效字符的比例。
优选地,装置还包括:第二计算单元,在获取目标字符串之后,计算目标字符串的长度;选择单元包括:生成模块,用于随机生成预设数量的随机数,其中,随机数为小于目标字符串的长度的正整数;选择模块,用于以随机数作为位置编号,从目标字符串上选择随机数对应的位置处的字符。
在获取到目标字符串之后,计算目标字符串的长度,在选择预设数量的字符时,先随机生成预设数量的小于目标字符串长度的随机数,该随机数各不相同,然后以该随机数作为位置编号从目标字符串中选择对应位置出的字符,例如,目标字符串的长度为10000,选择字符时,随机生成100个随机数,依次为:1、3、4、7、8、15、……9999,以这些随机数作为位置编号,依次选择目标字符串上第1、3、4、7、8、15、……9999个字符。
根据本申请实施例,通过随机生成的随机数来选择字符,保证字符选择的随机性,可以提高目标字符串中有效字符的比例的准确性。
优选地,装置还包括:第三计算单元,用于在获取目标字符串之后,以及从目标字符串上随机选择预设数量的字符之前,计算目标字符串的长度;第二判断单元,用于判断目标字符串的长度是否小于长度阈值;遍历单元,用于在判断目标字符串的长度小于长度阈值时,利用预先设置的有效字符集遍历目标字符串得到有效字符的数量,并计算目标字符串上有效字符的比例;第二确定单元,用于在判断目标字符串的长度大于等于长度阈值时,确定从目标字符串上随机选择预设数量的字符。
本申请实施例中,预先设置长度阈值,该阈值可以根据需求进行设置,在获取到目标字符串之后,计算目标字符串的长度,然后利用预设设置的长度阈值对目标字符串进行判别,如果目标字符串的长度大于等于该长度阈值,表明目标字符串的长度较长,此时可以通过对目标字符串进行采样来确定其有效字符的比例,也即是,随机选择预设数量的字符,计算选择的字符中有效字符的比例,或者进一步地多次选择求平均的方式,将最终结果作为目标字符串中有效字符的比例。
如果目标字符串的长度小于该长度阈值,表明目标字符串的长度较短,可以利用有效字符集对目标字符串所有的字符进行遍历,从而在目标字符串比较短时,不影响有效字符的比例确定的时间的情况下,保证其准确性。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。