专利名称:一种海量文本数据关键词的快速查找方法
技术领域:
本发明属于数据检索技术领域,尤其涉及一种海量文本数据关键词的快速查找方法。
背景技术:
随着互联网的普及和TOB2.0技术的兴起,用户生成内容开始充斥着互联网,而移动互联网的蓬勃兴起将加速这一趋势。每个人都可以方便的发布自己的观点,互联网已经成为最有影响力的新媒体,但是带来的问题是恶意的人会发布非法的内容,比如政治、色情的内容。为了净化互联网,有必要对用户生成内容进行审查,但是在每个人都可以方便的产生内容的情况下,人工审核显然不可能,工作量太大。一个可行的方法是维护一份词表, 包含非法内容的核心关键词或短语,称为关键词表。使用程序来查找用户生成内容的关键词,这样仍然需要极大的计算能力,本发明提出一种新的实现快速扫描关键词的方法。
发明内容
本发明的目的在于,提供一种海量文本数据关键词的快速查找方法,用以在海量文本数据快速查找关键词。为了上述目的,本发明提出的技术方案是,一种海量文本数据关键词的快速查找方法,其特征是所述方法包括步骤1 设定关键词;步骤2 对设定的关键词进行预处理,生成第一哈希数据结构和第二哈希数据结构;步骤3 对文本进行扫描,获取其中的关键词。所述步骤2具体包括如下步骤步骤21 取每个关键词的第一个字符,计算所述字符的哈希值;步骤22 建立所述哈希值到关键词长度的映射,记为第一映射;步骤23 将第一映射装载到哈希数据结构中,从而生成第一哈希数据结构;步骤M 将长度相同的关键词放入同一个集合中,记为同长度关键词集合;步骤25 建立关键词长度到同长度关键词集合的映射,记为第二映射;步骤沈将第二映射装载到哈希数据结构中,从而生成第二哈希数据结构。所述步骤3具体包括步骤31 设定文本中字符串的位置为pos,且pos = 1 ;步骤32 取文本中的第pos个位置的字符并计算其哈希值;步骤33 判断第一哈希数据结构中,是否找到计算出的哈希值,如果是,则执行步骤34;否则,执行步骤38;步骤34 根据计算出的哈希值,找到与其对应的关键词长度;
步骤35 针对每个关键词长度,从第pos个位置开始,向后截取与关键词长度相等的子串;步骤36 判断第二哈希数据结构中,是否找到截取的子串,如果是,则执行步骤 37 ;否则,执行步骤38 ;步骤37 截取的子串就是要查找的关键词;步骤38 判断第pos个位置是否是文本的最后一个字符位置,如果是,则执行步骤 39 ;否则,令pos = pos+Ι,返回步骤32 ;步骤39:查找结束。本发明提升了在海量文本数据中查找给定关键词表的速度,节省计算资源。
图1是海量文本数据关键词的快速查找方法流程图;图2是对设定的关键词进行预处理流程图;图3是第一映射表;图4是第二映射表;图5是对文本进行扫描并获取其中的关键词流程图。
具体实施例方式下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。实施例设定本实施例中给出的文本包含的字符串是‘She enters into the garden forplanting,,。图1是海量文本数据关键词的快速查找方法流程图,图1中,本发明提供的方法包括步骤1:设定关键词。关键词根据实际需要设定。在本发明中,设定关键词包括“enter”、“plant”、 “ come,,、“ go,,和“ enhance ”。本发明就是在上述文本字符串中查找这几个关键词。步骤2 对设定的关键词进行预处理,生成第一哈希数据结构和第二哈希数据结构。图2是对设定的关键词进行预处理流程图,图2中,针对设定的上述5个关键词的预处理过程是步骤21 取每个关键词的第一个字符,计算所述字符的哈希值。本步骤的目的是为了将关键词的第一个字符转换为整数数值。将字符转换成整数摘要的算法有很多,在本实施例中,将字符在英文字母表中的位置,作为该字符的整数数值,即哈希值。如字符“a”的哈希值为1,字符“b”的哈希值为2,依次类推。根据上述计算规则,步骤1设定的关键词“拙切1~,,、“?13壯,,、“(01^,,、“80,,和 "enhance"的第一个字符的哈希值分别为5、16、3、7和5。步骤22 建立所述哈希值到关键词长度的映射,记为第一映射。
步骤1 设定的关键词 “enter”、“plant”、“C0me”、“g0” 和 “enhance” 的长度分别为 5、5、4、2 和 7。建立哈希值到关键词长度的映射形成的映射表如图3所示。步骤23 将第一映射装载到哈希数据结构中,从而生成第一哈希数据结构。步骤M 将长度相同的关键词放入同一个集合中,记为同长度关键词集合。在设定的关键词“enter,,、“plant,,、“come,,、“go”和“enhance” 中,“enter” 和 “plant”的长度相同,均为5,因此将“enter”和“plant”放入同一个集合{enter, plant} 中,该集合为同长度关键词集合。步骤25 建立关键词长度到同长度关键词集合的映射,记为第二映射。第二映射表如图4所示。步骤沈将第二映射装载到哈希数据结构中,从而生成第二哈希数据结构。步骤3 对文本进行扫描,获取其中的关键词。图5是对文本进行扫描并获取其中的关键词流程图。图5中,对文本进行扫描并获取其中的关键词包括步骤31 设定文本中字符串的位置为pos,且pos = 1。步骤32 取文本中的第pos个位置的字符并计算其哈希值。步骤33 判断第一哈希数据结构中,是否找到计算出的哈希值,如果是,则执行步骤34;否则,执行步骤38。步骤34 根据计算出的哈希值,找到与其对应的关键词长度。步骤35 针对每个关键词长度,从第pos个位置开始,向后截取与关键词长度相等的子串。步骤36 判断第二哈希数据结构中,是否找到截取的子串,如果是,则执行步骤 37 ;否则,执行步骤38。步骤37 截取的子串就是要查找的关键词。步骤38 判断第pos个位置是否是文本的最后一个字符位置,如果是,则执行步骤 39 ;否则,令pos = pos+Ι,返回步骤32。步骤39:查找结束。为了使步骤3的过程更加清晰,本发明针对文本“Sie enters into the garden for planting",以pos = Upos = 5和pos = 32是为例进行说明,其他位置的扫描过程于此相同。当pos = 1时,上述文本的第1个位置的字符为“S”,其哈希值为19。由于该数值不在第一哈希数据结构中(可参见图3的第一映射表),则执行步骤38,即判断第1个位置是否是文本的最后一个字符位置,显然它不是最后一个位置,则令pos = pos+1 = 2,从文本的第2个位置继续扫描。当pos = 5时,上述文本的第5个位置的字符为“e”(空格也算1个字符位置), 其哈希值为5。由于该数值在第一哈希数据结构中,因此在第一哈希数据结构中找到与其对应的关键词长度分别为5和7。针对关键词长度5和7,从第pos = 5个位置开始,向后截取与关键词长度相等的子串,即从第5个位置向后分别截取5个子串和7个子串,分别得到 “enter”和“enter”。由于第二哈希数据结构中存在截取的子串“enter”,则“enter”就是查找到的关键词。再判断第5个位置不是文本的最后一个字符位置,则令Pos = pos+1 = 6,从文本的第6个位置继续扫描。当pos = 32时,上述文本的第32个位置的字符为“ρ”,其哈希值为16。由于该数值存在于第一哈希数据结构中,因此在第一哈希数据结构中找到与其对应的关键词长度分别为5。针对关键词长度5,从第pos = 32个位置开始,向后截取与关键词长度相等的子串, 即从第32个位置向后分别截取5个子串,得到“plant”。由于第二哈希数据结构中存在截取的子串“plant”,则“plant”就是查找到的关键词。再判断第32个位置不是文本的最后一个字符位置,则令pos = 33,从文本的第33个位置继续扫描。经过上述步骤,从文本 “She enters into the garden for planting” 中找出了两个关键词,分别为“enter”和“plant”。本发明将字符转换为数值,而后利用哈希数据结构进行定位查找。由于哈希数据结构查找的时间复杂度为0(1),因此本发明大大提升了海量文本数据查找的速度,节省了计算资源。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种海量文本数据关键词的快速查找方法,其特征是所述方法包括 步骤1 设定关键词;步骤2 对设定的关键词进行预处理,生成第一哈希数据结构和第二哈希数据结构; 步骤3 对文本进行扫描,获取其中的关键词。
2.根据权利要求1所述的一种海量文本数据关键词的快速查找方法,其特征是所述步骤2具体包括如下步骤步骤21 取每个关键词的第一个字符,计算所述字符的哈希值; 步骤22 建立所述哈希值到关键词长度的映射,记为第一映射; 步骤23 将第一映射装载到哈希数据结构中,从而生成第一哈希数据结构; 步骤M 将长度相同的关键词放入同一个集合中,记为同长度关键词集合; 步骤25 建立关键词长度到同长度关键词集合的映射,记为第二映射; 步骤沈将第二映射装载到哈希数据结构中,从而生成第二哈希数据结构。
3.根据权利要求2所述的一种海量文本数据关键词的快速查找方法,其特征是所述步骤3具体包括步骤31 设定文本中字符串的位置为pos,且pos = 1 ; 步骤32 取文本中的第pos个位置的字符并计算其哈希值;步骤33 判断第一哈希数据结构中,是否找到计算出的哈希值,如果是,则执行步骤 34;否则,执行步骤38;步骤34 根据计算出的哈希值,找到与其对应的关键词长度;步骤35 针对每个关键词长度,从第pos个位置开始,向后截取与关键词长度相等的子串;步骤36 判断第二哈希数据结构中,是否找到截取的子串,如果是,则执行步骤37;否则,执行步骤38;步骤37 截取的子串就是要查找的关键词;步骤38 判断第pos个位置是否是文本的最后一个字符位置,如果是,则执行步骤39 ; 否则,令pos = pos+Ι,返回步骤32 ; 步骤39 查找结束。
全文摘要
本发明公开了数据检索技术领域中的一种海量文本数据关键词的快速查找方法。所述方法包括设定关键词;对设定的关键词进行预处理,生成第一哈希数据结构和第二哈希数据结构;对文本进行扫描,获取其中的关键词。本发明将字符转换为数值,而后利用哈希数据结构进行关键词定位查找,提高了海量文本数据查找的速度,节省了计算资源。
文档编号G06F17/30GK102184245SQ20111012911
公开日2011年9月14日 申请日期2011年5月18日 优先权日2011年5月18日
发明者刘向杰, 马苗苗 申请人:华北电力大学