著录项信息
专利名称 | 一种地址匹配的方法和装置 |
申请号 | CN201310348963.6 | 申请日期 | 2013-08-12 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-02-25 | 公开/公告号 | CN104375992A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中国移动通信集团浙江有限公司 | 申请人地址 | 浙江省杭州市环城北路288号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国移动通信集团浙江有限公司 | 当前权利人 | 中国移动通信集团浙江有限公司 |
发明人 | 王继春;方炜;项建晨;余建利;张莉 |
代理机构 | 北京银龙知识产权代理有限公司 | 代理人 | 黄灿;程美琼 |
摘要
本发明提供了一种地址匹配的方法和装置,所述方法包括:获取用户输入的查询词;将所述查询词拆分成至少一个索引关键词;根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;显示所述地址信息中的至少一个。本发明能够提高检索速度。
1.一种地址匹配的方法,其特征在于,包括:
采用倒排索引将原始的目标文档集拆分成一个个用户可能输入的查询索引;
获取用户输入的查询词;
将所述查询词拆分成至少一个索引关键词;
根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;
显示所述地址信息中的至少一个。
2.根据权利要求1所述的地址匹配的方法,其特征在于,所述将所述查询词拆分成至少一个索引关键词的步骤包括:
根据地理区划信息,将所述查询词拆分成至少一个索引关键词。
3.根据权利要求2所述的地址匹配的方法,其特征在于,所述根据地理区划信息,将所述查询词拆分成至少一个索引关键词的步骤包括:
获取第一级别地理区划关键词,在所述查询词中匹配;
如果匹配成功,提取所述查询词中匹配的所述查询词左边的字符串以及匹配的所述查询词,组成索引关键词;
对所述查询词中的剩余字符串使用第二级别地理区划关键词进行拆分。
4.根据权利要求1所述的地址匹配的方法,其特征在于,所述将所述查询词拆分成至少一个索引关键词的步骤包括:
分词步骤,根据地理区划信息,将所述查询词拆分成至少一个当前待查询字符串;
判断步骤,判断所述当前待查询字符串是否包含在关键词数据库中;
第一输出步骤,当所述当前待查询字符串包含在所述关键词数据库时,将所述待查询字符串作为一个索引关键词输出;
第二输出步骤,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串是单字符串时,将所述待查询字符串作为一个索引关键词输出;
更新步骤,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串不是单字符串时,对所述当前待查询字符串进行分词,生成为新的当前待查询字符串,返回所述判断步骤。
5.根据权利要求4所述的地址匹配的方法,其特征在于,所述对所述当前待查询字符串进行分词,生成为新的当前待查询字符串的步骤包括:
提取所述当前待查询字符串中位于右边或者左边的预定数量的字符;
将所述预定数量的字符和所述当前待查询字符串中的剩余字符串分别作为新的当前待查询字符串。
6.根据权利要求4所述的地址匹配的方法,其特征在于,所述对所述当前待查询字符串进行分词,生成为新的当前待查询字符串的步骤包括:
将所述当前待查询字符串中位于右边的第一个字符作为一索引关键词输出;
将所述当前待查询字符串中的剩余字符串作为新的当前待查询字符串。
7.根据权利要求1所述的地址匹配的方法,其特征在于,所述根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息的步骤包括:
预先根据关键词数据库中的各个索引关键词生成跳跃表;
将拆分生成的所述索引关键词与所述跳跃表中的索引关键词匹配;
当匹配成功时,获取匹配成功的所述索引关键词对应的地址信息。
8.根据权利要求1所述的地址匹配的方法,其特征在于,所述显示所述地址信息中的至少一个的步骤包括:
根据所述地址信息的显示权重,顺序显示地址信息。
9.根据权利要求8所述的地址匹配的方法,其特征在于,
所述地址信息的显示权重由以下一个或多个的任意组合确定:所述地址信息对应的索引关键词的显示权重、所述地址信息的优先级、所述地址信息的地址详细度、所述地址信息的准确率、所述地址信息的被搜索频率、所述地址信息的地址资源归属或者所述地址信息对应的地理位置所在的接入模式。
10.根据权利要求1所述的地址匹配的方法,其特征在于,所述索引关键词和地址信息之间的对应关系的建立步骤包括:
获取至少一个地址信息;
对所述至少一个地址信息进行分词,生成至少一个子地址信息;
将所述子地址信息作为索引关键词,生成索引关键词与所述地址信息之间的对应关系。
11.根据权利要求10所述的地址匹配的方法,其特征在于,所述将所述子地址信息作为索引关键词,生成索引关键词与所述地址信息之间的对应关系的步骤包括:
获取所述子地址信息对应的别名字符串;
将所述别名字符串作为索引关键词,生成索引关键词与所述地址信息之间的对应关系。
12.根据权利要求11所述的地址匹配的方法,其特征在于,
所述别名字符串为所述子地址信息的同音字、所述子地址信息的近音字、所述别名字符串为所述子地址信息的中的各个字符的拼音的组合、所述子地址信息中的各个字符的拼音首字母的组合、或者所述子地址信息的外文翻译。
13.根据权利要求11所述的地址匹配的方法,其特征在于,
当所述子地址信息为兴趣点的地址时,所述别名字符串为所述兴趣点的名称;
当所述子地址信息为兴趣点的名称时,所述别名字符串为所述兴趣点的地址。
14.一种地址匹配的装置,其特征在于,包括:
第一获取单元,在采用倒排索引将原始的目标文档集拆分成一个个用户可能输入的查询索引之后,用于获取用户输入的查询词;
拆分单元,将所述查询词拆分成至少一个索引关键词;
第二获取单元,根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;
显示单元,显示显示所述地址信息中的至少一个。
15.根据权利要求14所述的装置,其特征在于,所述拆分单元具体为:根据地理区划信息,将所述查询词拆分成至少一个索引关键词。
16.根据权利要求14所述的装置,其特征在于,所述拆分单元包括:
分词子单元,根据地理区划信息,将所述查询词拆分成至少一个当前待查询字符串;
判断子单元,判断所述当前待查询字符串是否包含在关键词数据库中;
第一输出子单元,当所述当前待查询字符串包含在所述关键词数据库时,将所述待查询字符串作为一个索引关键词输出;
第二输出子单元,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串是单字符串时,将所述待查询字符串作为一个索引关键词输出;
更新子单元,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串不是单字符串时,对所述当前待查询字符串进行分词,生成为新的当前待查询字符串,返回所述判断步骤。
17.根据权利要求14所述的装置,其特征在于,所述第二获取单元包括:
建立子单元,预先根据关键词数据库中的各个索引关键词生成跳跃表;
匹配单元,将拆分生成的所述索引关键词与所述跳跃表中的索引关键词匹配;
获取子单元,当匹配成功时,获取匹配成功的所述索引关键词对应的地址信息。
一种地址匹配的方法和装置\n技术领域\n[0001] 本发明涉及检索领域,特别是指一种地址匹配的方法和装置。\n背景技术\n[0002] 随着固网业务的快速发展,对系统支撑能力提出了更高的要求。面对海量的地址数据,前台业务办理时如何实现高效、快速定位,是需要面对的新课题。传统的移动类业务(如手机)通过无线技术进行通信,终端的使用位置并不固定,因此办理时无需关心终端的位置属性。而固网类业务由于其“有线性”,受有线性的约束,用户必须在移动已经覆盖的区域内才能办理相应的业务。因此前台业务办理时,用户安装地址是否已经覆盖的确认就至关重要。\n[0003] 这种重要性主要表现在:\n[0004] a)移动作为固网业务的后进入者,网络覆盖能力难以一蹴而就,相当长时间内会存在部分区域覆盖的情况。在这种情况下,准确的区分哪些地址可以发放业务、哪些地址不具备条件发放业务,不但有利于市场部门进行精确的业务营销,也有利于避免受理之后发现无法安装导致客户感知下降。\n[0005] b)安装地址与后续分配给用户的设备端口、上门安装施工布线、用户报障之后的障碍处理等都有直接的联系,因此准确、高效的定位用户地址对于固网业务的运维也非常重要。\n[0006] 综上所述,固网安装地址数据是固网业务办理的基础,地址资源数据的高效、准确检索对于固网业务的办理与运营有着重要的意义。\n[0007] 目前固网覆盖地址的增加通常由分公司的网络或者工程建设人员先进行新区域设备及传输线路的安装,安装之后网络人员采集安装设备的覆盖地址,然后将覆盖地址批量录入至系统中。通常,批量录入至系统中的覆盖地址资源会以字符串记录的形式依次存放在数据库表中,如图1所示。之后前台营业人员或客服人员在办理业务时会根据客户所报的地址信息碎片化的输入一些地址信息(如:XX路或XX小区)进行模糊查询。在Oracle中的字符串模糊查询通常采用like“%关键词%”的方式进行检索,由于此种方式无法利用索引,每次模糊匹配都会全表扫描,不但检索的速度慢,而且也非常消耗系统的CPU,并进而影响应用中的其它模块的正常使用。而且,这种方式中,当出现多关键词的组合搜索时,效率更低。随着移动固网业务的发展,固网的覆盖范围迅速更加,这种检索模式面对日益庞大的地址资源数据将更加力不从心,因此解决这个问题迫在眉睫。\n发明内容\n[0008] 本发明提供一种地址匹配的方法和装置,能够提高检索速度。\n[0009] 一种地址匹配的方法,包括:\n[0010] 获取用户输入的查询词;\n[0011] 将所述查询词拆分成至少一个索引关键词;\n[0012] 根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;\n[0013] 显示所述地址信息中的至少一个。\n[0014] 所述将所述查询词拆分成至少一个索引关键词的步骤包括:\n[0015] 根据地理区划信息,将所述查询词拆分成至少一个索引关键词。\n[0016] 所述根据地理区划信息,将所述查询词拆分成至少一个索引关键词的步骤包括:\n[0017] 获取第一级别地理区划关键词,在所述查询词中匹配;\n[0018] 如果匹配成功,提取所述查询词中匹配的所述查询词左边的字符串以及匹配的所述查询词,组成索引关键词;\n[0019] 对所述查询词中的剩余字符串使用第二级别地理区划关键词进行拆分。\n[0020] 所述将所述查询词拆分成至少一个索引关键词的步骤包括:\n[0021] 分词步骤,根据地理区划信息,将所述查询词拆分成至少一个当前待查询字符串;\n[0022] 判断步骤,判断所述当前待查询字符串是否包含在关键词数据库中;\n[0023] 第一输出步骤,当所述当前待查询字符串包含在所述关键词数据库时,将所述待查询字符串作为一个索引关键词输出;\n[0024] 第二输出步骤,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串是单字符串时,将所述待查询字符串作为一个索引关键词输出;\n[0025] 更新步骤,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串不是单字符串时,对所述当前待查询字符串进行分词,生成为新的当前待查询字符串,返回所述判断步骤。\n[0026] 所述对所述当前待查询字符串进行分词,生成为新的当前待查询字符串的步骤包括:\n[0027] 提取所述当前待查询字符串中位于右边或者左边的预定数量的字符;\n[0028] 将所述预定数量的字符和所述当前待查询字符串中的剩余字符串分别作为新的当前待查询字符串。\n[0029] 所述对所述当前待查询字符串进行分词,生成为新的当前待查询字符串的步骤包括:\n[0030] 将所述当前待查询字符串中位于右边的第一个字符作为一索引关键词输出;\n[0031] 将所述当前待查询字符串中的剩余字符串作为新的当前待查询字符串。\n[0032] 所述根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息的步骤包括:\n[0033] 预先根据关键词数据库中的各个索引关键词生成跳跃表;\n[0034] 将拆分生成的所述索引关键词与所述跳跃表中的索引关键词匹配;\n[0035] 当匹配成功时,获取匹配成功的所述索引关键词对应的地址信息。\n[0036] 所述显示所述地址信息中的至少一个的步骤包括:\n[0037] 根据所述地址信息的显示权重,顺序显示地址信息。\n[0038] 所述地址信息的显示权重由以下一个或多个的任意组合确定:所述地址信息对应的索引关键词的显示权重、所述地址信息的优先级、所述地址信息的地址详细度、所述地址信息的准确率、所述地址信息的被搜索频率、所述地址信息的地址资源归属或者所述地址信息对应的地理位置所在的接入模式。\n[0039] 所述索引关键词和地址信息之间的对应关系的建立步骤包括:\n[0040] 获取至少一个地址信息;\n[0041] 对所述至少一个地址信息进行分词,生成至少一个子地址信息;\n[0042] 将所述子地址信息作为索引关键词,生成索引关键词与所述地址信息之间的对应关系。\n[0043] 所述将所述子地址信息作为索引关键词,生成索引关键词与所述地址信息之间的对应关系的步骤包括:\n[0044] 获取所述子地址信息对应的别名字符串;\n[0045] 将所述别名字符串作为索引关键词,生成索引关键词与所述地址信息之间的对应关系。\n[0046] 所述别名字符串为所述子地址信息的同音字、所述子地址信息的近音字、所述别名字符串为所述子地址信息的中的各个字符的拼音的组合、所述子地址信息中的各个字符的拼音首字母的组合、或者所述子地址信息的外文翻译。\n[0047] 当所述子地址信息为兴趣点的地址时,所述别名字符串为所述兴趣点的名称;\n[0048] 当所述子地址信息为兴趣点的名称时,所述别名字符串为所述兴趣点的地址。\n[0049] 一种地址匹配的装置,包括:\n[0050] 第一获取单元,获取用户输入的查询词;\n[0051] 拆分单元,将所述查询词拆分成至少一个索引关键词;\n[0052] 第二获取单元,根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;\n[0053] 显示单元,显示显示所述地址信息中的至少一个。\n[0054] 所述拆分单元具体为:根据地理区划信息,将所述查询词拆分成至少一个索引关键词。\n[0055] 所述拆分单元包括:\n[0056] 分词子单元,根据地理区划信息,将所述查询词拆分成至少一个当前待查询字符串;\n[0057] 判断子单元,判断所述当前待查询字符串是否包含在关键词数据库中;\n[0058] 第一输出子单元,当所述当前待查询字符串包含在所述关键词数据库时,将所述待查询字符串作为一个索引关键词输出;\n[0059] 第二输出子单元,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串是单字符串时,将所述待查询字符串作为一个索引关键词输出;\n[0060] 更新子单元,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串不是单字符串时,对所述当前待查询字符串进行分词,生成为新的当前待查询字符串,返回所述判断步骤。\n[0061] 所述第二获取单元包括:\n[0062] 建立子单元,预先根据关键词数据库中的各个索引关键词生成跳跃表;\n[0063] 匹配单元,将拆分生成的所述索引关键词与所述跳跃表中的索引关键词匹配;\n[0064] 获取子单元,当匹配成功时,获取匹配成功的所述索引关键词对应的地址信息。\n[0065] 本发明的上述技术方案的有益效果如下:本发明将所述查询词拆分成至少一个索引关键词;根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;通过这种倒排方式,能够减少检索需要的时间,加快检索速度。\n附图说明\n[0066] 图1现有技术中地址字符串数据库表中的存储方式;\n[0067] 图2为本发明一种地址匹配的方法的流程示意图;\n[0068] 图3为本发明所述的一种地址匹配的装置的结构示意图;\n[0069] 图4为本发明中正向最大匹配分词算法的流程示意图;\n[0070] 图5为本发明中具体的跳跃表(层次2,间隔2)例子的示意图;\n[0071] 图6为现有技术中地址检索模式改造之前CPU的使用情况示意图;\n[0072] 图7本发明中地址检索模式改造之后的CPU使用情况示意图。\n[0073] 图8为本发明中具体的跳跃表例子的示意图。\n具体实施方式\n[0074] 为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。\n[0075] 如图2所述,为本发明一种地址匹配的方法,包括:\n[0076] 步骤11,获取用户输入的查询词;例如用户输入:“杭州市亲亲家园”。\n[0077] 步骤12,将所述查询词拆分成至少一个索引关键词;例如将用户输入的“杭州市亲亲家园”拆分成“杭州市”、“亲亲家园”。\n[0078] 步骤13,根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;假设,有以下三个地址信息;\n[0079]\n1 杭州市西湖区耀江文鼎苑14幢601室\n2 杭州市西湖区三墩镇亲亲家园14幢1单元\n3 杭州市下城区天城路蓝天城市花园1栋1单元601室\n[0080] 索引关键词与地址信息的对应关系如下:\n[0081]\n[0082] 则,索引关键词“杭州市”对应的地址信息为地址信息1,2,3;索引关键词“亲亲家园”对应的地址信息为地址信息2。\n[0083] 步骤14,显示所述地址信息中的至少一个。可选的,可以根据所述地址信息的显示权重,顺序显示地址信息。所述地址信息的显示权重由以下一个或多个的任意组合确定:所述地址信息对应的索引关键词的显示权重、所述地址信息的优先级、所述地址信息的地址详细度、所述地址信息的准确率、所述地址信息的被搜索频率、所述地址信息的地址资源归属或者所述地址信息对应的地理位置所在的接入模式。例如,用户输入:“杭州市亲亲家园”时,显示地址信息2“杭州市西湖区三墩镇亲亲家园14幢1单元”。\n[0084] 在一个实施例中,步骤12具体为:根据地理区划信息,将所述查询词拆分成至少一个索引关键词。例如,将“杭州市西湖区古墩路翠苑1幢1单元501室”分成索引关键词“杭州市”、“西湖区”、“古墩路”、“翠苑”、“1幢”“1单元”“501室”。\n[0085] 该步骤具体为:\n[0086] 步骤121A,获取第一级别地理区划关键词,在所述查询词中匹配;其中,各个级别地理区划关键词可以如下表所示:\n[0087]\n[0088] 例如,查询词为“杭州市西湖区古墩路翠苑1幢1单元501室”,第一级别地理区划关键词为“市”。\n[0089] 步骤122A,如果匹配成功,提取所述查询词中匹配的所述查询词左边的字符串以及匹配的所述查询词,组成索引关键词;例如,使用第一级别地理区划关键词位“市”在查询词“杭州市西湖区古墩路翠苑1幢1单元501室”中匹配成功,则提取所述查询词中匹配的所述查询词左边的字符串“杭州”以及匹配的所述查询词“市”,组成索引关键词“杭州市”。\n[0090] 步骤123A,对所述查询词中的剩余字符串使用第二级别地理区划关键词进行拆分。例如,剩余字符串为“西湖区古墩路翠苑1幢1单元501室”,继续使用第二、第三等级别地理区划关键词进行匹配,直到分成索引关键词“杭州市”、“西湖区”、“古墩路”、“翠苑”、“1幢”“1单元”“501室”。具体为:匹配第二级别地理区划关键词“区”,拆分得到“西湖区”;然后,匹配第三级别地理区划关键词“路”,拆分得到“古墩路”;然后,匹配第四级别地理区划关键词“苑”,拆分得到“翠苑”;然后,匹配第五级别地理区划关键词“幢”,拆分得到“1幢”;\n然后,匹配第六级别地理区划关键词“单元”,拆分得到“1单元”;然后,匹配第七级别地理区划关键词“室”,拆分得到“501室”。\n[0091] 在另一个实施例中,步骤12包括:\n[0092] 步骤121B,分词步骤,根据地理区划信息,将所述查询词拆分成至少一个当前待查询字符串;该步骤同上,此处不再详细说明。\n[0093] 步骤122B,判断步骤,判断所述当前待查询字符串是否包含在关键词数据库中;\n[0094] 步骤123B,第一输出步骤,当所述当前待查询字符串包含在所述关键词数据库时,将所述待查询字符串作为一个索引关键词输出;\n[0095] 步骤124B,第二输出步骤,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串是单字符串时,将所述待查询字符串作为一个索引关键词输出;\n[0096] 步骤125B,更新步骤,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串不是单字符串时,对所述当前待查询字符串进行分词,生成为新的当前待查询字符串,返回所述判断步骤。\n[0097] 其中,步骤125B中,所述对所述当前待查询字符串进行分词,生成为新的当前待查询字符串的步骤包括:\n[0098] 提取所述当前待查询字符串中位于右边或者左边的预定数量的字符;\n[0099] 将所述预定数量的字符和所述当前待查询字符串中的剩余字符串分别作为新的当前待查询字符串。\n[0100] 可选的,步骤125B中,所述对所述当前待查询字符串进行分词,生成为新的当前待查询字符串的步骤包括:\n[0101] 将所述当前待查询字符串中位于右边的第一个字符作为一索引关键词输出;\n[0102] 将所述当前待查询字符串中的剩余字符串作为新的当前待查询字符串。\n[0103] 以下描述上述方法的应用场景。例如,关键词数据库中包括关键词如下:杭州市、三墩镇、西湖区、亲亲家园、耀江文鼎苑、1单元、14幢、下城区、601室、天城路、蓝天城市花园、1栋、滨江区、长河街道、白马湖、白鹤苑、1#楼、1单元、103室、古墩路。将“杭州市西湖区古墩路翠苑1幢1单元501室”按照步骤121B分成当前待查询字符串“杭州市”、“西湖区”、“古墩路”、“翠苑”、“1幢”“1单元”“501室”。然后,取当前待查询字符串“杭州市”,直接就能匹配到关键词数据库中的关键词;因此,将“杭州市”作为索引关键词输出。同理,取“西湖区”、“古墩路”,也可以在关键词数据库中匹配到,因此,“西湖区”、“古墩路”作为索引关键词输出。再取当前待查询字符串“翠苑”,此时在关键词数据库中匹配不到,因此从右边去掉一个字符“苑”,继续以新的当前待查询字符串“翠”进行匹配,发现还是匹配不到。而由于“翠”已经是单字符,因此在关键词集合中增加“翠”这个字符,然后继续取剩余的部分,只剩一个“苑”字,由于“苑”也无法匹配到且是单字符,因此“苑”也作为索引关键词输出。接下来取“1幢”在关键词数据库中匹配不到,会生成两个索引关键词“1”和“幢”;再取“1单元”,在关键词数据库中能够匹配上;再取“501室”,无法匹配上,会生成两个索引关键词“501”和“室”(注:数字作为整体进行匹配)。最后,杭州市西湖区古墩路翠苑1幢1单元501室的生成索引关键词为:杭州市、西湖区、古墩路、翠、苑、1、幢、1单元、501、室。\n[0104] 在另一个实施例中,步骤12包括:\n[0105] 步骤121C,判断所述查询词是否包含在关键词数据库中;\n[0106] 步骤122C,如果为是,则将所述查询词作为一索引关键词输出;\n[0107] 步骤123C,否则,根据预设的地理关键词对所述查询词进行第一次拆分,将所述查询词拆分成多个第一查询子词,将所述第一查询子词作为当前待分词;\n[0108] 步骤124C,判断所述当前待分词是否为单字符;\n[0109] 步骤125C,如果为是,则将所述当前待分词作为一索引关键词输出;\n[0110] 步骤126C,否则,将所述当前待分词在所述关键词数据库中进行匹配;\n[0111] 步骤127C,如果匹配成功,则将所述当前待分词作为一索引关键词输出;\n[0112] 步骤128C,如果匹配不成功,则对所述当前待分词进行第二次拆分,生成新的当前待分词,并跳到所述步骤124C。\n[0113] 步骤13包括:\n[0114] 步骤131,预先根据关键词数据库中的各个索引关键词生成跳跃表;\n[0115] 步骤132,将拆分生成的所述索引关键词与所述跳跃表中的索引关键词匹配;\n[0116] 步骤133,当匹配成功时,获取匹配成功的所述索引关键词对应的地址信息。\n[0117] 跳跃表的查询说明:在程序的组织中,所有关键字在系统中是排序之后进行存储的,如以浙江11个地市名称为关键词的检索为例:杭州、宁波、温州、绍兴、嘉兴、湖州、金华、丽水、衢州、台州、舟山。上述11个地市名称按拼音排序之后如下:杭州、湖州、嘉兴、金华、丽水、宁波、衢州、绍兴、台州、温州、舟山。如果以间隔为2的跳跃表进行组织的话,结果如图8所示。\n[0118] 此时假设查询关键字“宁波”,会先查第三层,发现是“绍兴”,“宁波”的拼音排序小于“绍兴”,因此查第二层绍兴之前的“金华”,发现绍兴大于金华,再查第一层的金华之后的字符为“宁波”,和关键字相等。这样只需要查3次即可得到结果,如果从前往后匹配的话,需要匹配6次才行。\n[0119] 其中,步骤11之前,所述方法还包括,步骤10,建立所述索引关键词与地址信息的对应关系。\n[0120] 步骤10包括:\n[0121] 步骤101,获取至少一个地址信息。\n[0122] 步骤102,对所述至少一个地址信息进行分词,生成至少一个子地址信息;对所述至少一个地址信息进行分词类似于上述的分词步骤,此处不在赘述。假设,有以下地址信息:杭州市西湖区耀江文鼎苑14幢601室,生成至少一个子地址信息“杭州市”、“西湖区”、“耀江文鼎苑”、“14幢”、“601室”。\n[0123] 步骤103,将所述子地址信息作为索引关键词,生成索引关键词与所述地址信息之间的对应关系。另外,地址信息可以以各个索引关键词的方式进行结构化存储。例如,“杭州市”、“西湖区”、“耀江文鼎苑”、“14幢”、“601室”与所述地址信息“杭州市西湖区耀江文鼎苑\n14幢601室”建立对应关系。\n[0124] 步骤103包括:\n[0125] 步骤1031,获取所述子地址信息对应的别名字符串;例如,\n[0126] 步骤1032,将所述别名字符串作为索引关键词,生成索引关键词与所述地址信息之间的对应关系。后续可以通过别名字符串与所述地址信息之间的对应关系,来查找对应的地址信息。\n[0127] 所述别名字符串为所述子地址信息的同音字、所述子地址信息的近音字、所述别名字符串为所述子地址信息的中的各个字符的拼音的组合、或者所述子地址信息中的各个字符的拼音首字母的组合、所述子地址信息的外文翻译。例如,“杭州”的别名字符串为“HZ”或“Hangzhou”。\n[0128] 当所述子地址信息为兴趣点的地址时,所述别名字符串为所述兴趣点的名称;当所述子地址信息为兴趣点的名称时,所述别名字符串为所述兴趣点的地址。例如,杭州市环城北路288号和环城北路浙江移动大厦实际为同一地址。\n[0129] 如图3所述,为本发明所述的一种地址匹配的装置,包括:\n[0130] 第一获取单元21,获取用户输入的查询词;\n[0131] 拆分单元22,将所述查询词拆分成至少一个索引关键词;\n[0132] 第二获取单元23,根据预先建立的索引关键词与地址信息的对应关系,获取各个所述索引关键词各自对应的地址信息;\n[0133] 显示单元24,显示显示所述地址信息中的至少一个。\n[0134] 可选的,所述拆分单元具体为:根据地理区划信息,将所述查询词拆分成至少一个索引关键词。\n[0135] 可选的,所述拆分单元22包括:\n[0136] 分词子单元,根据地理区划信息,将所述查询词拆分成至少一个当前待查询字符串;\n[0137] 判断子单元,判断所述当前待查询字符串是否包含在关键词数据库中;\n[0138] 第一输出子单元,当所述当前待查询字符串包含在所述关键词数据库时,将所述待查询字符串作为一个索引关键词输出;\n[0139] 第二输出子单元,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串是单字符串时,将所述待查询字符串作为一个索引关键词输出;\n[0140] 更新子单元,当所述当前待查询字符串没有包含在所述关键词数据库时,且所述当前待查询字符串不是单字符串时,对所述当前待查询字符串进行分词,生成为新的当前待查询字符串,返回所述判断步骤。\n[0141] 所述第二获取单元23包括:\n[0142] 建立子单元,预先根据关键词数据库中的各个索引关键词生成跳跃表;\n[0143] 匹配单元,将拆分生成的所述索引关键词与所述跳跃表中的索引关键词匹配;\n[0144] 获取子单元,当匹配成功时,获取匹配成功的所述索引关键词对应的地址信息。\n[0145] 以下描述本发明的应用场景。本发明提供一种基于信息检索技术的固网地址匹配系统。\n[0146] 首先,描述信息检索模型定义。搜索的定义是指用户通过系统前台页面提交一个或者多个查询短语(前文所述的查询词),系统根据用户输入在一个可接受的时间范围内返回给用户一个与输入内容相匹配的结果列表。一个信息检索系统涉及到几个方面的内容:\n[0147] 用户输入的查询要求,本文中定义为Q。由于Q可能包含一个或者多个查询短语,因此可以定义Q={q1,q2...qn|n∈Z+},n为正整数,qi为第i个查询短语;\n[0148] 查询文档集合,本文中定义为D。由于文档集合通常包含一个或者多个文档(具体到本文,可以理解为目标集合包含m条地址信息)。因此可以定义D={d1,d2...dm|m∈Z+},m为正整数,dj为第j个文档子集;\n[0149] 查询结果集合,本文中定义为R(q,d)。结果集通过包含0个或者多个与查询输入相匹配的文档(具体到本文,可以理解为查询得到0条或者多条地址),对于查询到多个匹配结果时需对查询结果进行排序,R(q,d)即为排序函数\n[0150] 从上文中可以看出,信息检索的过程其实就是根据用户输入的查询集Q,对目标文档集D进行比对,并根据比对结果对反馈集合进行排序的过程。通常,目标文档集D在文本的组织结构上与用户输入集Q之间的差异巨大。以用户查询“亲亲家园”地址为例,传统的查询方法相当于判断每一条地址是否含亲亲家园关键词,这种方式是从结果集映射到关键词;\n而用户实际是想知道包含亲亲家园关键词的地址有哪些,这种方式要求从关键词映射到结果集。因此在实际使用时,先对目标文档集合D进行分析,生成关于查询文档集D的索引数据对象,在本文中定义为F。因此信息检索模型可以定义为如下的四元组[6]:\n[0151] <D,Q,F,R(q,d)> 公式1\n[0152] 其中D为目标文档集,Q为查询集,F为目标文档集对应的索引数据对象,R(d,q)为结果排序函数。\n[0153] 一个信息检索系统通常包含如下几个模块:文档数据采集;数据预处理;查询排序服务。下面结合固网地址匹配应用对上述模块分别进行介绍。\n[0154] 以下描述数据采集与预处理。\n[0155] 数据采集的过程对于互联网搜索引擎的构建是一个重要的模块,通常采用爬虫的方式到各个URL链接上采集网页的信息。爬虫获取网页时涉及到采集的频率、采集网页的剔重、URL链接如何防止环路[5]等等一系列问题。具体到本文的应用,主要为网络和工程建设人员在完成设备覆盖之后,采集设备覆盖的安装地址,并导入到系统中。\n[0156] 数据预处理的过程即为将原始的文档集索引化(即对上文中的dj进行分词),得到一个适合于进行文本搜索的索引数据结构。本文采用“倒排索引”(inverted index)[3]的数据结构。所谓倒排索引是指一种索引存储的数据结构,该数据结构保存关键词与该关键词相关文档之间的对应关系[1]。以表1中的几条固网安装地址为例去建倒排索引,可以得到表2中的结果。\n[0157]\n1 杭州市西湖区耀江文鼎苑14幢601室\n2 杭州市西湖区三墩镇亲亲家园14幢1单元\n3 杭州市下城区天城路蓝天城市花园1栋1单元601室\n[0158] 表1:有线宽带安装地址举例\n[0159]\n[0160]\n[0161] 表2:有线宽带安装地址倒排索引结果\n[0162] 可以看到,倒排索引将原始的目标文档集拆分成一个个用户可能输入的查询索引,这样,当用户进行前台搜索时,例如用户输入:“杭州市亲亲家园”,则可以知道满足杭州市的地址为1,2,3;满足亲亲家园的地址为2,;此时前台返回地址序号为2的作为搜索结果即可。\n[0163] 从上述倒排索引中可以看到,要进行倒排索引处理,首先需要将目标文档集拆分为单个的索引关键词(如:杭州市西湖区耀江文鼎苑14幢601室,需要拆分为杭州市,西湖区,耀江文鼎苑,14幢,601室)。\n[0164] 关键词拆分的越粗略,索引匹配的次数会减少匹配效率较高,但是相应的匹配的准确性会降低。具体到本文所提的固网地址查询应用场景,可以通过对有线宽带地址命名进行规范,整理出关键词库和字典库,从而对标准地址进行自动拆分,目前系统中整理出的关键词集合(此处关键词相当于上文的各个级别地理区划关键词)主要有以下几种:\n[0165]\n[0166]\n[0167] 表3:地址分词关键词集合\n[0168] 对于通过关键词集无法进行分词的地址,系统还提供相应的字典库对于此类命名不规范的地址进行特殊的地址拆分。字典库及关键词集可以不断补充。根据系统的字典库和关键词集,就能对系统中的宽带覆盖地址进行结构化分词。结构化分词采用的算法为“正向最大匹配分词”算法,整个算法的流程图如图4所示:\n[0169] 正向最大匹配算法步骤如下:\n[0170] 步骤1,判断地址信息是否为空,如果为空,则结束,否则开始匹配;\n[0171] 步骤2,置待匹配的字符串str=reg_str,这一步根据实际情况,如字典库中最长的字符串长度为m,取reg_str的前m个字符即可;\n[0172] 步骤3,判断str是否是单字符;如果是单字符,则不能再继续拆分,输出str;同时将原始字符串reg_str中减去str,剩余的部分继续匹配;\n[0173] 步骤4,判断str是否已经在字典库中存在,如果已经存在,则输出str;同时将原始字符串reg_str中减去str,剩余部分继续匹配;\n[0174] 否则,若步骤3,4都不满足,则将str最右字符去掉,剩余部分继续进行匹配[0175] 上述算法的极端情况为字典库为空,此时对于地址数据的拆分得到的就是单个字符;若字符串的长度为m,则极端情况下系统匹配的次数为:m(m-1)/2,也就是说上述算法是满足有限性的。\n[0176] 通过对地址数据进行索引关键词的拆分和索引倒排文件的创建,对于数据的预处理过程已经完成,后续根据预处理得到的索引数据进行查询服务。\n[0177] 假设目前系统中已有关键词集合:\n[0178] {杭州市、三墩镇、西湖区、亲亲家园、耀江文鼎苑、1单元、14幢、下城区、601室、天城路、蓝天城市花园、1栋、滨江区、长河街道、白马湖、白鹤苑、1#楼、1单元、103室、古墩路}。\n[0179] 此时有一条新地址“杭州市西湖区古墩路翠苑1幢1单元501室”,此时会根据表中的各级别地理区划关键词进行分词。\n[0180]\n[0181] 根据表中的各级别地理区划关键词进行分词,即先进行地址分级,具体包括:\n[0182] 首先,匹配第一级别地理区划关键词“市”,拆分得到“杭州市”;\n[0183] 然后,匹配第二级别地理区划关键词“区”,拆分得到“西湖区”;\n[0184] 然后,匹配第三级别地理区划关键词“路”,拆分得到“古墩路”\n[0185] 然后,匹配第四级别地理区划关键词“苑”,拆分得到“翠苑”;\n[0186] 然后,匹配第五级别地理区划关键词“幢”,拆分得到“1幢”;\n[0187] 然后,匹配第六级别地理区划关键词“单元”,拆分得到“1单元”;\n[0188] 然后,匹配第七级别地理区划关键词“室”,拆分得到“501室”。\n[0189] 然后,继续使用正向最大匹配算法进行匹配:\n[0190] 首先取关键词“杭州市”,直接就能匹配到关键词;\n[0191] 同理取“西湖区”、“古墩路”,也可以匹配到;\n[0192] 再取关键词“翠苑”,此时匹配不到,因此从右边去掉一个字符“苑”,继续以“翠”进行匹配,发现还是匹配不到。而由于“翠”已经是单字符,因此在关键词集合中增加“翠”这个字符,然后继续取剩余的部分,只剩一个“苑”字,由于“苑”也无法匹配到且是单字符,因此“苑”也增加到关键词集合中\n[0193] 然后,取“1幢”匹配不到,会生成两个关键词“1”和“幢”\n[0194] 再取“1单元”,能够匹配上;\n[0195] 再取“501室”,无法匹配上,会生成两个关键词“501”和“室”(注:数字是作为整体进行匹配的)\n[0196] 因此,“杭州市西湖区古墩路翠苑1幢1单元501室”的分词结果为:\n[0197] 杭州市、西湖区、古墩路、翠、苑、1、幢、1单元、501、室\n[0198] 此时关键词集合为:\n[0199] {杭州市、三墩镇、西湖区、亲亲家园、耀江文鼎苑、1单元、14幢、下城区、601室、天城路、蓝天城市花园、1栋、滨江区、长河街道、白马湖、白鹤苑、1#楼、1单元、103室、古墩路、翠、苑、1、幢、501、室}\n[0200] 查询服务设计主要涉及到以下几个方面的内容:查询内容拆分、索引关键词匹配、查询结果排序。\n[0201] 根据用户输入的查询词,系统需要将查询词拆分成索引关键词(即对上文中的qi进行分词)。关键词的拆分需要对查询内容进行理解,这部分涉及到自然语言分析,对于固网地址检索的应用,应用场景非常明确,根据上文中提到的已经整理出的关键词及字典库进行拆分即可。如:用户输入“杭州市亲亲家园”进行查询,通过查询词的拆分会得到{杭州市,亲亲家园}两个索引关键词。查询词的拆分方式同上文中提到的最大正向匹配算法,不再赘述。\n[0202] 通过对固网覆盖地址信息的预处理,得到关于关键词与地址信息之间的“倒排索引”,同时通过查询词分析得到关键词的拆分。接下来就需要将查询的关键词与索引之间进行匹配。为了提高提高查询匹配的效率,系统采用跳跃表(skiplist)的方式进行索引存储。\n跳跃表作为AVL树的一种替代数据结构[2],有以下特点:\n[0203] 跳跃表中存储的所有元素都事先进行排序,并根据排序的结果进行升序或者降序排列;\n[0204] 跳跃表存在跳跃间隔,即每次跳跃间隔的元素个数是预先进行设置的;\n[0205] 跳跃表分层次进行存储,每一个层次都有下一层次跳跃组成;\n[0206] 具体的跳跃表例子请见图5。\n[0207] 基于跳跃表模式的关键词查询、插入、删除的时间复杂度都为O(logpn),其中p为跳跃表的间隔,n为关键词的总数。通过这种方式相比于原有的线性查询的模式其复杂度大大降低。\n[0208] 查询结果排序是一个信息检索系统的核心,排序算法需要将用户最关心的内容展现在查询结果的顶端。对于本文所要解决的固网地址匹配问题主要通过以下几个方面对结果进行排序:\n[0209] 例如,移动在固网业务的发展过程中,存在着与铁通、广电合作的情况。在地址查询展现时,系统可以根据地址资源归属或者不同的接入模式(比如优先发展光纤入户)设置不同权重值,因此当出现多条满足查询需求的地址时,可以实现高权重地址优先展现;\n[0210] 根据关键词在地址中出现的频率对于每次匹配进行评分,关键词评分来源于以下两个维度:\n[0211] 当一个关键词在某个文档中出现的次数越多,说明该文档的匹配度越高,定义为TF(Term Frequenc)\n[0212] 当一个关键词在越多的文档中出现,说明该关键词的匹配越不重要,定义为DF(Document Frequency)\n[0213] 因此关键词t,在文档d中的匹配权重定义如下:\n[0214] wt,d=tft,d×log(n/dft) 公式2\n[0215] 其中wt,d表示关键词t在文档d中的匹配权重,tft,d为关键词t在文档d中的出现次数,n为总共的文档个数,dft为含有关键词t的文档个数。从上述公式可以看到tft,d越大,dft越小,权重越大。具体到本文中的应用,对于如“市、县”这种关键词,匹配度会非常高,也就是公式中的dft非常大,对于此类匹配需要降低权重值。对于小区名称,道路名称之类dft会非常小,这一类的匹配权重值需提高。对于地址匹配的应用很少存在tft,d>1的情况。假设输入查询关键字为“丰谭路”、“政苑小区”,由于政苑小区实际位于“古墩路”,根据上述的输入实际是没有地址完全满足既有“丰谭路”又有“政苑小区”的,但是单单满足“丰谭路”的地址有2w条,满足“政苑小区”的地址有200条,此时系统中满足“政苑小区”的地址权重会比较大在展现查询结果时优化展现,“丰谭路”地址的权重比较小,展现查询结果时优先级比较低。\n[0216] 根据用户选择及评分情况也可以对搜索结果进行排序,由于网络人员在地址导入的过程中地址详细程度良莠不齐,甚至存在部分地址导错的可能。营业人员及客服人员可以在前台对导入的地址进行相应的评分,对于导入有问题的地址在查询时相应后移,同时在查询时较多人关注的地址一般也为业务发展重点区域,此类地址在展现顺序上也靠前。\n[0217] 假设输入查询关键词为“丰谭路”、“政苑小区”,由于“政苑小区”实际位于“古墩路”,根据上述的输入,没有地址完全满足既有“丰谭路”又有“政苑小区”,但是单单满足“丰谭路”的地址有2w条,满足“政苑小区”的地址有200条,此时系统中满足“政苑小区”的地址权重会比较大,在展现查询结果时优化展现,“丰谭路”地址的权重比较小,展现查询结果时优先级比较低。\n[0218] 上述地址匹配模式对于地址名称中存在同音字或者近音字时难以很好的满足前台应用。因为此时营业人员难以根据用户所报的地址名称,准确输入相应的地址汉字。针对该问题,本系统还提取所有的索引关键词的拼音首字母(如杭州,HZ、hangzhou),分别生成地址简拼索引。当前台人员无法确定用户所报地址的确切汉字时,可以根据地址简拼的方式进行检索,提高匹配的效率。由于在实际使用过程中,同样的地址存在不同的称呼(如杭州市环城北路288号和环城北路浙江移动大厦实际为同一地址),本系统还支持对地址设置别名,系统保存别名和真实名称的对应关系,对别名和真实名称的进行查询将得到同样的查询结果。\n[0219] 以下描述性能测试\n[0220] 本文随机选取1000条地址,根据新旧两种模式分别进行查询,得到的查询时长结果如下:\n[0221]\n[0222]\n[0223] 表4:新旧模式查询时长分析\n[0224] 从上表可以看出采用新的检索模式,系统检索的时长大约降低为越来的1/9,整个检索的效率大大提高。\n[0225] 对于新旧模式上线前后的数据库压力情况进行分析,如图6所示,在业务高峰8:\n30-17:00,上线之前数据库CPU的平均使用率为58%。如图7所示,新地址检索模式上线之后系统的CPU使用率为43%,地址检索占用的系统资源明显下降。\n[0226] 本文提出了一种基于信息检索技术的地址模糊匹配方案。该方案首先通过地址分词的方式对于字符串形式的地址进行结构化的存储(以地址:“杭州市滨江区长河街道白马湖白鹤苑1#楼1单元103室”为例,之前这条地址在系统中作为一个字符串存储,通过分词之后会生成结构化的多级地址:杭州市、滨江区、长河街道、白马湖、白鹤苑、1#楼、1单元、103室,这些结构化的多级地址在系统中分级存储),然后基于该结构化存储的数据,进行后向索引文件的创建。地址信息查询匹配时支持根据跳跃表(SkipList)的方式进行快速查询,同时还支持对于查询结果进行个性化排序,从而更好满足前台的应用。通过该技术方案的实施,前台查询的效率、系统主机的消耗及前台人员查询的感知均明显改善。\n[0227] 本发明具有以下有益效果:\n[0228] 通过本方案的实施,能够有效提高地址查询的效率,地址检索的时长降低到原有时长的1/9左右;\n[0229] 本方案还能有效降低地址检索的主机资源消耗,CPU使用率从上线之前的58%降低到43%;\n[0230] 通过对地址进行分层分级,提高对基于不同层级的地址统计与分析的效率。\n[0231] 本发明实施例中,模块(或者单元)可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同物理上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。\n[0232] 实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。\n[0233] 在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。\n[0234] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
法律信息
- 2018-01-30
- 2015-03-25
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201310348963.6
申请日: 2013.08.12
- 2015-02-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-02-23
|
2010-11-10
| | |
2
| |
2009-02-11
|
2008-09-05
| | |
3
| |
2012-10-24
|
2012-06-11
| | |
4
| |
2011-12-21
|
2011-07-22
| | |
5
| |
2009-04-15
|
2007-01-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |