CN111159329A - 敏感词检测方法、装置、终端设备和计算机可读存储介质 - Google Patents

敏感词检测方法、装置、终端设备和计算机可读存储介质 Download PDF

Info

Publication number
CN111159329A
CN111159329A CN201911344871.4A CN201911344871A CN111159329A CN 111159329 A CN111159329 A CN 111159329A CN 201911344871 A CN201911344871 A CN 201911344871A CN 111159329 A CN111159329 A CN 111159329A
Authority
CN
China
Prior art keywords
sensitive word
character
sensitive
node
characters
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.)
Granted
Application number
CN201911344871.4A
Other languages
English (en)
Other versions
CN111159329B (zh
Inventor
方曦
熊友军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Ubtech Technology Co ltd
Original Assignee
Shenzhen Ubtech Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Ubtech Technology Co ltd filed Critical Shenzhen Ubtech Technology Co ltd
Priority to CN201911344871.4A priority Critical patent/CN111159329B/zh
Publication of CN111159329A publication Critical patent/CN111159329A/zh
Application granted granted Critical
Publication of CN111159329B publication Critical patent/CN111159329B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Machine Translation (AREA)

Abstract

本申请实施例适用于文本检测技术领域,公开了一种敏感词检测方法、装置、终端设备和计算机可读存储介质,方法包括:获取待检测文本;对待检测文本中的每一个待匹配字符执行字符匹配步骤,得到匹配结果;根据匹配结果得到待检测文本的敏感词检测结果。本申请实施例通过将敏感词各个字符是嵌套递归地存储在敏感词容器中的,使得敏感词检测的复杂度等于敏感词的字符长度,降低了敏感词检测的复杂度,提高了敏感词检测效率。

Description

敏感词检测方法、装置、终端设备和计算机可读存储介质
技术领域
本申请属于文本检测技术领域,尤其涉及一种敏感词检测方法、装置、终端设备和计算机可读存储介质。
背景技术
目前,一些敏感的信息与词汇是不允许出现在文案中的,故需要对文本进行敏感词检测,以过滤或筛选出文本中的敏感词信息。
现有技术中,敏感词检测有基于规则的检测方法,也有基于有限状态机的方法,亦或者是基于机器学习的检测方法,这些方法的检测效率十分有限。
发明内容
本申请实施例提供一种敏感词检测方法、装置、终端设备和计算机可读存储介质,以解决现有敏感词检测效率较低的问题。
第一方面,本申请实施例提供一种敏感词检测方法,包括:
获取待检测文本;
对所述待检测文本中的每一个待匹配字符执行字符匹配步骤,得到匹配结果;
根据所述匹配结果得到所述待检测文本的敏感词检测结果;
所述字符匹配步骤用于:
将所述待匹配字符与敏感词容器的根节点的字符进行比对,确定是否一致;
如果所述待匹配字符与所述根节点的字符一致,且敏感词结束标志位为预设数值,返回匹配成功结果;
如果所述待匹配字符与所述根节点的字符一致,且敏感词结束标志位不为预设数值,k=1,进入循环步骤:将所述待匹配字符后的第k个字符与所述根节点的第k个叶子节点的字符进行匹配,确定是否一致;
如果所述第k个字符与所述第k个叶子节点的字符一致,当敏感词结束标志位不为预设数值,k=k+1后返回所述循环步骤;当敏感词结束标志位为预设数值,返回匹配成功结果;
如果所述第k个字符与所述第k个叶子节点的字符不一致,返回匹配失败结果。
本申请实施例中,通过将敏感词嵌套递归地存储在敏感词容器中的,使得敏感词检测的复杂度等于敏感词的长度,而日常情况下的敏感词长度不会太长,从而降低了敏感词检测的复杂度,提高了敏感词检测效率。
在第一方面的一种可能的实现方式中,所述敏感词容器包括至少一条存储分支,一条所述存储分支用于存储一个敏感词;所述存储分支包括至少一个节点,所述存储分支中的第一个节点为根节点,非第一个节点为叶子节点;一个节点对应一个存储对象;
所述存储对象的数据结构为键值对数据结构,所述存储对象包括key值和value值;在一条所述存储分支中,第m个节点的存储对象的value值存放有作为第m+1个节点的存储对象,所述存储分支对应的敏感词的各个字符依次存放各个存储对象的key值,m为大于或等于1的正整数;
若两个敏感词的前j个字符相同,第j+1个字符不相同,则对应的两条存储分支的前j个节点相同,第j+1个节点及其往后的节点均不相同,j大于或等于0。
可以看出,本申请实施例中用于存放敏感词的敏感词容器是基于键值对数据结构的,且每个存储对象是嵌套递归的,即敏感词是嵌套递归地存储在敏感词容器中的,使得敏感词检测的复杂度等于敏感词的长度,而日常情况下的敏感词长度不会太长,从而降低了敏感词检测的复杂度,提高了敏感词检测效率。
在第一方面的一种可能的实现方式中,所述存储对象为Map对象;
敏感词的存放方式如下:
所述敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值;第m个节点的Map对象的value值存放作为第m+1个节点的Map对象,m大于或等于1,且小于或等于所述敏感词的字符数量;
若新添加的敏感词的前j个字符与所述敏感词容器中已存放敏感词的前j个字符相同,第j+1个字符不同,则新建i个节点,将所述新添加的敏感词的第j+1个及其往后的字符依次存放在所述i个节点中,i等于所述新添加的敏感词的字符数减去j。
可以理解的是,Map对象是典型的键值对的数据结构,将第m个节点的Map对象的value值存放作为第m+1个节点的Map对象实现了Map对象的嵌套递归。
在第一方面的一种可能的实现方式中,所述存储分支还包括用于存放结束标志信息的目标Map对象,所述目标Map对象存放在所述存储分支对应的敏感词最后一个字符对应的Map对象的value值中。
在第一方面的一种可能的实现方式中,在获取待检测文本之前,还包括:
初始化敏感词数据,将所述敏感词数据加载至内存。
在第一方面的一种可能的实现方式中,初始化敏感词数据,将所述敏感词数据加载至内存,包括:
获取所述敏感词数据;
构建所述敏感词容器;
执行单个敏感词添加步骤,所述单个敏感词添加步骤用于:从所述敏感词数据中读取一个敏感词作为待加载敏感词;依次将所述待加载敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值,第m个节点的Map对象的value值存放作为第m+1个节点的Map对象;所述待加载敏感词的字符添加完毕时,在目标Map对象中存储所述待加载敏感词的结束标志位信息,所述目标Map对象存放在所述待加载敏感词的最后一个字符对应的Map对象的value值中;
重复执行所述单个敏感词添加步骤,直至所述敏感词数据全部添加至所述敏感词容器。
需要说明的是,敏感词库的数据量较多,导致敏感词容器占用的存储资源较多,从而导致敏感词容器的初始化比较耗时。而预先将敏感词数据初始化加载至内存中,这样敏感词匹配操作会在内存中进行,从而进一步地提高了检测效率。另外,由于敏感词存放在内存的常量池中,即使敏感词数据占用较大内存也不会被回收,从而进一步提高了检测性能。
在第一方面的一种可能的实现方式中,根据所述匹配结果得到所述待检测文本的敏感词检测结果,包括:
获取所述匹配成功结果对应的敏感词,所述匹配成功结果对应的敏感词为所述待检测文本的敏感词。
在第一方面的一种可能的实现方式中,在根据所述匹配结果得到所述待检测文本的敏感词检测结果之后,还包括:
统计所述匹配成功结果对应的敏感词的数量;
和/或
在所述待检测文本中标记所述匹配成功结果对应的敏感词。
第二方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面任一项所述的方法。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面任一项所述的方法。
第四方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种敏感词检测方法的流程示意框图;
图2为本申请实施例提供的存储对象嵌套示意图;
图3为本申请实施例提供的敏感词嵌套结构示意图;
图4为本申请实施例提供的敏感词检测方法的另一种流程示意框图;
图5为本申请实施例提供的初始化加载方法的流程示意框图;
图6为本申请实施例提供的敏感词检测装置的结构示意框图;
图7为本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。
本申请实施例提供的敏感词检测方案可以应用于手机、平板电脑、可穿戴设备、车载设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
参见图1,为本申请实施例提供的一种敏感词检测方法的流程示意框图,该方法可以包括以下步骤:
步骤S101、获取待检测文本。
需要说明的是,上述待检测文本是指需要进行敏感词检测的文本,其包括至少一个字符。该待检测文本可以为但不限于中文文本或英文文本。
该待检测文本可以是网络文案,即本申请实施例的敏感词检测方案可以应用网络文案的敏感词检测,此时,服务端可以获取用户在客户端输入的文案内容,以获取到上述待检测文本,再对输入的文案内容进行敏感词检测,获得敏感词检测结果,然后再基于检测出的敏感词对用户输入的文案内容进行过滤、替换或者返回业务异常给客户端。例如,当检测到用户输入的“xx”为敏感词,则可以将该词过滤掉,或者将该词替换为相应的同义词,亦或者是返回“该词为敏感词,请输入其它替代词”等提示信息给用户客户端,以提示用户当前所输入的词为敏感词。
当然,该待检测文本还可以为其它类型的文本,即本申请实施例提供的敏感词检测方案还可以应用于其它场景,并不限于上文提及的网络文案内容检测场景。
步骤S102、对待检测文本中的每一个待匹配字符执行字符匹配步骤,得到匹配结果。
具体应用中,依次对待检测文本中的各个字符执行字符匹配步骤,例如,先对待检测文本中的第一个字符执行字符匹配步骤,再对第二个字符执行字符匹配步骤,接着对第三个字符执行字符匹配结果,依次类推,直到检测完成待检测文本中的所有字符。
字符匹配步骤中,将待匹配字符与敏感词容器中存储的敏感词进行匹配,得到匹配结果。
其中,敏感词容器包括至少一条存储分支,一条存储分支用于存储一个敏感词;存储分支包括至少一个节点,一个节点对应一个存储对象;
存储对象的数据结构为键值对数据结构,存储对象包括key值和value值;在一条存储分支中,第m个节点的存储对象的value值存放有作为第m+1个节点的存储对象,存储分支对应的敏感词的各个字符依次存放各个存储对象的key值,m为大于或等于1的正整数;
若两个敏感词的前j个字符相同,第j+1个字符不相同,则对应的两条存储分支的前j个节点相同,第j+1个节点及其往后的节点均不相同,j大于或等于0。
需要说明的是,存储对象为键值对的数据结构,其包括key-value。第m个节点的存储对象的value值存放有作为第m+1个节点的存储对象是指:第1个节点的存储对象的value值存放有一个存储对象,该存储对象作为第2个节点;第二个节点的value值存放有一个存储对象,该存储对象作为第3个节点;第3个节点的value值存放有一个存储对象,该存储对象作为第4个节点,依次类推,第m个节点的存储对象的value值存放有作为第m+1个节点的存储对象。也即,存储对象之间的关系是嵌套递归的。
具体参见图2示出的存储对象嵌套示意图,如图2所示,每一个value内均嵌套存放有一个key-value键值对的存储对象,依次嵌套。
一个存储分支存放一个敏感词,敏感词的各个字符一般按照先后顺序依次方法在各个节点的key值,即敏感词的第一个字符存放在第一个节点的key值,第二字符存放在第二节点的key值,第三个字符存放在第三个节点的key值,依次类推,第m个字符存放在第m个节点的key值。
上述若两个敏感词的前j个字符相同,第j+1个字符不相同,则对应的两条存储分支的前j个节点相同,第j+1个节点及其往后的节点均不相同,j大于或等于0,具体是指:连续相同的字符对应的节点是一样的。具体为,j=0,即两个敏感词的前0个字符相同,也即两个敏感词没有相同的字符,则两个敏感词的第1个节点及其往后节点均不相同,也即,所有的节点均不相同。j=1时,即两个敏感词的第一个字符相同,则两个敏感词的第一个节点相同,第2个节点及其往后节点均不相同。j=3时,两个敏感词的前3个字符均相同,则这两个敏感词的前3个节点均相同,第4个节点及其往后节点均不相同;依次类推,前j个字符相同,第j+1个字符不相同,则对于的前j个节点相同,第j+1个节点及其往后节点均不相同。
参见图3示出的敏感词嵌套结构示意图,如图3所示,其包括敏感词DEF、ABD、AFG和DEF,其中,ABC和ABD两个敏感词的前2个字符均相同,则这两个敏感词的前2个字符A和B均存放在一个相同的节点中,C和D分别存放在不同的节点中。ABD和AFG两个敏感词的前1个字符相同,则这两个敏感词的前1个字符A均存放在相同的节点中,后面两个不同的字符则分别存放在不同的节点中。AFG和DEF这两个敏感词的前0个字符相同,即这两个敏感词没有字符相同,则这两个敏感词的所有节点均不相同。
如图3所示,root为根节点,即为第一个节点,A和D分别存放为第一个节点中不同的key值。
本申请实施例中,一个存储分支用于存放一个敏感词,如图3所示的ABC、ABD、AFG和DEF均分别为一个存储分支。
在一些实施例中,存储分支中的第一节点为根节点,非第一个节点为叶子节点;存储对象为Map对象。Map对象是较为典型的数据结构,可以通过使用Map工具类建立一个Map对象。Map对象的value值是一个Object对象,可以存放任意类型的数据,因此,可以在Map对象的value中再存放一个Map对象,以实现递归操作。
在敏感词容器中存放有至少一个敏感词,敏感词的存放方式可以如下:
敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值;第m个节点的Map对象的value值存放作为第m+1个节点的Map对象,m大于或等于1,且小于或等于敏感词的字符数量。
具体是指:依次将敏感词的各个字符存放至对应节点的key值。例如,以敏感词ABC为例,该敏感词包括A、B、C三个字符,按照字符的先后顺序,将A字符存放至第一个节点(即根节点)的Map对象的key值中,将B字符存放至第二个节点(即第一个叶子节点)的Map对象的key值,将C字符存放至第三个节点(即第二个叶子节点)的Map对象的key值。
若新添加的敏感词的前j个字符与敏感词容器中已存放敏感词的前j个字符相同,第j+1个字符不同,则新建i个节点,将新添加的敏感词的第j+1个及其往后的字符依次存放在i个节点中,i等于新添加的敏感词的字符数减去j。
具体是指,若需要添加至敏感词容器中的敏感词与已存放敏感词的前j个字符相同,则将新添加的敏感词的前j个字符存放至已存放敏感词的前j个节点,然后再新建i个节点,将后面的字符存放至这i个节点中。
例如,参见图3所示,已存放敏感词为ABC,新添加的敏感词为ABD,这两个敏感词的前2个字符相同,A字符和B字符不用新建节点,只需另建立B字符对应的Map对象的value值,再在这个value中存放一个Map对象,将D字符存放至该Map对象的key值。
又例如,参见图3所示,已存放敏感词为ABC,新添加的敏感词为DEF,由于两个词的首字符不相同,则新建根节点的另一个key值,用于存放D字符,然后再在该另一个key值对应的value值中存放一个Map对象,将E字符存放在该Map对象的key值,将F字符存放在第三个节点的key值中。
在一些实施例中,存储分支还包括用于存放结束标志信息的目标Map对象,目标Map对象存放在存储分支对应的敏感词最后一个字符对应的Map对象的value值中。即敏感词的最后一个字符对应的Map对象的value值再存放一个Map对象,该Map对象用于存放结束标志信息,该结束标志信息用于表征该存储分支已结束,即表征该存储分支对应的敏感词已结束。
具体应用中,目标Map对象的key值中可以存放“isEnd”,目标Map对象的value值中可以存放数值“1”。
具体应用中,可以对待检测文本中的每个待匹配字符执行单字符匹配步骤,以获得匹配结果。
其中,上述字符匹配步骤用于:
第一步:将待匹配字符与敏感词容器的根节点的字符进行比对,确定是否一致。
第二步:如果待匹配字符与根节点的字符一致,且敏感词结束标志位为预设数值,返回匹配成功结果。
第三步:如果待匹配字符与根节点的字符一致,且敏感词结束标志位不为预设数值,k=1,进入循环步骤:将待匹配字符后的第k个字符与根节点的第k个叶子节点的字符进行匹配,确定是否一致。
第四步:如果第k个字符与第k个叶子节点的字符一致,当敏感词结束标志位不为预设数值,k=k+1后返回循环步骤;当敏感词结束标志位为预设数值,返回匹配成功结果。
第五步:如果第k个字符与第k个叶子节点的字符不一致,返回匹配失败结果。
需要说明的是,上述匹配失败结果为未命中,即没有与该待匹配字符对应的敏感词。匹配成功结果为命中,即查找到与该待匹配字符对应的敏感词。
敏感词容器中的各个节点的字符存储在节点的key值中。如果待匹配字符与根节点中的key值不一致时,未查找到对应的敏感词,则返回匹配失败结果。反之,如果待匹配字符与根节点的key值一致,且该根节点的value值的Map对象存放有结束标志信息,即敏感词结束标志位为预设数值(该预设数值可以例如为1),则查找到对应的敏感词,且该敏感词为单个字符的敏感词。
如果待匹配字符与根节点的key值中的字符一致一致,且该根节点的value值中的Map对象没有存放有结束标志信息,即敏感词结束标志位不为预设数值(该预设数值可以例如为1),则k=1,进入循环步骤:将待匹配字符后的第k个字符与根节点的第k个叶子节点的字符进行匹配,确定是否一致。如果第k个字符与第k个叶子节点的字符一致,当敏感词结束标志位不为预设数值,k=k+1后返回循环步骤;当敏感词结束标志位为预设数值,返回匹配成功结果;如果第k个字符与第k个叶子节点的字符不一致,返回匹配失败结果。
换句话说,如果待匹配字符与根节点的key值中的字符一致,且敏感词容器中的敏感词还没有结束,可以继续比对待匹配字符的后一个字符与作为第二节点的key值中的字符进行比对,确定是否一致,如果一致,且第三个节点的Map对象存储有结束标志信息,则检测到相应的敏感词。如果一致,且第三个节点的Map对象没有存储有结束标志信息,则继续往后比对,直到该待匹配字符对应的句子的句末,或者,得到匹配结果。
敏感词结束标志位可以表征敏感词是否结束。其可以存储在目标Map对象中。目标Map对象的key值中可以存放“isEnd”,value值存放预设数值,该预设数值可以为但不限于为1。
步骤S103、根据匹配结果得到待检测文本的敏感词检测结果。
具体应用中,可以通过获取匹配成功结果对应的敏感词,以得到待检测文本中的敏感词。匹配成功结果对应的敏感词为待检测文本的敏感词。
本申请实施例中用于存放敏感词的敏感词容器是基于键值对数据结构的,且每个存储对象是嵌套递归的,即敏感词是嵌套递归地存储在敏感词容器中的,使得敏感词检测的复杂度等于敏感词的长度,而日常情况下的敏感词长度不会太长,从而降低了敏感词检测的复杂度,提高了敏感词检测效率。
参见图4,为本申请实施例提供的敏感词检测方法的另一种流程示意框图,该方法可以包括以下步骤:
步骤S401、初始化敏感词数据,将敏感词数据加载至内存。
参见图5示出的初始化加载方法的流程示意框图,上述初始化敏感词数据,将敏感词数据加载至内存的步骤可以包括:
步骤S501、获取敏感词数据。
具体应用中,可以从文件流或者数据库中读取上述敏感词数据。
步骤S502、构建敏感词容器。
当存储对象为Map对象时,具体可以建立root根节点的Map数据类型,以建立敏感词容器。
步骤S503、执行单个敏感词添加步骤,单个敏感词添加步骤用于:从敏感词数据中读取一个敏感词作为待加载敏感词;依次将待加载敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值,第m个节点的Map对象的value值存放作为第m+1个节点的Map对象;待加载敏感词的字符添加完毕时,在目标Map对象中存储待加载敏感词的结束标志位信息,目标Map对象存放在待加载敏感词的最后一个字符对应的Map对象的value值中。
步骤S504、重复执行单个敏感词添加步骤,直至敏感词数据全部添加至敏感词容器。
具体地,对每一个敏感词执行单个敏感词添加步骤,以将所有的敏感词均添加至所构建的敏感词容器中,从而将敏感词数据初始化加载至内存中。
一个敏感词添加至敏感词容器的过程具体包括:
将敏感词的第一个字符存放至第一个节点(即根节点)的key值中,然后,再在第一个节点的value值存放一个作为第二个节点的Map对象;再将第二字符存放至第二节点的key值中,在第二个节点的value值存放一个作为第三节点的Map对象,依次类推,直到敏感词的所有字符均存放完毕,然后,在最后一个字符对应的value值存放一个目标Map对象。
可以理解的是,当新添加的敏感词与已存放敏感词的前j个字符相同,后i个字符不相同时,则只需新建i个节点,将后i个字符依次存放至i个节点的key值中。具体可以参见上文相应内容,在此不再赘述。
需要说明的是,敏感词库的数据量较多,导致敏感词容器占用的存储资源较多,从而导致敏感词容器的初始化比较耗时。而预先将敏感词数据初始化加载至内存中,这样敏感词匹配操作会在内存中进行,从而进一步地提高了检测效率。另外,由于敏感词存放在内存的常量池中,即使敏感词数据占用较大内存也不会被回收,从而进一步提高了检测性能。
步骤S402、获取待检测文本。
步骤S403、对待检测文本中的每一个待匹配字符执行字符匹配步骤,得到匹配结果。
步骤S404、根据匹配结果得到待检测文本的敏感词检测结果。
步骤S402~S404与上文的步骤S101~S103相同,相关内容请参见上文相应内容,在此不再赘述。
步骤S405、统计匹配成功结果对应的敏感词的数量;和/或在待检测文本中标记匹配成功结果对应的敏感词。
具体地,在确定出待检测文本中的敏感词之后,可以统计文本的敏感词数量,或者,在文本中标记处敏感词。
在本申请实施例中,还可以指定字符匹配的开始位置,也可以指定检测一整句话中的所有词等。
本实施例通过将敏感词数据初始化加载至内存中,在内存中进行字符匹配操作,以进一步提高检测效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的敏感词检测方法,图6示出了本申请实施例提供的敏感词检测装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图6,该装置包括:
获取模块61,用于获取待检测文本;
匹配模块62,用于对待检测文本中的每一个待匹配字符执行字符匹配步骤,得到匹配结果;
检测模块63,用于根据匹配结果得到待检测文本的敏感词检测结果;
匹配模块具体用于:
将待匹配字符与敏感词容器的根节点的字符进行比对,确定是否一致;
如果待匹配字符与根节点的字符一致,且敏感词结束标志位为预设数值,返回匹配成功结果;
如果待匹配字符与根节点的字符一致,且敏感词结束标志位不为预设数值,k=1,进入循环步骤:将待匹配字符后的第k个字符与根节点的第k个叶子节点的字符进行匹配,确定是否一致;
如果第k个字符与第k个叶子节点的字符一致,当敏感词结束标志位不为预设数值,k=k+1后返回循环步骤;当敏感词结束标志位为预设数值,返回匹配成功结果;
如果第k个字符与第k个叶子节点的字符不一致,返回匹配失败结果。
在一种可能的实现方式中,敏感词容器包括至少一条存储分支,一条存储分支用于存储一个敏感词;存储分支包括至少一个节点,一个节点对应一个存储对象;
存储对象的数据结构为键值对数据结构,存储对象包括key值和value值;在一条存储分支中,第m个节点的存储对象的value值存放有作为第m+1个节点的存储对象,存储分支对应的敏感词的各个字符依次存放各个存储对象的key值,m为大于或等于1的正整数;
若两个敏感词的前j个字符相同,第j+1个字符不相同,则对应的两条存储分支的前j个节点相同,第j+1个节点及其往后的节点均不相同,j大于或等于0。
在一种可能的实现方式中,存储分支中的第一节点为根节点,非第一个节点为叶子节点;存储对象为Map对象;
敏感词的存放方式如下:
敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值;第m个节点的Map对象的value值存放作为第m+1个节点的Map对象,m大于或等于1,且小于或等于敏感词的字符数量;
若新添加的敏感词的前j个字符与敏感词容器中已存放敏感词的前j个字符相同,第j+1个字符不同,则新建i个节点,将新添加的敏感词的第j+1个及其往后的字符依次存放在i个节点中,i等于新添加的敏感词的字符数减去j。
在一种可能的实现方式中,存储分支还包括用于存放结束标志信息的目标Map对象,目标Map对象存放在存储分支对应的敏感词最后一个字符对应的Map对象的value值中。
在一种可能的实现方式中,上述装置还包括:
初始化加载模块,用于初始化敏感词数据,将敏感词数据加载至内存。
在一种可能的实现方式中,上述初始化加载模块具体用于:
获取敏感词数据;
构建敏感词容器;
执行单个敏感词添加步骤,单个敏感词添加步骤用于:从敏感词数据中读取一个敏感词作为待加载敏感词;依次将待加载敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值,第m个节点的Map对象的value值存放作为第m+1个节点的Map对象;待加载敏感词的字符添加完毕时,在目标Map对象中存储待加载敏感词的结束标志位信息,目标Map对象存放在待加载敏感词的最后一个字符对应的Map对象的value值中;
重复执行单个敏感词添加步骤,直至敏感词数据全部添加至敏感词容器。
在一种可能的实现方式中,上述检测模块具体用于:
获取匹配成功结果对应的敏感词,匹配成功结果对应的敏感词为待检测文本的敏感词。
在一种可能的实现方式中,上述装置还可以包括:
统计模块,用于统计匹配成功结果对应的敏感词的数量;
和/或
标记模块,用于在待检测文本中标记匹配成功结果对应的敏感词。
上述敏感词检测装置具有实现上述敏感词检测方法的功能,该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,硬件或软件包括一个或多个与上述功能相对应的模块,模块可以是软件和/或硬件。
需要说明的是,上述装置/模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图7为本申请一实施例提供的终端设备的结构示意图。如图7所示,该实施例的终端设备7包括:至少一个处理器70、存储器71以及存储在所述存储器71中并可在所述至少一个处理器70上运行的计算机程序72,所述处理器70执行所述计算机程序72时实现上述任意各个方法实施例中的步骤。
所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的举例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),该处理器70还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71在一些实施例中可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71在另一些实施例中也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作***、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种敏感词检测方法,其特征在于,包括:
获取待检测文本;
对所述待检测文本中的每一个待匹配字符执行字符匹配步骤,得到匹配结果;
根据所述匹配结果得到所述待检测文本的敏感词检测结果;
所述字符匹配步骤用于:
将所述待匹配字符与敏感词容器的根节点的字符进行比对,确定是否一致;
如果所述待匹配字符与所述根节点的字符一致,且敏感词结束标志位为预设数值,返回匹配成功结果;
如果所述待匹配字符与所述根节点的字符一致,且敏感词结束标志位不为预设数值,k=1,进入循环步骤:将所述待匹配字符后的第k个字符与所述根节点的第k个叶子节点的字符进行匹配,确定是否一致;
如果所述第k个字符与所述第k个叶子节点的字符一致,当敏感词结束标志位不为预设数值,k=k+1后返回所述循环步骤;当敏感词结束标志位为预设数值,返回匹配成功结果;
如果所述第k个字符与所述第k个叶子节点的字符不一致,返回匹配失败结果。
2.如权利要求1所述的方法,其特征在于,所述敏感词容器包括至少一条存储分支,一条所述存储分支用于存储一个敏感词;所述存储分支包括至少一个节点,所述存储分支中的第一个节点为根节点,非第一个节点为叶子节点;一个节点对应一个存储对象;
所述存储对象的数据结构为键值对数据结构,所述存储对象包括key值和value值;在一条所述存储分支中,第m个节点的存储对象的value值存放有作为第m+1个节点的存储对象,所述存储分支对应的敏感词的各个字符依次存放各个存储对象的key值,m为大于或等于1的正整数;
若两个敏感词的前j个字符相同,第j+1个字符不相同,则对应的两条存储分支的前j个节点相同,第j+1个节点及其往后的节点均不相同,j大于或等于0。
3.如权利要求2所述的方法,其特征在于,所述存储对象为Map对象;
敏感词的存放方式如下:
所述敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值;第m个节点的Map对象的value值存放作为第m+1个节点的Map对象,m大于或等于1,且小于或等于所述敏感词的字符数量;
若新添加的敏感词的前j个字符与所述敏感词容器中已存放敏感词的前j个字符相同,第j+1个字符不同,则新建i个节点,将所述新添加的敏感词的第j+1个及其往后的字符依次存放在所述i个节点中,i等于所述新添加的敏感词的字符数减去j。
4.如权利要求3所述的方法,其特征在于,所述存储分支还包括用于存放结束标志信息的目标Map对象,所述目标Map对象存放在所述存储分支对应的敏感词最后一个字符对应的Map对象的value值中。
5.如权利要求3或4所述的方法,其特征在于,在获取待检测文本之前,还包括:
初始化敏感词数据,将所述敏感词数据加载至内存。
6.如权利要求5所述的方法,其特征在于,初始化敏感词数据,将所述敏感词数据加载至内存,包括:
获取所述敏感词数据;
构建所述敏感词容器;
执行单个敏感词添加步骤,所述单个敏感词添加步骤用于:从所述敏感词数据中读取一个敏感词作为待加载敏感词;依次将所述待加载敏感词的第m个字符存放在对应存储分支的第m个节点的Map对象的key值,第m个节点的Map对象的value值存放作为第m+1个节点的Map对象;所述待加载敏感词的字符添加完毕时,在目标Map对象中存储所述待加载敏感词的结束标志位信息,所述目标Map对象存放在所述待加载敏感词的最后一个字符对应的Map对象的value值中;
重复执行所述单个敏感词添加步骤,直至所述敏感词数据全部添加至所述敏感词容器。
7.如权利要求1所述的方法,其特征在于,根据所述匹配结果得到所述待检测文本的敏感词检测结果,包括:
获取所述匹配成功结果对应的敏感词,所述匹配成功结果对应的敏感词为所述待检测文本的敏感词。
8.如权利要求1所述的方法,其特征在于,在根据所述匹配结果得到所述待检测文本的敏感词检测结果之后,还包括:
统计所述匹配成功结果对应的敏感词的数量;
和/或
在所述待检测文本中标记所述匹配成功结果对应的敏感词。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的方法。
CN201911344871.4A 2019-12-24 2019-12-24 敏感词检测方法、装置、终端设备和计算机可读存储介质 Active CN111159329B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911344871.4A CN111159329B (zh) 2019-12-24 2019-12-24 敏感词检测方法、装置、终端设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911344871.4A CN111159329B (zh) 2019-12-24 2019-12-24 敏感词检测方法、装置、终端设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111159329A true CN111159329A (zh) 2020-05-15
CN111159329B CN111159329B (zh) 2023-09-08

Family

ID=70557887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911344871.4A Active CN111159329B (zh) 2019-12-24 2019-12-24 敏感词检测方法、装置、终端设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111159329B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737398A (zh) * 2020-05-26 2020-10-02 北京百度网讯科技有限公司 文本中的敏感词的检索方法、装置、电子设备及存储介质
CN112052364A (zh) * 2020-09-27 2020-12-08 深圳前海微众银行股份有限公司 敏感信息检测方法、装置、设备与计算机可读存储介质
CN112328732A (zh) * 2020-10-22 2021-02-05 上海艾融软件股份有限公司 敏感词检测、敏感词树构建方法及装置
CN112766236A (zh) * 2021-03-10 2021-05-07 拉扎斯网络科技(上海)有限公司 文本生成方法、装置、计算机设备及计算机可读存储介质
CN113128220A (zh) * 2021-04-30 2021-07-16 北京奇艺世纪科技有限公司 文本判别的方法、装置、电子设备及存储介质
CN116776862A (zh) * 2023-08-25 2023-09-19 福昕鲲鹏(北京)信息科技有限公司 Ofd文件的敏感词屏蔽方法、装置、设备及介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799596A (zh) * 2011-05-27 2012-11-28 广州明朝网络科技有限公司 基于网络应用的关键词过滤方法及***
CN103617251A (zh) * 2013-11-28 2014-03-05 金蝶软件(中国)有限公司 一种敏感词匹配方法及***
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
CN107463666A (zh) * 2017-08-02 2017-12-12 成都德尔塔信息科技有限公司 一种基于文本内容的敏感词过滤方法
CN107741833A (zh) * 2017-10-30 2018-02-27 广东乐心医疗电子股份有限公司 可嵌套的key‑value的存储方法及装置
CN108038190A (zh) * 2017-12-11 2018-05-15 杭州有赞科技有限公司 基于多层字典树的敏感词过滤方法及***
CN108228760A (zh) * 2017-12-25 2018-06-29 湛江正信科技服务有限公司 敏感词过滤的方法、装置、移动终端及存储介质
CN109614309A (zh) * 2018-10-22 2019-04-12 中国平安财产保险股份有限公司 比较测试结果的方法、装置、计算机设备以及存储介质
CN109656950A (zh) * 2018-12-12 2019-04-19 上海达梦数据库有限公司 递归查询方法、装置、服务器及存储介质
CN109684469A (zh) * 2018-12-13 2019-04-26 平安科技(深圳)有限公司 敏感词过滤方法、装置、计算机设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799596A (zh) * 2011-05-27 2012-11-28 广州明朝网络科技有限公司 基于网络应用的关键词过滤方法及***
CN103617251A (zh) * 2013-11-28 2014-03-05 金蝶软件(中国)有限公司 一种敏感词匹配方法及***
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
CN107463666A (zh) * 2017-08-02 2017-12-12 成都德尔塔信息科技有限公司 一种基于文本内容的敏感词过滤方法
CN107741833A (zh) * 2017-10-30 2018-02-27 广东乐心医疗电子股份有限公司 可嵌套的key‑value的存储方法及装置
CN108038190A (zh) * 2017-12-11 2018-05-15 杭州有赞科技有限公司 基于多层字典树的敏感词过滤方法及***
CN108228760A (zh) * 2017-12-25 2018-06-29 湛江正信科技服务有限公司 敏感词过滤的方法、装置、移动终端及存储介质
CN109614309A (zh) * 2018-10-22 2019-04-12 中国平安财产保险股份有限公司 比较测试结果的方法、装置、计算机设备以及存储介质
CN109656950A (zh) * 2018-12-12 2019-04-19 上海达梦数据库有限公司 递归查询方法、装置、服务器及存储介质
CN109684469A (zh) * 2018-12-13 2019-04-26 平安科技(深圳)有限公司 敏感词过滤方法、装置、计算机设备及存储介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737398A (zh) * 2020-05-26 2020-10-02 北京百度网讯科技有限公司 文本中的敏感词的检索方法、装置、电子设备及存储介质
CN111737398B (zh) * 2020-05-26 2023-06-23 北京百度网讯科技有限公司 文本中的敏感词的检索方法、装置、电子设备及存储介质
CN112052364A (zh) * 2020-09-27 2020-12-08 深圳前海微众银行股份有限公司 敏感信息检测方法、装置、设备与计算机可读存储介质
CN112328732A (zh) * 2020-10-22 2021-02-05 上海艾融软件股份有限公司 敏感词检测、敏感词树构建方法及装置
CN112766236A (zh) * 2021-03-10 2021-05-07 拉扎斯网络科技(上海)有限公司 文本生成方法、装置、计算机设备及计算机可读存储介质
CN113128220A (zh) * 2021-04-30 2021-07-16 北京奇艺世纪科技有限公司 文本判别的方法、装置、电子设备及存储介质
CN113128220B (zh) * 2021-04-30 2023-07-18 北京奇艺世纪科技有限公司 文本判别的方法、装置、电子设备及存储介质
CN116776862A (zh) * 2023-08-25 2023-09-19 福昕鲲鹏(北京)信息科技有限公司 Ofd文件的敏感词屏蔽方法、装置、设备及介质

Also Published As

Publication number Publication date
CN111159329B (zh) 2023-09-08

Similar Documents

Publication Publication Date Title
CN111159329B (zh) 敏感词检测方法、装置、终端设备和计算机可读存储介质
CN111249736B (zh) 代码处理方法及装置
JP7052145B2 (ja) 大量な文書コーパスにおけるトークン・マッチング
US20230205755A1 (en) Methods and systems for improved search for data loss prevention
CN111797594A (zh) 基于人工智能的字符串处理方法及相关设备
CN115840808B (zh) 科技项目咨询方法、装置、服务器及计算机可读存储介质
CN116561389A (zh) 一种文本匹配方法、装置、设备及存储介质
CN115392235A (zh) 字符匹配方法、装置、电子设备及可读存储介质
CN114201756A (zh) 一种智能合约代码片段的漏洞检测方法和相关装置
CN109669678A (zh) 模板引擎整合方法、装置、电子设备及存储介质
CN115982310B (zh) 一种自带验证功能的链表生成方法及电子设备
CN111143461A (zh) 映射关系处理***、方法和电子设备
CN111124883A (zh) 一种基于树形表格的测试用例库引入方法、***及设备
CN113703753B (zh) 用于产品开发的方法、装置和产品开发***
CN114462381A (zh) 数据处理方法、装置、设备及存储介质
CN112417020B (zh) 业务扩展的实现方法、装置、计算机设备和存储介质
CN109840080B (zh) 字符属性比较方法、装置、存储介质及电子设备
CN113760237A (zh) 编译地址的更新方法、装置、终端设备及可读存储介质
CN114611039A (zh) 异步加载规则的解析方法、装置、存储介质和电子设备
CN113722321A (zh) 数据导出方法、装置和电子设备
CN112835901A (zh) 文件存储方法及装置、计算机设备、计算机可读存储介质
CN111753548A (zh) 信息获取方法及装置、计算机存储介质、电子设备
CN112286579B (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
CN111967240B (zh) 文本解析方法、装置、终端设备及计算机可读存储介质
CN113535710B (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