一种分词搜索方法及其装置与流程

文档序号:12667088阅读:194来源:国知局
一种分词搜索方法及其装置与流程

本发明涉及搜索引擎技术领域,特别涉及一种分词搜索方法及其装置。



背景技术:

对于搜索引擎来说,分词技术的重要程度是显而易见的,它关系搜索引擎最重要的部分,搜索精确的问题。Solr自带的分词器不能满足对中文的准确分词,因此需要引入外部中文分词技术。

中文分词到底对搜索引擎有多大影响。对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,没有人能看得完,最重要的是把最相关的结果排在最前面,这也称为相关度排序。

随着互联网的发展,现在正在逐步向人们学习,工作,休闲等各个空间延伸,因此互联网上信息迎来了爆炸式的增长,信息多元化使人们分辨搜索起来困难无比,如何快速的让人们在多种多样的信息中找到自己想要的内容成了一个难题。

在solr的分词配置后成功后,在solr后台管理界面进行模糊查询的时候会存在分词匹配个数的问题。打个简单的比方:搜索“大学生奶粉”。 往往这个时候就有一大批数据出来,只要包含了分词后的词的数据都会搜索出来,给客户的体验不怎么好,本来客户是想只展示大学生奶粉的,结果XX大学、XX大学生,还有其他名称的奶粉都给搜索出来。显然这不是我们想要的结果,我们需要的更精确的搜索结果。



技术实现要素:

本发明的目的一是提供一种分词搜索方法,用于解决现有技术中分词搜索准确度不高的问题,实现了提高分词搜索准确度的技术效果。

本发明的上述技术目的一是通过以下技术方案得以实现的:

一种分词搜索方法,包括以下步骤:

获取原始搜索词;

对所述搜索词进行分词处理,得到最小分词组和最大分词组;

搜索包含所述最小分词组中所有分词的第一词条;

判断是否存在所述第一词条;

若存在所述第一词条,对所述第一词条进行分类,统计所述第一词条在各类目中出现的次数,查找所述第一词条在各类目中出现次数最多的类目作为目标类目;

获取所述目标类目,在所述目标类目下搜索包含最小分词中任一分词的第一目标词条,并输出所述第一目标词条;

若不存在第一词条,搜索包含所述最大分词组中任一分词的第二词条;

获取所述第二词条,获取所述第二词条,对所述第二词条进行分词处理得到第一分词组,并统计所述第一分词组中的分词在第二词条中出现的次数,查找所述第一分词组中与所述最小分词组中相同的分词组成分词交集,查找所述分词交集中在第二词条中出现次数最多的分词作为中心词;

判断所述中心词是否位于所述原始搜索词末尾;

若中心词位于所述原始搜索词末尾,查找第二词条中包含中心词的词条作为第二目标词条,并输出所述第二目标词条;

若中心词不是所述原始搜索词里最后一个词,输出“未搜索到”。

进一步的,所述分词处理通过solr分词系统完成。

进一步的,所述最大分词组中的分词包括由原始搜索词通过最小切分法得到的分词。

进一步的,所述对所述搜索词进行分词处理的步骤,还包括去除分词处理中得到的停用词。

进一步的,所述停用词包括语气助词、连词和结构助词。

进一步的,所述搜索包含所述最小分词组中所有分词的第一词条之前还包括步骤:调用数据库,所述搜索均在数据库中进行。

本发明的目的二是提供一种分词搜索装置,其包括:

获取模块,用于获取原始搜索词;

分词处理模块,用于对所述搜索词进行分词处理,得到最小分词组和最大分词组;

第一搜索模块,用于搜索包含所述最小分词组中所有分词的第一词条;

第一判断模块,用于判断是否存在所述第一词条;

目标类目查找模块,若存在所述第一词条,对所述第一词条进行分类,统计所述第一词条在各类目中出现的次数,查找所述第一词条在各类目中出现次数最多的类目作为目标类目;

第一输出模块,用于获取所述目标类目,在所述目标类目下搜索包含最小分词中任一分词的第一目标词条,并输出所述第一目标词条;

第二搜索模块,若不存在所述第一词条,搜索包含所述最大分词组中任一分词的第二词条;

中心词查找模块,用于获取所述第二词条,对所述第二词条进行分词处理得到第一分词组,并统计所述第一分词组中的分词在第二词条中出现的次数,查找所述第一分词组中与所述最小分词组中相同的分词组成分词交集,查找所述分词交集中在第二词条中出现次数最多的分词作为中心词;

第二判断模块,用于判断所述中心词是否位于所述原始搜索词末尾;

第二输出模块,若中心词位于所述原始搜索词的末尾,查找第二词条中包含中心词的词条作为第二目标词条,并输出所述第二目标词条;

若中心词不是所述原始搜索词里最后一个词,输出“未搜索到”。

进一步的,所述分词处理模块还包括去除分词处理中得到的停用词。

综上所述,本发明具有以下有益效果:通过对原始搜索词提取最大分词组和最小分词组,待提取完毕后,先在数据库中搜索包含最小分词组中所有分词的第一词条,若存在第一词条,找到第一词条在其涵盖的类目中数量最多的类目作为目标类目,在再这个目标类目下搜索包含最小分词组中任一分词的第一目标词条,作为搜索结果输出;若不存在第一词条,搜索数据库中包含最大分词组中任一分词的第二词条,对第二词条进行分词处理得到第一分词组,去第一分词组与最大分词组的交集作为分词交集,并找到分词交集中在第二词条中出现次数最多的分词作为中心词,若中心词位于原始搜索词的末尾,搜索第二词条中包含中心词的词条作为第二目标词条,第二目标词条作为搜索结果输出,若中心词不位于原始搜索词的末尾,则输出“未搜索到”。当数据库中找不到包含最小分词组中所有分词的第一词条时,通过判断原始搜索词中心词的方式对数据库进行搜索,搜索出用户想要信息。

附图说明

图1为本发明实施例中分词方法的主要流程图;

图2为本实施例中分词装置的结构图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的保护范围内都受到专利法的保护。

本发明实施例中的分词搜索方法包括:获取原始搜索词;对搜索词进行分词处理,得到最小分词组和最大分词组;搜索包含最小分词组中所有分词的第一词条;判断是否存在第一词条;若存在第一词条,对第一词条进行分类,统计第一词条在各类目中出现的次数,查找第一词条在各类目中出现次数最多的类目作为目标类目;获取目标类目,在目标类目下搜索包含最小分词组中任一分词的第一目标词条,并输出第一目标词条;若不存在第一词条,搜索包含最大分词组中任一分词的第二词条;获取第二词条,对第二词条进行分词处理得到第一分词组,并统计第一分词组中的分词在第二词条中出现的次数,查找第一分词组中与最小分词组中相同的分词组成分词交集,查找分词交集中在第二词条中出现次数最多的分词作为中心词;判断中心词是否位于原始搜索词末尾;若中心词位于原始搜索词末尾,查找第二词条中包含中心词的词条作为第二目标词条,并输出第二目标词条;若中心词不是原始搜索词里最后一个词,输出“未搜索到”。

参见图1,本发明实施例中的方法包括一下步骤:

步骤101:获取原始搜索词。

本发明实施例中,可以首先获得一段文字,在获得一段文字后,加载词典库。本实施例中还可以自行构建一停用词扩展词典库,在停用词扩展词典库中包含有多种词汇,例如可以有语气助词、连词、结构助词等,在停用词扩展词典中包括的词汇都是对理解整个句子无帮助的词汇,例如,有一句话是:“大学生的奶粉。”其中“的”就是结构助词,对于整个句子来说就是无意义的词组,则这个“的”字就可以在停用词扩展词典库中。

步骤102:对搜索词进行分词处理,得到最小分词组和最大分词组。

本发明实施例中,可以首先通过双向最大匹配法获得最小分词组,双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。还是那个“大学生的奶粉”的例子,双向最大匹配法即把所有可能的词都分出来,上面的句子在去除停用词“的”后,可以得到最小分词组:{大学、大学生、学生、奶粉}。在根据双向最大匹配法获得最小分词组后,可以继续根据最小切分法对原始搜索词进行处理获得最大分词组,使每一句中切出的次数最少,在“大学生的奶粉”的例子中,去除停用词“的”后,可以得到最大分词组:{大学生、奶粉}。

或者,本发明实施例中,可以首先根据最小切分法对原始搜索词进行分词处理得到最大分词组,再根据双向最大匹配法对原始搜索词进行分词处理得到最小分词组。

或者,本发明实施例中,可以同时根据正向最大匹配法和最小切分法分别对原始搜索词进行分词处理,获得最小分词组和最大分词组。

步骤103:搜索包含最小分词组中所有分词的第一词条。

本发明的实施例中,将最小分词组中的所有分词在数据库中进行搜索,获得第一词条,其中,第一词条中必须包含最小分词组中的所有分词。例如,上述最小分词组{大学、大学生、学生、奶粉},在数据库中查找的第一词条应为“X大学生奶粉X”、“X大学生X奶粉X”、“大学X大学生X奶粉”等。

步骤104:判断是否存在第一词条。

本发明的实施例中,在数据库中搜索包含最小分词组中所有分词的第一词条后,若搜索得到一个及一个以上的第一词条时,判定为存在第一词条。若未搜索到第一词条,则判定为不存在第一词条。若存在第一词条,则进入步骤105,若不存在第一词条,则进入步骤107。

步骤105:对第一词条进行分类,统计第一词条在各类目中出现的次数,查找第一词条在各类目中出现次数最多的类目作为目标类目。

本发明的实施例中,此步骤是在步骤104之后,判断为存在第一词条才可执行的步骤。数据库中的所有词条,均有其对应的类目,即第一词条也均有其对应的类目,通过对第一词条所在类目中的数量进行统计,得到第一词条在各类目中数量最多的类目作为目标类目。比如,在上述例子中,“大学生的奶粉”对应的目标类目是“营养保健品”,既是确定了原始搜索词所属的类目。

步骤106,获取目标类目,在目标类目下搜索包含最小分词中任一分词的第一目标词条,并输出第一目标词条。

本发明的实施例中,获取目标类目后缩小了原始搜索词的搜索范围,使搜索变得更加有目的性,在目标类目下搜索包含最下分词中任一分词的第一目标词条,从而找到与用户最需要的词条,并输出第一目标词条。在上述例子中,即搜索到在类目“营养保健品”下的包含最小分词组{大学、学生、大学生、奶粉}中任一分词的第一目标词条。作为优化,可以最小分词组中的分词在第一目标词条中出现的数量由多到少进行排序。例如,在上述例子中“奶粉”是类目“营养保健品”中搜索得到第一目标词条最多的分词,因此将包含“奶粉”的第一目标词条排在前面。

步骤107,搜索包含最大分词组中任一分词的第二词条。

本发明的实施例中,此步骤是在步骤104之后,判断为不存在第一词条时可执行的步骤。将最大分词组中的任一分词在数据库中进行搜索,获得第二词条,其中,第二词条中必须包含最大分词组中的任一分词,当然也可包含最大分词组中的所有分词。例如,上述最大分词组{大学生、奶粉},对应的在数据库中查找的第二词条应为“X大学生X”、“X奶粉X”也可以是“X大学生奶粉X”、“X大学生X奶粉X”等。

步骤108,获取第二词条,对第二词条进行分词处理得到第一分词组,查找第一分词组中与最小分词组中相同的分词组成分词交集,查找分词交集中在第二词条中出现次数最多分词作为中心词。

本发明的实施例中,在获取第二词条后,首先对第二词条进行分词处理,这里的分词处理优选为双向最大匹配法,分出第二词条中所有可能的分词作为第一分词组。然后查找第一分词组与最小分词组中相同的分词作为分词交集,并将分词交集中在第二词条中出现次数最多的分词作为中心词。在筛选中心词的过程中,可通过多种方法进行筛选,方法一:统计分词交集中的分词分别在第二词条中出现的次数,找到分词交集中在第二词条中出现次数最多的分词作为中心词。在上述“大学生的奶粉”的例子中,最大分词组{大学生、奶粉}与第一分词组{牛奶、奶粉、营养、学生、大学生…}的交集是{大学生、奶粉},其中,包含“奶粉”的第二词条有300个,包含“大学生”的第二词条有20个,则得到中心词“奶粉”。方法二:统计第一分词组中的分词分别在第二词条中出现的次数,然后根据分词交集中的分词,筛选得到在第一分词组中为分词交集中的分词对应的在第二词条中出现的次数,找到在第二词条中出现次数最多的分词作为中心词。在上述“大学生的奶粉”的例子中,第二词条包含第一分词组{牛奶、奶粉、营养、学生、大学生…}中“奶粉”的有300个,包含“牛奶”的有150个,包含“营养”的有100个,包含“学生”的有80个,包含“大学生”的有20个。其中“奶粉”出现的次数最多,认为“奶粉”使原始搜索词的中心词。在本实施例中,筛选得到中心词的方法不限于上述两种方法。

步骤109,判断中心词是否位于原始搜索词末尾。

本发明的实施例中,判断中心词是否位于原始搜索词的末尾,例如,在上述“大学生的奶粉”的例子中,判断中心词“奶粉”是否位于“大学生的奶粉”的末尾。作为优化,当原始搜索词的末尾出现了停用词扩展词典库中的停用词时,则去该通用词再进行上述判断。即,当原始搜索词为“大学生的奶粉啊”中,“啊”是语气助词应去除,得到“大学生的奶粉”再进行上述判断。

步骤110,查找第二词条中包含中心词的词条作为第二目标词条,并输出所述第二目标词条。

本发明的实施例中,此步骤是在步骤109之后,判断为中心词位于原始搜索词的末尾时才可执行的步骤。查找数据库中包含中心词的词条作为第二目标词条,并输出第二目标词条。例如,在上述“大学生的奶粉”的例子中,“奶粉”为中心词且位于“大学生的奶粉”末尾,因此在数据库中即可搜索包含“奶粉”的词条作为第二目标词条并输出。

步骤111,输出“未搜索到”。

本发明的实施例中,此步骤是在步骤109之后,判断为中心词不位于原始搜索词的末尾时才可执行的步骤。当中心词不位于原始搜索词的末尾时,默认为中心词不是用户需要的信息的关键字,然后输出“为搜索到”返回。在返回“未搜索到”后也可返回最小分词组中的所有分词供用户选择作为中心词,再对选择后的中心词进行搜索。

本发明的实施例中,上述步骤103、步骤107可同时进行,当然在步骤104判断出数据库存在第一词条时,不需要进行步骤107,但是,当步骤104判断出数据库不存在第一词条时,就需进行步骤107。同时进行步骤103和步骤107的优点是:节省了步骤104判断出数据库不存在第一词条后才进行步骤107的时间。而缺点也是显而易见的:在步骤104判断出数据库不存在第一词条时,进行了多余的步骤107,增加了运算的负荷。

参照图2,本发明还提供了一种分词搜索装置,包括获取模块201、分词处理模块202、第一搜索模块203、第一判断模块204、目标类目查找模块205、第一输出模块206、第二搜索模块207、中心词查找模块208、第二判断模块209、第二输出模块210、数据存储模块211。

获取模块201,用于获取原始搜索词;

分词处理模块202,用于对所述搜索词进行分词处理,得到最小分词组和最大分词组,其中分词处理模块中还存储了停用词扩展词典库;

第一搜索模块203,用于搜索包含所述最小分词组中所有分词的第一词条;

第一判断模块204,用于判断是否存在所述第一词条;

目标类目查找模块205,若存在第一词条,对第一词条进行分类,统计第一词条在各类目中出现的次数,查找所述第一词条在各类目中出现次数最多的类目作为目标类目;

第一输出模块206,用于获取所述目标类目,在目标类目下搜索包含所述最小分词组中任一分词的第一目标词条,并输出所述第一目标词条;

第二搜索模块207,若不存在所述第一词条,搜索包含最大分词组中任一分词的第二词条;

中心词查找模块208,用于获取所述第二词条,对第二词条进行分词处理得到第一分词组,并统计第一分词组中的分词在第二词条中出现的次数,查找第一分词组中与所述最小分词组中相同的分词组成分词交集,查找分词交集中在第二词条中出现次数最多的分词作为中心词;

第二判断模块209,用于判断所述中心词是否位于原始搜索词末尾;

第二输出模块210,若中心词位于所述原始搜索词的末尾,查找第二词条中包含中心词的词条作为第二目标词条,并输出第二目标词条;

若中心词不是原始搜索词里最后一个词,输出“未搜索到”。

数据存储模块211,用于存储数据库。

其中,第一搜索模块203和第二搜索模块207可同时进行,当然在第一判断模块204判断出数据库存在第一词条时,第二搜索模块207的执行是多余的,但是,当第一判断模块204判断出数据库不存在第一词条时,第二搜索模块207就需执行。第一搜索模块203和第二搜索模块207可同时进行的优点是:节省了第一判断模块204判断出数据库不存在第一词条后,模块207才执行的时间。而缺点也是显而易见的:在第一判断模块204判断出数据库不存在第一词条时,第二搜索模块207的执行增加了运算的负荷。

本发明的实施例中,本发明的分词搜索装置可整合在PC端、手机端和服务器端,但不限于上述这三种种具体的设备。本发明的实施例中,本装置可全部整合在PC端或手机端或服务器端,由服务器执行分词搜索。本装置的实施例中,本装置中的获取模块201和分词处理模块202可整合在PC端,而其他模块可整合在服务器端。

本发明的分词搜索方法和分词搜索装置可广泛应用于搜索引擎中,特别是电子商务网站搜索商品时,可精确的搜索用户需要搜索的信息,而不是其它不相关的信息。例如,搜索“成人奶粉”,经过分词处理会比拆分为“成人”和“奶粉”,然后搜索出成人用品和婴儿奶粉,这显然不是用户需要的搜索结果,而本发明则可以有效的避免上述搜索偏差,搜索出用户需要的搜索结果。

结合本文所揭示实施例描述的各种例示性逻辑块、模块、电路、元件及/或组件均可借助通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或经设计以执行本文所描述功能的任何组合来实施或执行。通用处理器可以是微处理器,但另一选择为,所述处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合或任何其它这种配置。

结合本文所揭示实施例描述的方法或算法可直接包含在硬件、可由处理器执行的软件模块或两者的组合中。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬磁盘、可装卸磁盘、CD-ROM或所属技术领域中已知的任何其它形式的计算机可读媒体中。计算机可读媒体可耦合到所述处理器以使所述处理器可从计算机可读媒体读取信息及将信息写入到所述计算机可读媒体。或者,计算机可读媒体可集成到处理器。

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