CN107633062B - 敏感词查找方法、装置及电子设备 - Google Patents
敏感词查找方法、装置及电子设备 Download PDFInfo
- Publication number
- CN107633062B CN107633062B CN201710858344.XA CN201710858344A CN107633062B CN 107633062 B CN107633062 B CN 107633062B CN 201710858344 A CN201710858344 A CN 201710858344A CN 107633062 B CN107633062 B CN 107633062B
- Authority
- CN
- China
- Prior art keywords
- word
- sensitive
- input
- searching
- binary data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种敏感词查找方法、装置及电子设备,涉及计算机技术领域,该敏感词查找方法获取各个敏感词,对各个敏感词进行二进制编码并存储,以生成二进制数据词库;当接收到用户输入的输入文本时,获取该输入文本中的输入词;从上述二进制数据词库中查找与输入词匹配的敏感词,以确定输入词是否为敏感词。相比于基于树或者图进行查找的传统方法,本发明提供的实施例的查找过程是在二进制数据词库中进行的,无需生成多余的节点对象,占用内存小,有效节省了敏感词查找过程中占用的内存,进而保障了应用程序的流畅运行。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种敏感词查找方法、装置及电子设备。
背景技术
当前移动互联网发展迅速,移动游戏和移动应用开发门槛越来越低,无论大小企业或者个人开发者,都能自己开发移动应用程序。如果移动应用或移动游戏具有聊天交流和互动功能,避免不了会有用户发布一些不符合互联网使用环境甚至违反国家法规的词汇,如政治敏感、色情词汇等。因此,为提供健康和谐的互联网环境,需要对敏感词进行过滤。特别是移动游戏,如果不对敏感词进行过滤,该游戏还可能不允许上线到应用市场。
现有敏感词查找方法很多,大多是基于树或图来进行敏感词的查找和过滤。基于树或图的实现,需要生成很多个节点,如果用Java实现,则需要生成很多个节点对象。很多个对象累积起来会占用很大内存,而Java有自动垃圾回收机制,当内存不足时,会触发垃圾回收机制,垃圾回收过程也会占用额外的CPU(Central Processing Unit,中央处理器)资源。
例如Android等移动设备的内存和CPU大小有限,如果在这些移动设备上使用现有的敏感词查找和过滤方法来进行敏感词过滤,会因生成大量对象而占用设备内存,也会因内存不足而频繁触发垃圾回收机制,消耗CPU资源,从而影响游戏或应用的流畅运行,甚至导致卡顿。
发明内容
有鉴于此,本发明的目的在于提供一种敏感词查找方法、装置及电子设备,能够有效节省敏感词查找过程中占用的内存,保障应用程序的流畅运行,缓解了使用现有方法进行敏感词查找时占用大量内存而影响应用程序流畅运行的技术问题。
第一方面,本发明实施例提供了一种敏感词查找方法,包括:
获取各个敏感词,对所述各个敏感词进行二进制编码并存储,以生成二进制数据词库;
当接收到用户输入的输入文本时,获取所述输入文本中的输入词;
从所述二进制数据词库中查找与所述输入词匹配的敏感词,以确定所述输入词是否为敏感词。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,从所述二进制数据词库中查找与所述输入词匹配的敏感词,以确定所述输入词是否为敏感词包括:
从所述二进制数据词库中读取敏感词,将所述敏感词与所述输入词进行比较,以确定所述输入词是否为敏感词。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述对所述各个敏感词进行二进制编码并存储包括:
将各个敏感词按照字符串大小进行排序,将排序后的各个敏感词进行二进制编码并连续存储。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述从所述二进制数据词库中读取敏感词之前,包括:
对排序后的所述敏感词进行标号,并记录各个标号对应的敏感词在所述二进制数据词库中的存储地址;
根据所述存储地址及标号,生成索引数据;
所述从所述二进制数据词库中读取敏感词包括:
根据所述索引数据从所述二进制数据词库中读取敏感词。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述从所述二进制数据词库中查找与所述输入词匹配的敏感词包括:
采用二分法查找方式,从所述二进制数据词库中查找与所述输入词匹配的敏感词。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述将所述敏感词与所述输入词进行比较,以确定所述输入词是否为敏感词包括:
比较所述输入词与当前读取的敏感词,获取比较结果;
根据所述比较结果确定所述输入词与所述当前读取的敏感词的匹配程度,其中所述匹配程度包括未匹配、前匹配、全匹配;
根据所述匹配程度确定所述输入词是否为敏感词。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述二进制数据词库保存在本地文件中;
所述从所述二进制数据词库中读取敏感词包括:
通过随机访问文件的方式从所述本地文件中读取所述敏感词。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述二进制数据词库保存在本地终端的内存中;
所述从所述二进制数据词库中读取敏感词包括:
通过随机访问内存的方式从所述内存中读取所述敏感词。
第二方面,本发明实施例还提供一种敏感词查找装置,包括:
生成模块,用于获取各个敏感词,对所述各个敏感词进行二进制编码并存储,以生成二进制数据词库;
获取模块,用于当接收到用户输入的输入文本时,获取所述输入文本中的输入词;
确定模块,用于从所述二进制数据词库中查找与所述输入词匹配的敏感词,以确定所述输入词是否为敏感词。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
本发明实施例带来了以下有益效果:
在本发明提供的实施例中,首先获取各个敏感词,对各个敏感词进行二进制编码并存储,以生成二进制数据词库;当接收到用户输入的输入文本时,获取该输入文本中的输入词;然后从上述二进制数据词库中查找与输入词匹配的敏感词,以确定输入词是否为敏感词。这样,在敏感词查找的过程中,直接从二进制数据词库中读取敏感词,将待查找的输入词与敏感词对比。因此,相比于基于树或者图进行查找的传统方法,本发明提供的实施例的查找过程是在二进制数据词库中进行的,无需生成多余的节点对象,占用内存小,有效节省了敏感词查找过程中占用的内存,进而保障了应用程序的流畅运行。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的敏感词查找方法的流程示意图;
图2为本发明实施例提供的敏感词查找方法中二分法查找的流程示意图;
图3为本发明实施例提供的敏感词查找装置的结构示意图;
图4为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前使用现有的敏感词查找方法来进行敏感词查找,会因生成大量对象而占用设备内存,也会因内存不足而频繁触发垃圾回收机制,消耗CPU资源,从而影响游戏或应用的流畅运行,甚至导致卡顿。基于此,本发明实施例提供的一种敏感词查找方法、装置及电子设备,在二进制数据词库中进行敏感词查找,无需生成多余的节点对象,占用内存小,有效节省了敏感词查找过程中占用的内存,进而保障了应用程序的流畅运行。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种敏感词查找方法进行详细介绍。
实施例一:
本发明提供的实施例提供的敏感词查找方法,不限于敏感词、关键词等词语查找。图1示出了本发明实施例提供的敏感词查找方法的流程示意图。如图1所示,该敏感词查找方法,包括:
步骤S101,获取各个敏感词,对各个敏感词进行二进制编码并存储,以生成二进制数据词库。
具体地,为了便于后续对二进制数据词库的有序遍历,在一个实施例中,上述步骤S101包括:将各个敏感词按照字符串大小进行排序,将排序后的各个敏感词进行二进制编码并连续存储。优选地,可以通过函数strcmp将各个敏感词进行比较,将敏感词按照从小到大的顺序排序。然后按照UTF-16、UTF-8、GBK等编码方式,对敏感词进行二进制编码,最后将各个二进制编码数据拼接到一起,即连续存储。最终得到的存储结果如表1所示:
表1
第1个敏感词 | 第2个敏感词 | … | 最后一个敏感词 |
另外,为了便于从二进制数据词库中进行查找,在查找过程之前,上述方法还包括:对排序后的敏感词进行标号,并记录各个标号对应的敏感词在二进制数据词库中的存储地址;根据该存储地址及标号,生成索引数据。这样,后续查找过程中可以根据索引数据从二进制数据词库中读取敏感词。
具体地,在一个实施例中,将二进制数据词库中敏感词的个数为N个,(N为大于等于0的正整数),每个敏感词的标号可以为序号。各个敏感词按照排序顺序,对应的序号依次为0至N-1。优选地,可以记录每个敏感词在二进制数据词库中的偏移地址,方便后续查找过程中通过序号读取单个敏感词。在一个可能的实施例中,每个偏移地址占4个字节,敏感词总数为N,则共有N+1个偏移地址,一共占(N+1)×4个字节。最后生成的索引数据如表2:
表2
进一步地,为了便于了解上述二进制数据词库,可以设置词库信息数据。词库信息数据中可以自定义内容和长度。如包含索引数据起始地址、词库版本号、敏感词总数、最长敏感词长度等。在一个实施例中,词库信息数据的每个部分占4个字节,共16个字节,示例如表3:
表3
索引数据起始偏移地址 | 词库版本号 | 敏感词总数 | 最长敏感词长度 |
进一步地,可以将上述词库信息数据、索引数据存入二进制数据词库中,使得二进制数据词库更加完整,便于二进制数据词库的使用。这样最终生成的二进制数据词库包含词库信息数据、索引数据及二进制数据三个部分。
步骤S102,当接收到用户输入的输入文本时,获取输入文本中的输入词。
用户可以通过移动终端等智能终端进行输入操作。获取该输入文本后,从输入文本中截取输入词。如输入文本为“这家烤肉餐厅是中国人开的”,则可以按照需要从这段输入文本中截取输入词,如截取的第一个输入词为“这”。
步骤S103,从上述二进制数据词库中查找与输入词匹配的敏感词,以确定该输入词是否为敏感词。
具体地,步骤S103包括:从二进制数据词库中获取敏感词,与输入词进行匹配,根据匹配的结果确定该输入词是否为敏感词。
其中可以根据上述索引数据从上述二进制数据词库中读取敏感词。以上述步骤S101中索引数据的示例进行说明。优选地通过敏感词的序号读取该序号对应的敏感词,在二进制数据词库中序号为n(n为整数,且0≤n<N)的敏感词的读取方法如下:
(1)获取第n个敏感词的起始偏移地址An1:
指针跳到(词库信息固定长度+n×4)的位置,连续读取4个字节,将这4个字节转为整数,此整数为所求偏移地址。
(2)获取第n+1个敏感词的起始偏移地址An2:
指针跳到(词库信息固定长度+(n+1)×4)的位置,连续读取4个字节,将这4个字节转为整数,此整数为所求偏移地址。
(3)获取序号为n的敏感词:
敏感词的二进制长度为An2-An1,指针跳到An1位置,连续读取(An2-An1)个字节,将这写字节通过预处理时编码方式的逆编码(解码),即可得到第n个敏感词字符串。
这样,在敏感词查找的过程中,直接从二进制数据词库中读取敏感词,将待查找的输入词与敏感词对比。因此,相比于基于树或者图进行查找的传统方法,本发明提供的实施例的查找过程是在二进制数据词库中进行的,无需生成多余的节点对象,占用内存小,有效节省了敏感词查找过程中占用的内存,进而保障了应用程序的流畅运行。
进一步地,上述将敏感词与输入词进行比较,以确定输入词是否为敏感词包括:比较输入词与当前读取的敏感词,获取比较结果;根据比较结果确定输入词与当前读取的敏感词的匹配程度,其中匹配程度包括未匹配、前匹配、全匹配;根据该匹配程度确定所述输入词是否为敏感词。具体地,可以从长度和字符串大小两个角度比较输入词与当前读取的敏感词,以获得比较结果。当将二进制数据词库中的所有敏感词与输入词进行对比后,找到的敏感词与输入词相同,如敏感词“餐厅”和输入词“餐厅”,则确定该输入词为敏感词,匹配程度为全匹配;若找到的敏感词的前缀与输入词相同,如敏感词“中国人”和输入词“中国”,则确定该输入词不是敏感词,匹配程度为前匹配;若找到的敏感词与输入词不同,且该敏感词的前缀与输入词也不同,如敏感词“餐厅”和输入词“烤肉”,或者敏感词“中国人”和输入词“烤肉”,则确定该输入词必然不是敏感词,匹配程度为未匹配。
进一步地,步骤S103中,上述从二进制数据词库中查找与输入词匹配的敏感词包括:采用二分法查找方式,从二进制数据词库中查找与输入词匹配的敏感词。
在一个实施例中,设输入词为S,当前读取的敏感词为R,敏感词的总数为N,敏感词按照从小到大进行排序,参见图2,应用二分法进行查找的步骤如下:
步骤S201,初始化参数,front=0,end=N-1。
其中front和end均为大于等于零的整数。
步骤S202,判断front是否大于等于end。
如果是,则说明二进制数据词库已经查找完毕,结束查找,执行步骤S203;如果否,则继续查找,执行步骤S204。
步骤S203,返回“未匹配”的标记。
步骤S204,计算中间项mid=(front+end)/2;
步骤S205,读取序号为mid的敏感词R。
具体地,可以参照步骤S103中提供的读取方法进行读取。
步骤S206,判断输入词S的字符串长度是否大于等于敏感词R的字符串长度。
如果是,则执行步骤S207;如果否,则执行步骤S209。
步骤S207,判断输入词S的字符串是否等于敏感词R的字符串。
如果是,则执行步骤S208;如果否,则执行步骤S212。
步骤S208,返回“全匹配”的标记。
步骤S209,将敏感词R从字符串的起始字符开始截断为与输入词S等长的字符串。
步骤S210,用截断后的敏感词替换作为当前的敏感词R,然后比较当前的敏感词的字符串是否等于输入词S。
如R=中国人,S=烤肉,则将R截断为R=中国,再跟S比较,也就是在R中取与S等长的前缀来跟S进行比较。
如果截断后的敏感词等于输入词S则执行步骤S211;反之,则执行步骤S212。
步骤S211,返回“前匹配”的标记。
步骤S212,判断输入词S是否大于当前的敏感词R。
如果是,则执行步骤S214;如果否,则执行步骤S213。
步骤S213,执行end=mid-1操作后,重新执行步骤S202。
步骤S214,执行front=mid+1操作后,重新执行步骤S202。
上述步骤中所说的“比较”,是指按一定规则比较,如忽略大小写比较,过滤特殊符号再比较等。
经过上面二分法查找后,对于一个输入词S,查找敏感词匹配程度有3个:未匹配、前匹配和全匹配。
未匹配:说明输入词S不是敏感词
前匹配:说明输入词S不是敏感词。但输入词S跟敏感词的前缀匹配(即跟敏感词前面和输入词S等长部分匹配),继续增加输入词S的长度就有可能是敏感词。如输入词“烤肉”是敏感词“烤肉串”的前匹配。
全匹配:说明输入词S是敏感词。如果按最大匹配方式查找,则还需继续增加输入词S的长度进行查找,看增长后的输入词S还是不是敏感词。
进一步地,可以按照上述敏感词的读取方法和二分法查找方法,查找连续文本中存在的敏感词,方法如下:
敏感词库总数为N=7的示例词库如下:(已经按从小到大排好序;每个词前面的数字和点为序号,不算敏感词内容)
0.China
1.中国
2.中国人
3.中国人民
4.烤肉串
5.美发店
6.餐厅
示例含敏感词的连续文本如:“这家烤肉餐厅是中国人开的”。
以上述N=7的示例库,说明敏感词查找步骤如下(按最大匹配查找):
读取“这”字作为输入词,查找敏感词匹配,查找结果为“未匹配”。
读取“家”字作为输入词,查找敏感词匹配,查找结果为“未匹配”。
读取“烤”字作为输入词,查找敏感词匹配,查找结果为“前匹配”。
向后读取1个字符“肉”,和“烤”字拼接为“烤肉”作为输入词,查找敏感词匹配,查找结果为“前匹配”。
向后读取1个字符“餐”,和“烤肉”拼接为“烤肉餐”,作为输入词,查找敏感词匹配,查找结果为“未匹配”。
这里说明“烤”字、“烤肉”和“烤肉餐”都不是敏感词。
上次单独处理到“烤”字,因此从“烤”字后面开始,读取“肉”字作为输入词,查找敏感词匹配,查找结果为“未匹配”。
读取“餐”字作为输入词,查找敏感词匹配,查找结果为“前匹配”
向后读取1个字符“厅”,和“餐”字拼接为“餐厅”作为输入词,查找敏感词匹配,查找结果为“全匹配”。
向后读取1个字符“是”,和“餐厅”拼接为“餐厅是”,作为输入词,查找敏感词匹配,查找结果为“未匹配”。
这里可判断“餐厅是”不是敏感词,而“餐厅”是敏感词。
当前读到“是”字,“是”字前面是敏感词,加上“是”字就不是敏感词,因此当前处理到“是”字。重新拿“是”字作为输入词,查找敏感词匹配,查找结果为“未匹配”。
读取“中”字作为输入词,查找敏感词匹配,查找结果为“前匹配”。
向后读取1个字符“国”,和“中”字拼接为“中国”作为输入词,查找敏感词匹配,查找结果为“全匹配”。
向后读取1个字符“人”,和“中国”拼接为“中国人”作为输入词,查找敏感词匹配,查找结果为“全匹配”。
向后读取1个字符“开”,和“中国人”拼接为“中国人开”作为输入词,查找敏感词匹配,查找结果为“未匹配”。
这里可判断“中国人开”不是敏感词,而“中国人”是敏感词。
当前读到“开”字,“开”字前面是敏感词,加上“开”字就不是敏感词,因此重新拿“开”字作为输入词,查找敏感词匹配,查找结果为“未匹配”。
读取“的”字作为输入词,查找敏感词匹配,查找结果为“未匹配”。
因此,对于示例的连续文本,遍历一次后,就可以找到敏感词有两个:第一个是“餐厅”,在第5、6个字符,第二个是“中国人”,在第8、9、10个字符。
找到敏感词的位置后,可以对敏感词进行过滤。例如可以把敏感词字符替换为*号。如示例的输入文本经过敏感词过滤后输出为:这家烤肉**是***开的。
进一步地,本发明提供了两种二进制数据词库的存储方式,方式一:上述二进制数据词库保存在本地文件中。
因此,上述从二进制数据词库中读取敏感词包括:通过随机访问文件的方式从本地文件中读取敏感词。即二进制数据词库还是保存在本地文件中,查找时通过随机访问文件方式在本地文件中读取需要匹配的敏感词数据。这种方式是操作本地存储,因此速度相对稍慢,但占用的内存极少,整个查找过程只是占用一些临时变量的内存,而不查找时,则不会占用额外内存。
方式二:上述二进制数据词库保存在本地终端的内存中。
因此,上述从二进制数据词库中读取敏感词包括:通过随机访问内存的方式从内存中读取敏感词。即在初始化时,将二进制数据词库读取到一片连续内存中,查找时则在内存中读取敏感词数据。这种方式是在内存操作,因此速度较快。
因此在具体应用中,可以根据查找速度和占用内存来选择词库操作方式。如在游戏玩家互动聊天系统(世界、队伍、好友聊天)等使用频率较大的情况下,可用方式二。如创建角色、修改各类称号封号等(修改队伍名、房间名、公会名、宠物名)等使用频率较低的情况下,可用方式一。
假如实际应用中,对于一个有18000个敏感词的词库,用Java的HashMap来构建树来实现常见的有穷自动机敏感词查找算法,会生成约85000个节点对象,共占用约15MB的内存。而15MB在移动或嵌入式设备上来说算是一块很大的内存了。如一些Android设备,其应用程序默认分配最大内存值也只是16MB。而大量的节点对象,会占用一定的系统资源,会对内存管理、垃圾回收有一定的影响,特别是在一些CPU和内存配置比较低的设备,会影响应用程序或游戏运行的流畅性,甚至出现卡顿。
而同样的词库,使用本发明提供的方法,生成的词库数据文件约300kB。如果使用上述方式一进行词库读取,则可认为基本不占用任何额外内存。如果使用上述方式二把整个词库文件加载到内存中,也只是占用约300kB的内存,并不会生成大量节点对象,也不会因有大量节点对象而占用额外资源。
综上,本发明提供的实施例的查找过程是在二进制数据词库中进行的,无需生成多余的节点对象,占用内存小,有效节省了敏感词查找过程中占用的内存,进而保障了应用程序的流畅运行,在进行敏感词查找和过滤起到很好的效果。
实施例二:
图3示出了本发明实施例提供的敏感词查找装置的结构示意图。如图3所示,该敏感词查找装置,包括:
生成模块11,用于获取各个敏感词,对各个敏感词进行二进制编码并存储,以生成二进制数据词库;
获取模块12,用于当接收到用户输入的输入文本时,获取该输入文本中的输入词;
确定模块13,用于从上述二进制数据词库中查找与输入词匹配的敏感词,以确定该输入词是否为敏感词。
这样,在敏感词查找的过程中,直接从二进制数据词库中读取敏感词,将待查找的输入词与敏感词对比。因此,相比于基于树或者图进行查找的传统方法,本发明提供的实施例的查找过程是在二进制数据词库中进行的,无需生成多余的节点对象,占用内存小,有效节省了敏感词查找过程中占用的内存,进而保障了应用程序的流畅运行。
实施例三:
参见图4,本发明实施例还提供一种电子设备100,包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
本发明实施例提供的敏感词查找装置及电子设备,与上述实施例提供的敏感词查找方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例所提供的进行敏感词查找方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
附图中的流程图和框图显示了根据本发明的多个实施例方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种敏感词查找方法,其特征在于,包括:
获取各个敏感词,对所述各个敏感词按照字符串大小进行排序,将排序后的各个敏感词进行二进制编码并连续存储,以生成二进制数据词库;
当接收到用户输入的输入文本时,获取所述输入文本中的输入词;
对排序后的所述敏感词进行标号,并记录各个标号对应的敏感词在所述二进制数据词库中的存储地址;
根据所述存储地址及标号,生成索引数据;
根据所述索引数据从所述二进制数据词库中查找与所述输入词匹配的敏感词,以确定所述输入词是否为敏感词。
2.根据权利要求1所述的方法,其特征在于,从所述二进制数据词库中查找与所述输入词匹配的敏感词,以确定所述输入词是否为敏感词包括:
从所述二进制数据词库中读取敏感词,将所述敏感词与所述输入词进行比较,以确定所述输入词是否为敏感词。
3.根据权利要求1所述的方法,其特征在于,所述从所述二进制数据词库中查找与所述输入词匹配的敏感词包括:
采用二分法查找方式,从所述二进制数据词库中查找与所述输入词匹配的敏感词。
4.根据权利要求2所述的方法,其特征在于,所述将所述敏感词与所述输入词进行比较,以确定所述输入词是否为敏感词包括:
比较所述输入词与当前读取的敏感词,获取比较结果;
根据所述比较结果确定所述输入词与所述当前读取的敏感词的匹配程度,其中所述匹配程度包括未匹配、前匹配、全匹配;
根据所述匹配程度确定所述输入词是否为敏感词。
5.根据权利要求2所述的方法,其特征在于,所述二进制数据词库保存在本地文件中;
所述从所述二进制数据词库中读取敏感词包括:
通过随机访问文件的方式从所述本地文件中读取所述敏感词。
6.根据权利要求2所述的方法,其特征在于,所述二进制数据词库保存在本地终端的内存中;
所述从所述二进制数据词库中读取敏感词包括:
通过随机访问内存的方式从所述内存中读取所述敏感词。
7.一种敏感词查找装置,其特征在于,包括:
生成模块,用于获取各个敏感词,对所述各个敏感词按照字符串大小进行排序,将排序后的各个敏感词进行二进制编码并连续存储,以生成二进制数据词库;
获取模块,用于当接收到用户输入的输入文本时,获取所述输入文本中的输入词;确定模块,用于根据索引数据从所述二进制数据词库中查找与所述输入词匹配的敏感词,以确定所述输入词是否为敏感词;其中,对排序后的所述敏感词进行标号,并记录各个标号对应的敏感词在所述二进制数据词库中的存储地址;根据所述存储地址及标号,生成的索引数据。
8.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710858344.XA CN107633062B (zh) | 2017-09-20 | 2017-09-20 | 敏感词查找方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710858344.XA CN107633062B (zh) | 2017-09-20 | 2017-09-20 | 敏感词查找方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107633062A CN107633062A (zh) | 2018-01-26 |
CN107633062B true CN107633062B (zh) | 2020-05-15 |
Family
ID=61102294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710858344.XA Active CN107633062B (zh) | 2017-09-20 | 2017-09-20 | 敏感词查找方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107633062B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491324B (zh) * | 2018-03-12 | 2022-03-22 | 威创集团股份有限公司 | 一种软件中的目标词汇搜索方法及装置 |
CN109446529A (zh) * | 2018-11-05 | 2019-03-08 | 用友网络科技股份有限公司 | 一种基于确定有穷自动机的敏感词检测方法和系统 |
CN110289059A (zh) * | 2019-06-13 | 2019-09-27 | 北京百度网讯科技有限公司 | 医疗数据处理方法、装置、存储介质及电子设备 |
CN111460205A (zh) * | 2020-04-03 | 2020-07-28 | 湖州市超视科技有限公司 | 一种基于边缘计算的化妆品包装说明质检检测系统 |
CN112926301B (zh) * | 2020-12-28 | 2023-02-14 | 广州坚和网络科技有限公司 | 基于敏感词库构建的敏感词监控方法及装置 |
CN113434641B (zh) * | 2021-07-26 | 2022-10-11 | 广州四三九九信息科技有限公司 | 一种多线程屏蔽字查询替换方法 |
CN114117149B (zh) * | 2021-11-25 | 2024-08-02 | 深圳前海微众银行股份有限公司 | 一种敏感词过滤方法及装置、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514238A (zh) * | 2012-06-30 | 2014-01-15 | 重庆新媒农信科技有限公司 | 基于分类查找的敏感词识别处理方法 |
CN104866550A (zh) * | 2015-05-12 | 2015-08-26 | 湖北光谷天下传媒股份有限公司 | 一种模拟神经网络的文本过滤方法 |
CN106599940A (zh) * | 2016-11-25 | 2017-04-26 | 东软集团股份有限公司 | 图片文字的识别方法及装置 |
-
2017
- 2017-09-20 CN CN201710858344.XA patent/CN107633062B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514238A (zh) * | 2012-06-30 | 2014-01-15 | 重庆新媒农信科技有限公司 | 基于分类查找的敏感词识别处理方法 |
CN104866550A (zh) * | 2015-05-12 | 2015-08-26 | 湖北光谷天下传媒股份有限公司 | 一种模拟神经网络的文本过滤方法 |
CN106599940A (zh) * | 2016-11-25 | 2017-04-26 | 东软集团股份有限公司 | 图片文字的识别方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107633062A (zh) | 2018-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107633062B (zh) | 敏感词查找方法、装置及电子设备 | |
CN108710613B (zh) | 文本相似度的获取方法、终端设备及介质 | |
US8095547B2 (en) | Method and apparatus for detecting spam user created content | |
CN111241389B (zh) | 一种基于矩阵的敏感词过滤方法、装置、电子设备、存储介质 | |
CN109271641B (zh) | 一种文本相似度计算方法、装置及电子设备 | |
CN111368038B (zh) | 一种关键词的提取方法、装置、计算机设备和存储介质 | |
CN111782907B (zh) | 新闻分类方法、装置及电子设备 | |
CN110110332B (zh) | 文本摘要生成方法及设备 | |
CN109656385B (zh) | 基于知识图谱的输入预测方法、装置和电子设备 | |
CN107748801B (zh) | 新闻推荐方法、装置、终端设备及计算机可读存储介质 | |
CN115495636A (zh) | 网页搜索方法、装置及存储介质 | |
CN107656927B (zh) | 一种特征选择方法及设备 | |
CN110427496B (zh) | 用于文本处理的知识图谱扩充方法及装置 | |
CN109614494B (zh) | 一种文本分类方法及相关装置 | |
CN113449063B (zh) | 一种构建文档结构信息检索库的方法及装置 | |
CN114611039B (zh) | 异步加载规则的解析方法、装置、存储介质和电子设备 | |
CN115861606A (zh) | 一种针对长尾分布文档的分类方法、装置及存储介质 | |
CN114880523A (zh) | 字符串处理方法、装置、电子设备及存储介质 | |
CN111061508B (zh) | 一种Java卡及其性能优化方法 | |
CN111209747B (zh) | 一种词向量文件加载方法、装置、存储介质及电子设备 | |
CN108280198B (zh) | 榜单生成方法及装置 | |
CN107562759B (zh) | 一种处理信息源的方法、装置及电子设备 | |
CN108241680B (zh) | 获取网页的阅读量的方法和装置 | |
CN110543622A (zh) | 文本相似度检测方法、装置、电子设备及可读存储介质 | |
CN113536779B (zh) | 基于公文标题的热门话题数据处理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |