药品搜索提示词的输出方法及系统
技术领域
本申请涉及互联网技术领域,特别涉及药品搜索的技术领域。
背景技术
目前,一种药品通常会有多个厂家生产,与此同时,许多药品生产企业为了树立自己的品牌,往往给自己的药品注册独特的商品名以示区别,因此,同一药品可以有多个商品名。例如,对乙酰氨基酚复方制剂的商品名就有:百服咛、泰诺林、必理通等。因此,一种药品常有多个厂家生产、多个商品名、多个规格,如果商品库中同类药品较多,根据目前的药品搜索方式,用户较难快速精准找药,往往需要反复更换搜索词,这会降低用户搜索找药的效率和方便性。
发明内容
本申请的目的在于提供一种药品搜索提示词的输出方法及系统,在有多个药品满足搜索词的情况下,更有效地提供符合用户期望的药品提示词,提高用户的药品查询效率和方便性。
本申请公开了一种药品搜索提示词的输出方法,包含:
预先建立药品索引表,所述药品索引表至少包含每个药品的药品名、商品名、厂商和业务权重,其中,所述业务权重根据每个药品的业务属性确定;
根据用户输入的搜索内容对所述药品索引表进行查询,获得药品查询结果集;
对所述药品查询结果集,先根据所述搜索内容与所述药品名、商品名和厂商的匹配关系,按照级别对药品查询结果集进行排序,以获得包含所述三个级别的首次排序结果,其中,药品名的级别>商品名的级别>厂商的级别;
对所述首次排序结果中的每个所述级别,分别根据所述业务权重进行排序,获得包含所述三个级别的二次排序结果;
根据所述二次排序结果输出药品搜索提示词。
在一个优选例中,所述业务属性包含:所述药品的销量、所述药品的订单数、所述药品的点击率、所述药品的已购用户数量,并且,所述药品的业务权重为:
W = a*f5 + b*f6 + c*f7 + d*f8
其中,W为所述业务权重,f5为所述药品的销量,f6位所述药品的订单数,f7为所述药品的点击率,f8为所述药品的已购用户数量;a、b、c和d是业务权重系数。
在一个优选例中,所述根据用户输入的搜索内容对所述药品索引表进行查询,获得药品查询结果集,进一步包含以下步骤:
根据由用户输入的搜索内容生成一个或多个相应的查询条件;
根据所述查询条件,对所述药品索引表进行查询,并获得药品查询结果集。
在一个优选例中,所述药品索引表还包含:原词分词结果集合、拼音全拼Ngram分词结果和拼音简拼Ngram分词结果。
在一个优选例中,所述根据用户输入的搜索内容对所述药品索引表进行查询,获得药品查询结果集的步骤包含以下子步骤 :
根据由用户输入的搜索内容生成查询条件,其中,所述查询条件包含:根据所述搜索内容生成的相应的初始词、拼音全拼和拼音简拼;以及,
根据所述初始词、拼音全拼和拼音简拼,查询所述药品索引表中的原词分词结果集合、拼音全拼Ngram分词结果和拼音简拼Ngram分词结果,获得药品查询结果集。
在一个优选例中,所述根据所述二次排序结果输出药品搜索提示词,进一步包括:
根据所述搜索内容和所述二次排序结果,为在所述二次排序结果中排序在先的药品生成置顶的提示词和组合的提示词,并且,通过合并所述置顶的提示词和所述组合的提示词,生成并输出药品搜索提示词,其中所述组合的提示词是包含多项药品属性的提示词。
在一个优选例中,所述根据所述搜索内容和所述二次排序结果,为在所述二次排序结果中排序在先的药品生成置顶的提示词和组合的提示词,进一步包括:
从所述二次排序结果中挑选N个排序最先的药品,N为预先设定的正整数;
在所述N个排序最先的药品中,根据与所述搜索内容匹配的药品属性生成置顶的提示词;
在所述N个排序最先的药品中,将多个药品属性组合,生成组合的提示词。
本申请还公开了一种药品搜索提示词的输出系统包含:
药品索引表模块,用于预先建立药品索引表,所述药品索引表至少包含每个药品的药品名、商品名、厂商和业务权重,其中,所述业务权重根据每个药品的业务属性确定;
药品查询模块,用于根据用户输入的搜索内容对所述药品索引表进行查询,获得药品查询结果集;
药品查询结果排序模块,用于对所述药品查询结果集,先根据所述搜索内容与所述药品名、商品名和厂商的匹配关系,按照级别对药品查询结果集进行排序,以获得包含所述三个级别的首次排序结果,其中,药品名的级别>商品名的级别>厂商的级别,再对所述首次排序结果中的每个所述级别,分别根据所述业务权重进行排序,获得包含所述三个级别的二次排序结果;
药品搜索提示词生成模块,用于根据所述二次排序结果输出药品搜索提示词。
在一个优选例中,所述药品搜索提示词生成模块进一步用于,根据所述搜索内容和所述二次排序结果,为在所述二次排序结果中排序在先的药品生成置顶的提示词和组合的提示词,并且,通过合并所述置顶的提示词和所述组合的提示词,生成并输出药品搜索提示词,其中所述组合的提示词是包含多项药品属性的提示词。
在一个优选例中,所述业务属性包含:所述药品的销量、所述药品的订单数、所述药品的点击率、所述药品的已购用户数量,并且,所述药品的业务权重为:
W = a*f5 + b*f6 + c*f7 + d*f8
其中,W为所述业务权重,f5为所述药品的销量,f6位所述药品的订单数,f7为所述药品的点击率,f8为所述药品的已购用户数量;a,b,c以及d是业务权重系数。
本申请还公开了一种药品搜索提示词的输出系统包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行所述计算机可执行指令时实现如前文描述的方法中的步骤。
本申请还公开了一种计算机可读存储介质所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
本申请实施方式中,先根据搜索内容与药品名、商品名和厂商的匹配关系,按照级别对药品查询结果集进行首次排序,以获得包含三个级别的首次排序结果,其中,药品名的级别>商品名的级别>厂商的级别,然后在首次排序结果的三个级别中分别根据业务权重进行二次排序,如此能够将符合用户期望的药品提示词设置在提示列表的顶端(用户通常只会用显示在第一页的提示词),提高了用户的药品查询效率和方便性。在用户未被预先告知的情况下,经过严格的AB测试,提示词点击率(符合用户预期才会被点击)大约可以提升10%左右,效果显著。
本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是根据本申请第一实施方式的药品搜索提示词的输出方法的流程示意图;
图2是根据本申请第一实施方式的药品搜索提示词的输出方法的具体流程示意图;
图3是根据本申请第一实施方式的药品搜索提示词的输出方法的另一个具体流程示意图;
图4是根据本申请第二实施方式的药品搜索提示词的输出系统的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
下面先说明本申请中的部分概念:
初始词:是把搜索内容去掉一些符号后剩下的词,比如被去掉的符号可以是*&()’等。例如,用户输入的搜索内容是“缬沙坦,”,那初始词就是“缬沙坦”。
组合提示词:包含多项药品属性的提示词。例如:药品名+商品名、药品名+商品名+厂商、药品名+商品名+厂商+剂型,等等。
置顶的提示词:根据排序结果排在最前部分的提示词,例如排序在前N位的提示词。置顶的提示词一般只包含一项药品的属性,例如药品名、厂商等。一般来说,置顶的提示词的显示位置优先于组合提示词。
药品属性:包括药品的药品名、商品名、厂商、剂型等。
药品的商品名(或称为品牌名):是指经国家药品监督管理部门批准的特定企业使用的该药品专用的商品名称,如对乙酰氨基酚是解热镇痛药,它的药品名(通用名)是乙酰氨基酚,不同药厂生产的含有对乙酰氨基酚的复方制剂,其商品名有百服咛、泰诺林、必理通等。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
本申请的第一实施方式涉及一种药品搜索提示词的输出方法,其流程如图1-3所示,该方法包括以下步骤:
步骤110:预先建立药品索引表,所述药品索引表至少包含每个药品的药品名、商品名、厂商和业务权重,其中,所述业务权重根据每个药品的业务属性确定。
本步骤根据每一个唯一药品M的多个信息,建立药品索引表。
优选的,所述药品索引表中可以包含以下字段:药品名、商品名、厂商、规格、业务权重 、原词分词结果集合、拼音全拼Ngram分词结果、拼音简拼Ngram分词结果,等等。
优选的,本步骤可以通过以下方式具体实现:
子步骤1101:根据每一个唯一药品M的多个信息,生成原始中文集合。
优选的,所述每个唯一药品M的多个信息可来自于,例如:商品库中的药品标品表。
优选的,所述每个唯一药品M的信息可以是:药品名、商品名、厂商、规格、销量、订单数、点击率、已购用户数量等字段。
优选的,所述原始中文集合可通过例如合并药品名、商品名、厂商等方式生成,还可以进一步增加例如:药品别名、批准文号(国药准字)、注册证号等有药品信息含义的字段。
子步骤1102:根据所述原始中文集合生成原词分词结果集合、拼音全拼Ngram分词结果、以及拼音简拼Ngram分词结果。Ngram分词是本领域的现有技术,本公开中不详细说明了。
优选的,本步骤可通过以下方式实现:
首先,对原始中文集合分别按Ngram分词、词典分词、单字分词方法进行分词处理,得到Ngram分词结果集合、词典分词结果集合,单字分词结果集合。
进一步的,将词典分词结果集合中的每一个词条做Ngram分词,得到Ngram分词结果集合。
进一步的,将Ngram分词结果集合、词典分词结果集合,单字分词结果集合、Ngram分词结果集合去重、合并,得到合并的原词分词结果集合。
子步骤1103:通过对所述原词分词结果集合中的非单字结果集的拼音转换以及分词处理,生成拼音全拼Ngram分词结果、拼音简拼Ngram分词结果。
优选的,可通过以下方式实现:
首先,获取所述原词分词结果集合中的非单字结果集。
进一步的,将非单字结果集进行拼音全拼转换和拼音简拼转换,分别生成拼音全拼集合、以及拼音简拼集合。
进一步的,分别对拼音全拼集合、以及拼音简拼集合进行Ngram分词处理,得到拼音全拼Ngram分词结果、以及拼音简拼Ngram分词结果。
通常的分词只用一种算法,但本申请的一个实施例采用多种方法进行分词,在之后的匹配时可以的多种分词结果的基础上进行多种匹配,例如文字的匹配,全拼的匹配,简拼的匹配,无论用户输入何种类型的搜索内容,都可以得到匹配结果。
子步骤1104:根据每个唯一药品M的业务属性,确定该唯一药品M相应的业务权重。
具体的,所述唯一药品M的相应的业务权重,是指该唯一药品M的药品提示词的默认的排序权重。
进一步的说,在提示词搜索过程中,当有多个药品M满足条件而组成药品结果集时,需要对药品结果集做排序,其中,排序由文本相关性和业务权重共同决定,以文本相关性为主,业务权重为辅,当文本相关性一致时,按业务权重逐级递减。
由于文本相关性是根据用户输入的搜索词实时确定的,因此,只有业务权是可以事先计算。
优选的,可通过以下方式确定业务权重:
首先,获取药品的业务属性,包括但不限于销量、订单数、点击率、已购用户数量等;
其次,对药品的业务属性(例如销量、订单数、点击率、已购用户数量等)进行归一化处理,并按照多元线性模型计算业务权重,例如:
业务权重 = a*f5 + b*f6 + c*f7 + d*f8
其中,f5为药品的销量,f6为药品的订单数,f7为药品的点击率,f8为药品的已购用户数量,a、b、c、d分别为业务权重系数。
换句话说,也可以将a、b、c、d认为时候各个业务字段的业务权重因子,赋予浮点类型的数字,即浮点型数据类型。
优选的,为保证满足输入条件的药品M集合中,给出的提示词是大部分用户所期望的药品,可设定业务权重关系为:已购用户数量业务权重(d) ≈ 点击率业务权重(c) > 订单数业务权重(b) > 销量业务权重(a),赋予a、b、c、d相应的浮点类型的数字,该数值组合强调已购用户数量和点击率的业务权重,使得当文本相关性一致时,已购用户数量较多和点击率较高的药品M生成的提示词可以排序靠前,由此,使得提示词是大部分用户的期望效果,例如:
d=1.35 ,c =1.35,b = 1.0,a=0.8
需指出,在本说明书的其它实施例中,上述各个业务权重系数可根据具体情况灵活设置,不限于上述具体数值。
子步骤1105:根据药品名、商品名、厂商、规格、业务权重 、原词分词结果集合、拼音全拼Ngram分词结果、拼音简拼Ngram分词结果,生成药品索引表。
优选的,可对原词分词结果集合、拼音全拼Ngram分词结果、拼音简拼Ngram分词结果的字段建立基于分词结果的倒排索引。
具体的,用户输入的搜索词将在这些分词好的倒排索引字段里做查询,最终将匹配到N个药品,即药品M的集合,查询逻辑请参见接下来的步骤。
步骤120-130:根据用户输入的搜索内容对所述药品索引表进行查询,获得药品查询结果集。具体如下:
步骤120:根据由用户输入的搜索内容生成一个或多个相应的查询条件。
具体的,用户输入的搜索内容可以是,例如:用户实时输入到搜索框中的内容,可以是,拼音简拼、拼音全拼、中拼音混合,等等,例如:“benhuangs”、“wss”、“苯磺suan”。
具体的,可通过对所述搜索内容进行拼音全拼转换、拼音简拼转换、以及分词等处理,生成多个查询条件,其中,查询条件可以是,例如:根据搜索内容生成的相应的初始词、拼音全拼、拼音简拼、单字分词。
举例来说:如果搜索内容是:格列齐特缓,则初始词是:格列齐特缓;拼音全拼是:gelieqitehuan;拼音简拼是:glqth;单字分词是:格、列、齐、特、缓。
需指出,如果搜索内容中有中拼音混合,可将中文相应地转换为拼音全拼或拼音简拼,再与原有的拼音全拼或拼音简拼进行拼接,从而获得拼音全拼、拼音简拼。
步骤130:根据所述查询条件,对所述药品索引表进行查询,并获得药品查询结果集。
优选的,可根据用户输入的搜索内容相应的初始词、拼音全拼、拼音简拼,查询所述药品索引表中的原词分词结果集合、拼音全拼Ngram分词结果、拼音简拼Ngram分词结果,获得药品查询结果集。
同时,根据用户输入的搜索内容相应的单字分词,查询所述药品索引表中的原词分词结果集合,作为拼音匹配的加分条件,其中原词分词结果集合至少需要匹配一个单字。
举例来说,如果搜索内容(格列齐特缓),则:
使用初始词(格列齐特缓)查询原词分词结果集合字段,文本相关性业务权重最高
使用拼音全拼(gelieqitehuan)查询拼音全拼Ngram分词结果字段,文本相关性业务权重次之,
使用拼音简拼(glqth)查询拼音简拼Ngram分词结果字段;文本相关性业务权重最低,
同时,当用户输入文字错误,但拼音正确的情况下,由于药品行业中同音字较多,可使用部分正确的文字提升拼音匹配的相关性,提升召回的准确度,即:
使用单字分词(格、列、齐、特、缓)查询单字分词字段,要求至少匹配一个,匹配单字越多,文本相关性业务权重越高;
文字纠错及重新查询
如果查询匹配不成功,即药品查询结果集为空,则进一步对初始词进行文字纠错,并根据纠错后的初始词对所述药品索引表重新进行查询。优选的,可利用医药领域字形纠错模型对初始词进行文字纠错,该模型存储有药品领域的常见错词词典,以k-v(键-值)形式存储模型,其中,k为错词,v为正确的结果词,将初始词输入该模型后,如果输出有正确的结果词v,则用v赋值给原初始词,以实现纠错,更正用户容易混淆的字形,例如,氯和禄、氨和晏,等等。
上述文字纠错处理能够有效提高药品查询效率。
拼音纠错及重新查询
如果在上述的对初始词进行文字纠错处理的过程中确定不存在文字错误,则进行拼音纠错处理,并根据纠错后的拼音集合对所述药品索引表重新进行查询。其中,拼音拼写中的常见错误可包含,例如:声母错误、韵母错误、前鼻音错误、后鼻音错误,等等。具体的,可在拼音纠错处理中,设定纠正阈值为1,即每次只允许修改/增加/删除一个字母,因而,会生成由多个拼音纠错结果集合而成的纠错后的拼音集合。然后,根据纠错后的拼音集合,对药品索引表中的拼音全拼Ngram分词结果进行查询。
同时,根据用户输入的搜索内容相应的单字分词,查询所述药品索引表中的原词分词结果集合,作为拼音匹配的加分条件,这已经在上文中描述,在此不做赘述。
进一步的,当纠正拼音的时候,有少数拼音搜索回来的内容和用户原始搜词相差甚远,需要使用部分正确的文字提升搜索结果的相关性和准确度,例子:
搜索内容(格聂齐特缓),其中聂(nie)拼写错误,应该为列(lie)
对拼音全拼(genieqitehuan)做拼音纠错处理后,其中一个结果的拼音全拼为(gelieqitehuan)
使用纠错后的拼音全拼(gelieqitehuan)查询拼音全拼Ngram分词结果字段,
进一步的,使用单字分词(格、聂、齐、特、缓)查询单字分词字段,要求至少匹配一个,匹配单字越多,文本相关性业务权重越高;
需指出,如果经过上述所有的处理步骤后,得到的药品查询结果集仍然为空,即,未能与药品索引表匹配成功,则本次药品查询任务结束,无提示词生成。
步骤140:对所述药品查询结果集,先根据所述用户输入的搜索内容、药品名、商品名、厂商,进行首次排序,再对首次排序结果,根据所述药品业务权重进行二次排序,获得二次排序结果。
优选的,本步骤可通过以下方式具体实现:
子步骤1401:首次排序:通过将查询条件与药品索引表中的字段进行匹配,对所述药品查询结果集进行首次排序。
优选的,可按照查询条件与药品名、商品名、厂商三个级别(在其他实施例中,根据匹配对象的数量,也可以是更多或更少的级别)的匹配关系,按照级别对药品查询结果集进行排序,以获得包含上述三个级别的首次排序结果,其中,药品名的级别>商品名的级别>厂商的级别。这里所称的包含上述三个级别的首次排序结果,首次排序结果中依次有三个级别,第一级别是药品名匹配的药品,第二级别是药品名没有匹配但是商品名匹配的药品,第三级别是药品名和商品名都没有匹配但厂商匹配的药品,每一个级别中可以有0个、1个或多个药品。
具体的,药品查询结果集的数据结构可以是:Map< String, List<Object>>, 其中String表示级别,List<Object>表示此级别下的所有药品。
举例来说,可将初始词,与药品查询结果集中每个药品的药品名、商品名、厂商进行匹配,并按药品名>商品名>厂商 的级别进行文本相关性分级排序。需指出,本发明侧重于赋予“药品名”较高业务权重,从而得到排序后的药品查询结果集。
举例来说,如果搜索内容(济生),则:
初始词(济生)
药品1:{药品名:健儿清解液 商品名:南昌济生 厂商:江西南昌济生制药有限责任公司}
药品2: {药品名:济生肾气片 商品名:益盛 厂商:吉林省集安益盛药业股份有限公司}
药品3:{药品名:复方鲜竹沥液 商品名:南昌济生 厂商:江西南昌济生制药有限责任公司}
药品4:{药品名:济生肾气丸 商品名:辰济 厂商:陕西紫光辰济药业有限公司}
按文本相关性分级排序后,
[药品2、药品4] 文本相关性为同一级别,药品名包含“济生”,
[药品1、药品3] 文本相关性为同一级别,商品名包含“济生”,
得到文本相关性降序排列:[药品2、药品4、药品1、药品3]
需指出,如果初始词,与药品查询结果集中每个药品的药品名、商品名、厂商匹配不成功,则对药品查询结果集中的每个药品的药品名、商品名、厂商进行拼音全拼转换处理,生成相应的药品名pyqp_f1、商品名pyqp_f2、厂商pyqp_f3数据,再将拼音全拼,与药品名pyqp_f1、商品名pyqp_f2、厂商pyqp_f3进行匹配,按药品名pyqp_f1>商品名pyqp_f2>厂商pyqp_f3的级别进行文本相关性分级排序,从而得到排序后的药品查询结果集。
举例来说:
搜索内容(济升),初始词(济升)无法匹配成功。
使用拼音全拼匹配(jisheng)
药品1:{药品名:健儿清解液(pyqp_f1:jianerqingjieye) 商品名:南昌济生(pyqp_f2:nanchangjisheng) 厂商:江西南昌济生制药有限责任公司(pyqp_f3:jiangxinanchangjishengzhiyaoyouxianzerengongsi)}
药品2: {药品名:济生肾气片(pyqp_f1: jishengshenqipian) 商品名:益盛(pyqp_f2:yisheng) 厂商:吉林省集安益盛药业股份有限公司(pyqp_f3:jilinshengjianyishengyaoyegufenyouxiangongsi)}
药品3:{药品名:复方鲜竹沥液(pyqp_f1: fufangxianzhuliye) 商品名:南昌济生(pyqp_f2:nanchangjisheng) 厂商:江西南昌济生制药有限责任公司(pyqp_f3:jiangxinanchangjishengzhiyaoyouxianzerengongsi) }
药品4:{药品名:济生肾气丸(pyqp_f1: jishengshenqipian) 商品名:辰济(pyqp_f2:chenji) 厂商:陕西紫光辰济药业有限公司(pyqp_f3:shanxiziguangchenjiyaoyeyouxiangongsi) }
按文本相关性分级排序后,
[药品2、药品4] 文本相关性为同一级别,药品名包含“jisheng”,
[药品1、药品3] 文本相关性为同一级别,商品名包含“jisheng”,
得到文本相关性降序排列:[药品2、药品4、药品1、药品3]
如果拼音全拼,与药品名pyqp_f1、商品名pyqp _f2、厂商pyqp _f3的匹配不成功,则对药品查询结果集中的每个药品的药品名、商品名、厂商进行拼音简拼转换处理,得到相应的的药品名pyjp_f1、商品名pyjp _f2、厂商pyjp _f3数据,再将拼音简拼,与药品名pyjp_f1、商品名pyjp _f2、厂商pyjp _f3进行匹配,按药品名pyjp_f1>商品名pyjp _f2>厂商pyjp _f3的级别进行文本相关性分级排序,从而得到排序后的药品查询结果集。
举例来说,搜索内容(济森),初始词(济森)、拼音全拼(jisen)无法匹配成功,则使用拼音简拼匹配(js)
药品1:{药品名:健儿清解液(pyjp_f1:jeqjy) 商品名:南昌济生(pyjp_f2:ncjs)厂商:江西南昌济生制药有限责任公司(pyjp_f3:jxncjszyyxzrgs)}
药品2: {药品名:济生肾气片(pyjp_f1: jssqp) 商品名:益盛(pyjp_f2:ys) 厂商:吉林省集安益盛药业股份有限公司(pyjp_f3:jlsjaysyygfyxgs)}
药品3:{药品名:复方鲜竹沥液(pyjp_f1: ffxzly) 商品名:南昌济生(pyjp_f2:ncjs) 厂商:江西南昌济生制药有限责任公司(pyjp_f3:jxncjszyyxzrgs) }
药品4:{药品名:济生肾气丸(pyjp_f1: jssqw) 商品名:辰济(pyjp_f2:cj) 厂商:陕西紫光辰济药业有限公司(pyjp_f3:sxzgcjyyyxgs) }
按文本相关性分级排序后,
[药品2、药品4] 文本相关性为同一级别,药品名包含“js”,
[药品1、药品3] 文本相关性为同一级别,商品名包含“js”,
得到文本相关性降序排列:[药品2、药品4、药品1、药品3]
子步骤1402:二次排序:对首次排序结果,根据所述业务权重进行二次排序,获得二次排序结果。
具体的,对药品查询结果集,即首次排序结果进行二次排序,对首次排序结果中每个级别的结果集L1、L2、L3分别使用药品的业务权重进行降序,降序结果集分别覆盖原有的L1、L2、L3结果集,由此,得到重排后的药品查询结果集。
换句话说,本步骤对首次排序结果中的每个所述级别,分别根据所述业务权重进行排序,获得包含所述级别的二次排序结果。
优选的,药品查询结果集的数据结构可以是,例如:Map< String, List<Object>>。
这样做的好处在于,首先,由于药品名同名较多、品牌名对应的药品较多,在满足同一个搜索词的前提下,使用药品的业务权重参与最终排序可以给出符合用户期望的药品提示词,提高用户的查询效率。例如,当首次排序结果中搜索词为商品名,该商品名对应多个品牌,则通过按照业务权重的值进行降序排序,能够使得热卖、受用户关注的品牌排序靠前。又例如,当首次排序结果中搜索词为品牌名,该品牌对应着多个商品,通过按照业务权重的值进行降序排序,能够使得热卖、受用户关注的商品排序靠前;
举例来说,搜索内容(白云山),其中,白云山为商品名。
有满足的药品默认排序如下:{“白云山 板蓝根颗粒”:业务权重W1,“白云山 小柴胡颗粒”:业务权重W2,“白云山 复方丹参片”:业务权重W3,“白云山 绞股蓝总甙片”:业务权重W4}
这些药品在“白云山”搜索词下文本相关性都一致,需要使用对应的业务权重,给予排序;
如有业务权重 W3> W1 > W4 > W2,对药品二次排序,得到新的药品查询结果集:
{“白云山 复方丹参片”:业务权重W3, “白云山 板蓝根颗粒”:业务权重W1,“白云山 绞股蓝总甙片”:业务权重W4, “白云山 小柴胡颗粒”:业务权重W2}
步骤150:根据所述搜索内容和所述二次排序结果,为在所述二次排序结果中排序在先的药品生成置顶的提示词和组合的提示词,并且,通过合并所述置顶的提示词和所述组合的提示词,生成并输出药品搜索提示词。此后,用户可以在输入的人机交互界面中选择所需的药品搜索提示词,该药品搜索提示词的内容就可以作为用户的输入内容进入应用软件的输入框,供该应用软件进一步的处理使用。
具体的,本步骤包含以下子步骤:
子步骤1501:获取所述药品查询结果集中每一个药品Mn一个或多个字段,例如:药品名、商品名、厂商、规格。
子步骤1502:判断初始词是否被药品Mn中的药品名、商品名、厂商以“前缀匹配”的方式包含。如果是,则将该字段作为置顶的提示词。
其中,“前缀匹配”的方式,是指从第一个字符开始匹配。例如,字符串“ABC”就是以前缀匹配的方式包含在字符串“ABCDE”中,而字符串“BCD”虽然也和字符串“ABCDE”匹配,但因为是从第二个字符开始匹配,所以不是前缀匹配。
举例来说,搜索内容(缬沙坦),则
初始词(缬沙坦)
药品1:{ 药品名:缬沙坦胶囊 商品名:代文 厂商:北京诺华制药有限公司 规格:80mg*7粒}
药品2:{ 药品名:缬沙坦氢氯噻嗪胶囊 商品名:兰普 厂商:辰欣药业股份有限公司 规格:12粒}
在这种情况下,有2个置顶的提示词:{“缬沙坦胶囊”,“缬沙坦氢氯噻嗪胶囊”}
同时,以包含初始词的字段为开头,组合不为空的其他字段,生成一个或多个符合药品信息结构的提示词,即,组合的提示词。
举例来说,初始词为药品名的部分数据,则生成置顶的提示词:“药品名”,同时生成组合的提示词: “药品名 商品名”、“药品名 规格”、“药品名 商品名 规格”、“药品名 厂商”、“药品名 厂商 规格”,方便用户快速找药,提高药品查询效率。
举例来说,搜索内容(缬沙坦)
初始词(缬沙坦)
药品1:{ 药品名:缬沙坦胶囊 商品名:代文 厂商:北京诺华制药有限公司 规格:80mg*7粒}
药品2:{ 药品名:缬沙坦氢氯噻嗪胶囊 商品名:兰普 厂商:辰欣药业股份有限公司 规格:12粒}
得到置顶的提示词:{“缬沙坦胶囊”,“缬沙坦氢氯噻嗪胶囊”}
得到组合的提示词:{“缬沙坦胶囊 代文”, “缬沙坦胶囊 兰普”, “缬沙坦胶囊代文 80mg*7粒”, “缬沙坦胶囊 兰普 12粒”}
优选的,如果商品名为空,亦可得到组合的提示词:{“缬沙坦胶囊 北京诺华制药有限公司”,“缬沙坦胶囊 辰欣药业股份有限公司”,“缬沙坦胶囊 北京诺华制药有限公司80mg*7粒”,“缬沙坦胶囊 辰欣药业股份有限公司 12粒”}
优选的,如果初始词未被药品Mn中的部分字段包含,则执行步骤1503。
换句话说,将以前缀匹配方式包含所述搜索内容的字段作为置顶的提示词,并将该字段为开头,与其他不为空的字段组合,生成组合的提示词。
子步骤1503:判断初始词的每个文字是否被药品Mn中的组合字段包含,例如被“药品名+商品名”、“药品名+厂商”包含,如果是,则选择该组合字段文字作为置顶的提示词,同时以该组合字段为开头,组合其它不为空的字段,生成一个或多个符合药品信息结构的药品信息组合的提示词。
例如:搜索内容(缬沙坦代文)
初始词(缬沙坦代文)
药品1:{ 药品名:缬沙坦胶囊 商品名:代文 厂商:北京诺华制药有限公司 规格:80mg*7粒}
药品2:{ 药品名:缬沙坦胶囊 商品名:代文 厂商:北京诺华制药有限公司 规格:80mg*28粒}
药品3:{ 药品名:缬沙坦胶囊 商品名:代文 厂商:北京诺华制药有限公司 规格:160mg*7粒}
得到组合的提示词:{“缬沙坦胶囊 代文 80mg*7粒”, “缬沙坦胶囊 代文 80mg*28粒”, “缬沙坦胶囊 代文160mg*7粒”}
子步骤1504:通过合并所述置顶的提示词和所述组合的提示词,生成并输出药品搜索提示词。
例如:搜索内容(缬沙坦)
初始词(缬沙坦)
药品1:{ 药品名:缬沙坦胶囊 商品名:代文 厂商:北京诺华制药有限公司 规格:80mg*7粒}
药品2:{ 药品名:缬沙坦氢氯噻嗪胶囊 商品名:兰普 厂商:辰欣药业股份有限公司 规格:12粒}
得到置顶的提示词:{“缬沙坦胶囊”,“缬沙坦氢氯噻嗪胶囊”}
得到组合的提示词:{“缬沙坦胶囊 代文”, “缬沙坦胶囊 兰普”, “缬沙坦胶囊代文 80mg*7粒”, “缬沙坦胶囊 兰普 12粒”}
通过合并所述置顶的提示词和所述组合的提示词,得到组合后的药品搜索提示词:{“缬沙坦胶囊”,“缬沙坦氢氯噻嗪胶囊”,“缬沙坦胶囊 代文”, “缬沙坦胶囊 兰普”,“缬沙坦胶囊 代文 80mg*7粒”, “缬沙坦胶囊 兰普 12粒”}
优选的,在本说明书的实施例中,对于初始词无法匹配、纠错的情况,统一提取药品Mn的药品名 商品名字段,生成“药品名 商品名”的药品信息组合的提示词,作为药品搜索提示词,方便用户快速找药,提高药品查询效率。
上述实施例根据药品的销量、订单数、已购用户数量等的药品的特定业务属性确定药品相应的业务权重,在根据搜索内容获得药品查询结果后,先后根据搜索内容与索引表的匹配关系,和业务权重进行包含级别的首次排序和二次排序,再根据所述搜索内容和所述二次排序结果,为在所述二次排序结果中排序在先的药品生成置顶的提示词和组合的提示词,并合并所述置顶的提示词和所述组合的提示词,生成并输出药品搜索提示词。本申请能够在有多个药品满足搜索词的情况下,使药品的业务权重参与到排序过程中,更有效地提供符合用户期望的药品提示词,提高用户的药品查询效率和方便性。
为了验证本申请实施例的效果,一个AB实验的数据如上表所示。所谓AB实验是指在用户访问某个页面时,服务器向用户随机提供方案A的页面和方案B的页面。
该实验中,方案A为传统提示词排序,具体来说,基于全站用户的历史搜索词作为主要数据源,将用户输入和历史搜索词做匹配,按照文本相关性优先原则,先做一轮排序,当文本相关性一致时,按照历史搜词被搜索次数等属性作为排序因子,进行再次排序;得到排好序的搜索提示词。
方案B为本申请的一个实施例,具体地说,先根据搜索内容与药品名、商品名和厂商的匹配关系,按照级别对药品查询结果集进行排序,以获得包含三个级别的首次排序结果,其中,药品名的级别>商品名的级别>厂商的级别,然后在首次排序结果的三个级别中分别根据业务权重进行二次排序,得到排好序的搜索提示词。
考察的对象是PV提示词点击率和UV提示词点击率。其中,PV提示词点击率指,在一天中,提示词点击数/提示词被浏览总数。UV提示词点击率指,在一天中,点击提示词的用户数/浏览提示词的用户数。这两个指标都是直接结果,可以反应出提示词提示的准确与否,提示的内容是否是用户所需要的。简单地说,如果提示词被点击的概率越大,说明提示词对用户的帮助越大,用户越觉得提示词有用。
上表中罗列了30天的测试结果(起始日期为D日,结束日期为D+29日),每天都有大量用户参与测试。对30天的测试结果取平均后,A组(传统方式)的PV提示词点击率为50.48%,UV提示词点击率为60.41%,而B组(本申请实施例)的PV提示词点击率为59.91%,UV提示词点击率为70.62%。两种提示词点击率都提升了10%左右,效果显著,而每天的波动大致在1%以下(因为用户数足够多,个体的行为差异被平均掉了),所以从统计学意义上这个效果具备很好的可信度。
本申请的第二实施方式涉及一种药品搜索提示词的生成系统,其结构如图4所示,该药品搜索提示词的生成系统包括:
药品索引表模块,用于预先建立药品索引表,所述药品索引表至少包含每个药品的药品名、商品名、厂商和业务权重,其中,所述业务权重根据每个药品的业务属性确定;
药品查询模块,用于根据用户输入的搜索内容对所述药品索引表进行查询,获得药品查询结果集;
药品查询结果排序模块,用于对所述药品查询结果集,先根据所述搜索内容与所述药品名、商品名和厂商的匹配关系进行首次排序,再对首次排序结果,根据所述业务权重进行二次排序,获得二次排序结果;
药品搜索提示词生成模块,用于根据所述二次排序结果输出药品搜索提示词。具体地说,在一个实施例中,根据所述搜索内容和所述二次排序结果,为在所述二次排序结果中排序在先的药品生成置顶的提示词和组合的提示词,并且,通过合并所述置顶的提示词和所述组合的提示词,生成并输出药品搜索提示词。
优选的,所述业务属性包含:所述药品的销量、所述药品的订单数、所述药品的点击率、所述药品的已购用户数量,并且,所述药品的业务权重为:
W = a*f5 + b*f6 + c*f7 + d*f8
其中,W为所述业务权重,f5为所述药品的销量,f6位所述药品的订单数,f7为所述药品的点击率,f8为所述药品的已购用户数量;a,b,c以及d是业务权重系数。
第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
需要说明的是,本领域技术人员应当理解,上述药品搜索提示词的生成系统的实施方式中所示的各模块的实现功能可参照前述药品搜索提示词的生成方法的相关描述而理解。上述药品搜索提示词的生成系统的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本申请实施例上述药品搜索提示词的生成系统如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施方式还提供一种计算机存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。
此外,本申请实施方式还提供一种药品搜索提示词的生成系统,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。其中,该处理器可以是中央处理单元(Central Processing Unit,简称“CPU”),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称“DSP”)、专用集成电路(Application SpecificIntegrated Circuit,简称“ASIC”)等。前述的存储器可以是只读存储器(read-onlymemory,简称“ROM”)、随机存取存储器(random access memory,简称“RAM”)、快闪存储器(Flash)、硬盘或者固态硬盘等。本发明各实施方式所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本申请的上述公开内容之后,本领域技术人员可以对本申请作各种改动或修改,这些等价形式同样落于本申请所要求保护的范围。