具体实施方式
本申请实施例提供一种搜索音乐和建立索引的方法及装置、搜索结果判断方法。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
现有的搜索音乐的方法仅对查询串中所有关键词的倒排索引求交集,不考虑查询串中关键词的位置关系,返回的搜索结果中可能包含不符合用户的搜索意图的搜索结果。例如用户一般不会输入查询串“日子刘德华一起走过的”,因此,对于这样的查询串返回的歌曲中若包含“刘德华”的歌曲“一起走过的日子”将不符合用户的搜索意图。但现有的搜索音乐的方法仅对所有关键词的倒排索引结果求交集,无论用户输入的查询串格式如何,交集中出现的歌曲都会被返回,这样可能会返回与用户搜索意图不相关的无关结果。例如,现有的搜索音乐的方法对查询串“日子刘德华一起走过的”进行分词并对关键词的倒排索引结果求交集后,可能会返回“刘德华”的歌曲“一起走过的日子”这一不符合用户搜索意图的结果。
下面介绍本申请提供一种搜索音乐的方法实施例。图1是本申请一种搜索音乐的方法第一实施例的流程图。如图1所示,所述搜索音乐的方法可以包括:
S110:接收查询串,对所述查询串进行分词,得到一个或多个查询词。
计算机可以接收查询串。计算机可以对所述查询串进行分词得到查询词,具体地,可以对所述查询串逐字进行分词,所述查询串中包含英文的,可以对所述英文逐单词进行分词,分词后得到的单字或英文单词可以设置为一个查询词。一个查询串分词后可以得到一个或多个查询词。
S120:根据所述查询词从歌曲倒排索引表中查找与所述查询词对应的歌曲标识符,对各查询词对应的歌曲标识符求交集,得到候选的第一歌曲集合。
根据所述查询词可以从歌曲倒排索引表中查找与所述查询词对应的歌曲标识符(下文可以简称歌曲ID)。所述歌曲ID可以是编号的形式。所述歌曲ID可以具有唯一性。所述歌曲ID可以与歌曲的排列属性相对应。所述排列属性可以包括:歌曲名、歌曲别名、艺人名、艺人别名、专辑名、专辑别名、演唱者等字段中的一种或多种。所述字段可以用于表示歌曲的一个属性,例如字段“歌曲名”可以表示歌曲名称这一属性。所述排列属性可以是所述字段的集合。所述排列属性中包含的字段可以按照预设的顺序进行排列。每一个查询词可以对应一个或多个歌曲ID,所述查询词也可以没有对应的歌曲ID,即在所述歌曲倒排索引表中没有歌曲ID对应的排列属性中包含该查询词。
计算机可以对查询串中每一个查询词对应的歌曲ID求交集,得到的歌曲ID所对应的排列属性中可以包含根据所述查询串分词后得到的所有的查询词。所述求交集得到的歌曲ID形成的集合可以设置为候选的第一歌曲集合。
S130:获取所述候选的第一歌曲集合中歌曲的排列属性,根据所述查询词在所述歌曲的排列属性中的位置偏移量,对所述查询串进行分段,得到一个或多个分段文本。
计算机可以获取所述候选的第一歌曲集合中每一首歌曲的排列属性,并获取各查询词在其匹配的排列属性中的位置偏移量。所述查询词在所述歌曲排列属性中的位置偏移量可以包括:各查询词在所述排列属性中出现的位置。若某一查询词在所述排列属性中出现的次数大于或等于2次,则分别记录所述查询词在所述排列属性不同位置处的位置偏移量。为了便于区分所述查询词属于所述排列属性中不同的字段,可以在两个不同的字段之间将位置偏移量增加一预设值,例如增加5。
根据所述查询词在所述排列属性中的位置偏移量,可以对所述查询串按照第一预设规则进行分段,得到分段文本。对所述查询串按照第一预设规则进行分段,具体可以包括:将查询串中相邻且同时在排列属性中位置相邻的词作为一个分段文本。
对所述查询串进行分段后,可以得到一个或多个分段文本,以及所述查询串的分段文本数。
S140:将所述分段文本与所述歌曲的排列属性按照预定的顺序进行匹配,基于所述匹配结果计算所述查询串与所述歌曲的相关性权重。
计算机可以将所述每一个分段文本与所述歌曲的排列属性中的字段分别按照预定的顺序进行匹配,得到匹配结果。具体地,对应每一个分段文本可以按照下述的先后顺序进行匹配:歌曲名或艺人名、演唱者、歌曲别名、艺人别名、专辑名、专辑别名。对于一个分段文本,首先将所述分段文本与所述歌曲的歌曲名或艺人名进行匹配,若所述分段文本能与所述歌曲的歌曲名或艺人名完全精确匹配,则所述分段文本与所述歌曲的歌曲名或艺人名匹配成功,可以记录所述分段文本的匹配结果;若不能匹配成功,可以将所述分段文本与演唱者进行匹配,以此类推,直至与所述歌曲的排列属性中的某个字段匹配成功;若所述分段文本最终不能与所述歌曲的排列属性中的专辑别名匹配成功,则所述分段文本匹配不成功,记录所述分段文本的匹配结果。所述匹配成功可以包括:分段文本的内容与排列属性的内容完全相同,或,分段文本的内容存在于字段的内容中。
基于所述匹配结果可以计算所述歌曲与所述查询串的相关性权重。具体地,所述查询串与所述歌曲的相关性权重可以通过下式来计算获得:
上述公式(1)中,W表示查询串与歌曲的相关性权重;Wtext表示文本分;Wstatic表示静态分,Wmax表示文本分的最大值;α为静态分加权因子。
所述静态分可以用于表示歌曲热度,所述静态分可以根据歌曲的试听数来计算。具体地,可以将所述歌曲的试听数除以一个固定值所得的结果设置为所述静态分的值。所述固定值的取值可以根据实际试验结果进行选取。
所述Wmax可以用于限制文本分的最大值。
所述静态分加权因子α的取值可以根据实际试验结果进行选取。
所述文本分的值可以根据查询串的分段文本与所述歌曲的排列属性匹配的结果来计算。所述文本分可以包括:精确匹配权值和路径权值。
所述文本分的计算方法可以如下:
上述公式(2)中,Wexact为精确匹配权值,Wpath为路径权值;b为路径权值因子。所述路径权值因子b的取值可以根据实际试验结果进行选取。
所述精确匹配权值可以由所述分段文本与所述歌曲的排列属性匹配结果确定。所述分段文本与歌曲的排列属性匹配结果不同,对应的精确匹配权值也可以不同。所述与所述分段文本匹配成功的字段在匹配过程中优先程度越高的,对应的精确匹配权值可以越大。根据匹配过程中字段的匹配优先程度,所述精确匹配权值可以符合下述规律:
Wtitle=Wartist_title>Wsinger>Wsub_title>Waritst_sub_title>Walbum_title>Walbum_sub_title (3)
其中,Wtitle表示歌曲名;Wartist_title表示艺人名;Wsinger表示演唱者;Wsub_title表示歌曲别名;Waritst_sub_title表示艺人别名;Walbum_title表示专辑名;Walbum_sub_title表示专辑别名。
所述精确匹配权值的取值可以根据实际试验结果进行选取。例如,可以选取歌曲名、艺人名、演唱者、歌曲别名、艺人别名、专辑名、专辑别名匹配成功时所对应的精确匹配权值分别为:10000,10000,9500,8000,7000,3600,3400。
当分段文本的匹配结果是与歌曲名匹配成功时,可以将Wtitle的值作为Wexact进行计算。当分段文本与歌曲的排列属性中每一字段的匹配结果是匹配不成功时,Wexact的值可以为0。若某一歌曲中同时有多个字段匹配成功,则选取对应的精确匹配权值中的最大值带入公式(2)中进行计算。
所述路径权值可以用于表示查询串的查询词在所述歌曲排列属性中位置偏移量的分布情况。所述路径权值可以根据最短路径值来计算。所述最短路径值可以包括:查询串中的第一个查询词到最后一个查询词在所述歌曲排列属性中所经过的最短路径的值。
例如,有一歌曲的排列属性为“中国人爱中国”,查询串为“爱中国”。对所述查询串分词后可以分别得到查询词“爱”“中”“国”。其中,
所述查询词“爱”在所述排列属性中的位置偏移量为:4;
所述查询词“中”在所述排列属性中的位置偏移量为:1和5;
所述查询词“国”在所述排列属性中的位置偏移量为:2和6。
则所述查询串中“爱中国”的第一个查询词“爱”到最后一个查询词“国”在所述歌曲排列属性中所经过的路径可以包括:
位置偏移量为4->位置偏移量为1->位置偏移量为2,所经过的路径值为4;
或者,位置偏移量为4->位置偏移量为1->位置偏移量为6,所经过的路径值为8;
或者,位置偏移量为4->位置偏移量为5->位置偏移量为2,所经过的路径值为4;
或者位置偏移量为4->位置偏移量为5->位置偏移量为6,所经过的路径值为2。
选择其中路径值最小的2作为所述歌曲“中国人爱中国”的最短路径值。
根据所述最短路径值计算路径权值,具体可以通过下述公式来计算:
Wpath=Nword×C-Wshortest (4)
公式(4)中,所述Wpath用于表示需要计算的路径权值;所述Nword用于表示所述查询串对应的查询词的词数;所述Wshortest用于表示最短路径值;所述C为查询词系数,可以是一个固定值;所述C可以根据实际试验结果进行选取。所述C的取值范围可以包括:大于10000。
由公式(4)可以看出,最短路径值越小,得到的路径权值越大,表示所述歌曲与查询串的相关性越高。
将每一歌曲对应的路径权值和精确匹配权值带入公式(2)中,可以计算出所述歌曲的文本分;将所述歌曲的文本分和静态分的值带入公式(1)中可以计算出所述歌曲的歌曲权值。所述歌曲权值可以用于对歌曲进行排序。
S150:根据所述查询串与所述歌曲的相关性权重对所述候选的第一歌曲集合中的歌曲进行排序,得到第二歌曲集合,设置第二歌曲集合为所述查询串的搜索结果,并返回给用户。
根据所述候选的第一歌曲集合中每一歌曲计算所得的歌曲权重,可以对所述歌曲进行排序,以使得符合用户搜索意图的歌曲排在前面。具体地,可以将所述候选的第一歌曲集合中的歌曲按照歌曲权重的值从大到小依次进行排列。通过对所述歌曲进行排序,可以得到第二歌曲集合,可以将所述第二歌曲集合设置为所述查询串对应的搜索结果。计算机可以将所述搜索结果返回给用户。
上述实施例公开的搜索音乐的方法,通过计算候选歌曲集合中歌曲的歌曲权重来对歌曲进行排序,在计算歌曲权重的过程中考虑了查询串中关键词的位置、歌曲排列属性与查询串的匹配结果、歌曲的热度等,按计算出的歌曲权重进行排序的搜索结果可以更符合用户的搜索意图。
下面介绍本申请搜索音乐的方法的第二实施例。
图2是本申请一种搜索音乐的方法第二实施例的流程图。如图2所示,所述搜索音乐的方法可以包括:
S210:接收查询串,对所述查询串进行分词,得到一个或多个查询词。
S220:根据所述查询词从歌曲倒排索引表中查找与所述查询词对应的歌曲标识符,对各查询词对应的歌曲标识符求交集,得到候选的第一歌曲集合。
S230:获取所述候选的第一歌曲集合中歌曲的排列属性,根据所述查询词在所述歌曲的排列属性中的位置偏移量,对所述查询串进行分段,得到一个或多个分段文本。
S240:计算所述歌曲对应的分段文本的数目,所述分段文本的数目小于或等于第一预设值的,将所述歌曲存放至第三歌曲集合。
S250:将第三歌曲集合中歌曲的排列属性与所述歌曲对应的分段文本进行匹配,基于所述匹配结果计算所述查询串与所述歌曲的相关性权重。
S260:根据所述查询串与所述歌曲的相关性权重对所述候选的第三歌曲集合中的歌曲进行排序,得到第二歌曲集合,设置第二歌曲集合为所述查询串的搜索结果,并返回给用户。
所述搜索音乐的方法第二实施例与所述搜索音乐的方法第一实施例的区别在于:本实施例中,将所述查询串根据候选的第一歌曲集合中每一歌曲的排列属性进行分段后,还进一步筛选出分段文本数目小于或等于第一预设值的歌曲,形成第三歌曲集合,再对第三歌曲集合中的歌曲计算歌曲权重并排序。所述第一预设值可以根据实际试验结果进行选取,第一预设值的取值范围可以包括:大于或等于5。
将查询串的内容根据歌曲的排列属性进行分段时,若分段数目较多,则表示所述查询串的内容在所述排列属性中基本不相连,则可以设定所述排列属性与所述查询串的相关性不强,所述排列属性对应的歌曲可以从候选歌曲集合中去除。本实施例筛选出分段文本数目小于或等于第一预设值的歌曲可以实现上述效果。
本实施例的其他部分与本申请搜索音乐的方法第一实施例相同,可以参照搜索音乐的方法第一实施例,本实施例在此不再赘述。
上述公开的搜索音乐的方法的第二实施例,在实现了搜索音乐的方法第一实施例技术效果的基础上,通过筛选分段文本数目小于或等于第一预设值的歌曲,可以去除排列属性与查询串相关性不强的歌曲,从而减少了计算歌曲权重这一步骤的计算量,节约了计算资源。
下面介绍本申请搜索音乐的方法的第三个实施例。
图3是本申请一种搜索音乐的方法第三实施例的流程图。如图3所示,所述搜索音乐的方法可以包括:
S310:接收查询串,对所述查询串进行分词,得到一个或多个查询词。
S320:根据所述查询词从歌曲倒排索引表中查找与所述查询词对应的歌曲标识符,对各查询词对应的歌曲标识符求交集,得到候选的第一歌曲集合。
S330:获取所述候选的第一歌曲集合中歌曲的排列属性,根据所述查询词在所述歌曲的排列属性中的位置偏移量,对所述查询串进行分段,得到一个或多个分段文本。
S340:对所述候选的第一歌曲集合中的歌曲根据预设的第二规则进行判断,确定所述歌曲与查询串的相关程度,得到第四歌曲集合。
S350:将第四歌曲集合中歌曲的排列属性与所述歌曲对应的分段文本进行匹配,基于所述匹配结果计算所述查询串与所述歌曲的相关性权重。
S360:根据所述查询串与所述歌曲的相关性权重对所述候选的第四歌曲集合中的歌曲进行排序,得到第二歌曲集合,设置第二歌曲集合为所述查询串的搜索结果,并返回给用户。
所述搜索音乐的方法第三实施例与所述搜索音乐的方法第一实施例的区别在于:本实施例中,得到候选的第一歌曲集合后,还可以对第一歌曲集合中的歌曲根据第二规则进行判断,选取出与用户搜索意图较符合的相关歌曲结果,所述相关歌曲结果可以形成第四歌曲集合,再对第四歌曲集合求取歌曲权重值并排序。
所述歌曲与查询串的相关程度可以分为三种:相关、可能相关和不相关。具体地,可以用一特定的字段来表示某一歌曲与查询串的相关程度,通过对该字段设定不同的值来设定歌曲与查询串的相关程度。例如,可以设定相关程度这一字段的值为0来表示相关程度为相关;可以设定相关程度这一字段的值为1来表示相关程度为可能相关;可以设定相关程度这一字段的值为2来表示相关程度为不相关。
所述对候选的第一歌曲集合中的歌曲根据预设的第二规则进行判断,确定所述歌曲与查询串的相关程度,得到第四歌曲集合,具体可以包括:
S341:将所述查询串与候选的第一歌曲集合中歌曲的排列属性进行匹配,所述查询串与所述排列属性中字段完全精确匹配的,设定所述歌曲与所述查询串的相关程度为相关;没有设定相关程度的歌曲,进入下一步骤进行处理。
可以将所述查询串与候选的第一歌曲集合中每一首歌曲的排列属性进行匹配,所述查询串与所述排列属性中字段能完全精确匹配的,可以设定所述歌曲与所述查询串的相关程度为相关。所述设定相关程度为相关可以通过设定相关程度这一字段的值为0来表示。
S342:将所述根据歌曲的排列属性对所述查询串进行分段得到的分段文本与所述排列属性中的字段进行匹配,所述分段文本存在于所述排列属性中同一个字段内的,设定所述排列属性对应的歌曲与所述查询串的相关程度为相关;没有设定相关程度的,进入下一步骤进行处理。
该步骤可以用于对上一步骤处理结束后没有设定相关程度的歌曲进行处理。具体地,可以将所述分段文本与所述排列属性中的字段分别进行匹配,所述分段文本存在于所述排列属性中同一个字段内的,可以设定所述排列属性对应的歌曲与所述查询串的相关程度为相关。所述设定相关程度为相关可以通过设定相关程度这一字段的值为0来表示。
S343:判断所述分段文本的数目是否大于第二预设值,若所述分段文本的数目大于第二预设值,设定所述歌曲与所述查询串的相关程度为不相关;没有设定相关程度的,进入下一步骤进行处理。
该步骤可以用于对上一步骤处理结束后没有设定相关程度的歌曲进行处理。具体地,可以判断所述分段文本的数目是否大于第二预设值,若分段文本的数目大于第二预设值,可以设定所述歌曲与所述查询串的相关程度为不相关。所述设定相关程度为不相关可以通过设定相关程度这一字段的值为2来表示。所述第二预设值的取值可以是2。
对将查询串的内容根据歌曲的排列属性进行分段后,若分段文本不存在于同一个字段,则可以表示,所述查询串的内容与所述歌曲的排列属性相关性不强,进一步可以判断分段文本的数目。若分段文本数目较多,则表示所述查询串的内容在所述排列属性中基本不相连,可以表示所述排列属性与所述查询串的相关性差,可以设定所述歌曲与所述查询串的相关程度为不相关。
S344:判断所述查询词的数目是否大于第三预设值,若所述查询词的数目小于或等于第三预设值,将所述第一歌曲集合中未设定相关程度的歌曲的相关程度设置为可能相关;若所述查询词的数目大于第三预设值,将所述第一歌曲集合中未设定相关程度的歌曲的相关程度设置为不相关。
该步骤可以用于对上一步骤处理结束后没有设定相关程度的歌曲进行处理。具体地,可以判断所述查询词的数目是否大于第三预设值,若所述查询词的数目小于或等于第三预设值,将所述第一歌曲集合中未设定相关程度的歌曲的相关程度设置为可能相关;若所述查询词的数目大于第三预设值,将所述第一歌曲集合中未设定相关程度的歌曲的相关程度设置为不相关。所述第三预设值的取值可以是3。
S345:将所述第一歌曲集合中歌曲的相关程度为相关的歌曲存储至相关结果集合。
所述第一歌曲集合中歌曲的相关程度为相关的歌曲可以存储至相关结果集合。所述相关结果集合中可以包括返回给用户的歌曲结果。
例如,对于刘德华的歌曲“忘情水”,当查询串不同是,判断相关性的结果也可能不同。表1给出了不同查询串对应的相关程度判断结果。利用上述的步骤对表1中的查询串与刘德华的歌曲“忘情水”进行判断,判断结果如表1所示。
表1不同查询串对应的相关程度判断结果
当经过上述S341~S345处理后,得到的相关结果集合中包含的歌曲数目为0时,所述判断过程还可以包括:
S346:将所述第一歌曲集合中歌曲的相关程度为可能相关的歌曲存储至相关结果集合。
若经过上述S341~S345处理后,得到的相关结果集合中包含的歌曲数目为0,表示第一歌曲集合中没有相关程度为相关的歌曲,则可以将相关程度设定为“可能相关”的歌曲作为返回给用户的歌曲结果。
本实施例的其他部分与本申请搜索音乐的方法第一实施例相同,可以参照搜索音乐的方法第一实施例,本实施例在此不再赘述。
本实施例公开的搜索音乐的方法,在实现了搜索音乐的方法第一实施例技术效果的基础上,可以判断第一歌曲集合中歌曲与查询串的相关程度,筛选出其中相关程度较高的结果,再进行进一步的排序,可以使得返回给用户的结果更符合用户的搜索意图,同时可以减少了计算歌曲权重这一步骤的计算量,节约了计算资源。
下面介绍与本申请搜索音乐的方法相对应的建立音乐倒排索引的方法实施例。
图4是本申请一种建立音乐倒排索引的方法一个实施例的流程图。如图4所示,所述建立音乐倒排索引的方法可以包括:
S401:记录歌曲排列属性,设置歌曲标识符。
计算机可以对每一首歌曲记录所述歌曲的排列属性。所述排列属性可以包括:歌曲名、歌曲别名、艺人名、艺人别名、专辑名、专辑别名、演唱者等字段。所述排列属性中包含的字段可以按照预设的顺序进行排列。
计算机可以为每一歌曲设置歌曲标识符,所述歌曲标识符可以是编号的形式。所述标识符具有唯一性。所述歌曲标识符可以与该歌曲的排列属性相对应。
S402:对所述歌曲标识符对应的所述排列属性进行分词,得到关键词,记录所述关键词在所述排列属性中的位置偏移量。
计算机可以对所述歌曲标识符对应的所述排列属性进行分词,具体地,可以对所述排列属性逐字进行分词,所述排列属性中包含英文的,可以对所述英文逐单词进行分词。分词后可以得到关键词。例如排列属性中的歌曲名“忘情水”可以被逐字分成:关键词“忘”、“情”、“水”,歌曲名“To live&Die In TJ”可以被分为关键词“To”、“live”、“&”、“Die”、“In”、“TJ”。
计算机可以记录分词后每个关键词在所述排列属性中的位置偏移量。所述位置偏移量可以用于表示所述关键词在所述排列属性中的位置,例如可以用于表示所述关键词在所述排列属性中为第几个字或单词。所述排列属性分词后存在重复关键词的,由于每个关键词具有不同的位置偏移量,所述重复的词可以都保留。例如,歌曲ID为“1”的歌曲排列属性“忘情水忘情水”进行分词,可以得到两个关键词“忘”,其位置偏移量可以分别为1和4。
S403:根据所述关键词、所述歌曲标识符和所述关键词的位置偏移量,生成倒排索引表。
计算机根据所述关键词、所述歌曲标识符和所述关键词的位置偏移量可以生成倒排索引表。具体地,可以将所述关键词作为倒排索引表的索引词;可以将所述歌曲ID以及每个关键词在歌曲所述排列属性中的位置偏移量作为每个关键词的索引内容;所述索引词和索引词对应的索引内容可以生成倒排索引表。
上述实施例提供的建立音乐倒排索引的方法实施例与本申请搜索音乐的方法相对应,可以为本申请搜索音乐的方法中得到第一歌曲集合提供倒排索引表。
下面举个实例来说明本申请的搜索音乐的方法和建立倒排索引的方法:
假设曲库中有以下三首歌曲,歌曲的属性可以如表2所示。
表2歌曲排列属性信息
歌曲ID |
歌曲名 |
艺人名 |
专辑名 |
0 |
忘情水 |
刘德华 |
忘情水 |
1 |
一起走过的日子 |
刘德华 |
经典重现 |
2 |
她来听我的演唱会 |
张学友 |
友情歌 |
可以对所有歌曲的排列属性逐字或者逐单词进行分词,记录每个词所属的歌曲ID以及每个词在歌曲排列属性中的位置偏移量。
可以将所述词作为倒排索引表的索引词;可以将所述歌曲ID以及每个词在歌曲所述排列属性中的位置偏移量作为每个词的索引内容;所述索引词和所述词对应的索引内容可以生成倒排索引表,例如可以如表3所示。
表3中,第一列表示索引词,第二列表示索引内容。所述索引内容可以是用(A,B)的形式来表示,其中A可以表示歌曲ID,B可以表示所述索引词在歌曲排列属性的位置偏移量。为区分歌曲的排列属性中不同属性的字段,可以在两个不同属性的字段之间将位置偏移量增加一预设值,例如增加5。
表3倒排索引表
假设用户输入一个查询串“刘忘情”,逐字分词的结果可以是:查询词“刘”、“忘”、“情”。
根据表3的倒排索引,求取分词后所有查询词对应的结果,并对所述求取的倒排索引的结果求交集,可以得到歌曲ID为0的歌曲作为候选歌曲,同时可以得到每个查询词在所述候选歌曲排列属性的位置偏移量,如表4所示。
由表4信息可见,“忘”、“情”在歌曲ID为0的歌曲正排排列属性中位置相邻,则可以将“忘情”作为一个分段文本,查询词“刘”可以作为另一个分段文本。
表4查询词在候选歌曲中的位置偏移量
所述查询串“刘忘情”分成的两个文本分段“刘”“忘情”分别可以与艺人名、歌曲名部分精确匹配,同时查询词长度为3,可以设定歌曲“忘情水”与查询串的相关程度为1。对于假设的曲库数据,由于不存在与查询串相关程度为0的歌曲结果,则可以将与查询串的相关程度为1的歌曲“忘情水”存储至相关结果集合。
对所述相关结果集合中的歌曲计算歌曲权重。假设:取静态分加权因子α=50;文本分计算时路径权值因子b=50;限制最大文本分Wmax=30000;歌曲名、艺人名、演唱者、歌曲别名、艺人别名、专辑名、专辑别名的精确匹配权值分别为:10000,10000,9500,8000,7000,3600,3400。
查询串“刘忘情”的文本分段为2,分别为“刘”、“忘情”,将这两个文本分段分别与所述候选歌曲“忘情水”的排列属性进行匹配。按精确匹配的优先级顺序,分段文本“忘情”可以首先与歌曲名或艺人名作匹配,可以与歌曲名匹配成功;分段文本“刘”可以首先与歌曲名或艺人名作匹配,可以与艺人名匹配成功。
所述歌曲存在歌曲名和艺人名的精确匹配,取其中精确匹配权值较大的值,由于歌曲名和艺人名的精确匹配权值相同,则精确匹配权值的取值可以是Wexact=10000。
利用本申请提供的计算路径权值的方法可以计算路径权值Wpath,假设结果为Wpath=2300,则文本分的值可以是Wtext=Wexact+Wpath/50=10000+2300/50=10046。
假设歌曲“忘情水”的试听数为859000,则静态分的值可以是Wstatic=试听数/100=8590。
则所述歌曲“忘情水”的歌曲与查询串“刘忘情”的相关性权重可以是:
W=Wtext+50log(Wstatic)=10046+50*log(8590)=10242
当所述查询串对应搜索结果有多个歌曲时,每个歌曲分别按照上述方法计算歌曲与查询串的相关性权重,最后将多个歌曲按所述相关性权重进行降序排序,得到最终的搜索结果。
下面介绍本申请搜索音乐的装置的一个实施例。
图5是本申请一种搜索音乐的装置的一个实施例的模块图。如图5所示,所述搜索音乐的装置可以包括:查询串分词单元510、第一歌曲集合单元520、分段文本单元530、歌曲权重单元540和排序返回单元550。
其中,所述查询串分词单元510,可以用于接收查询串,对所述查询串进行分词,得到一个或多个查询词。
所述第一歌曲集合单元520,可以用于根据所述查询串分词单元510中的查询词,从歌曲倒排索引表中查找与所述查询词对应的歌曲标识符,对查询词对应的歌曲标识符求交集,得到候选的第一歌曲集合。
所述分段文本单元530,可以用于获取所述第一歌曲集合单元520中歌曲的排列属性,根据所述查询词在所述歌曲的排列属性中的位置偏移量,对所述查询串进行分段,得到一个或多个分段文本。
所述歌曲权重单元540,可以用于将所述分段文本单元530得到的分段文本与所述歌曲的排列属性进行匹配,基于所述匹配结果计算所述查询串与所述歌曲的相关性权重。
所述排序返回单元550,可以用于根据所述歌曲权重单元540得到的查询串与歌曲的相关性权重对所述候选的第一歌曲集合中的歌曲进行排序,得到第二歌曲集合,设置第二歌曲集合为所述查询串的搜索结果,并返回给用户。
图6是本申请搜索音乐的装置中歌曲权重单元的模块图。如图6所示,所述歌曲权重单元540可以包括:匹配结果单元541、精确匹配权值单元542、路径权值单元543、文本分单元544、静态分单元545和歌曲权重计算单元546。其中,
所述匹配结果单元541,可以用于将查询串与所述候选的第一歌曲集合中歌曲的排列属性进行匹配,得到查询串的分段文本与排列属性中字段的匹配结果。
所述精确匹配权值单元542,可以用于根据匹配结果单元541中的匹配结果,确定所述歌曲的精确匹配权值。
所述路径权值单元543,可以用于确定所述歌曲的路径权值。
所述文本分单元544,可以用于根据精确匹配权值单元542确定的精确匹配权值和路径权值单元543确定的路径权值计算所述歌曲的文本分。
所述静态分单元545,可以用于确定所述歌曲的静态分。
所述歌曲权重计算单元546,可以用于根据所述文本分单元544计算出的文本分和所述静态分单元545确定的静态分,计算所述查询串与所述歌曲的相关性权重。
进一步地,所述搜索音乐的装置还可以包括:文本数目筛选单元560。所述文本数目筛选单元560,可以用于计算所述分段文本单元530得到的分段文本的数目,所述分段文本的数目小于或等于第一预设值的,将所述歌曲存放至第三歌曲集合。
相应地,所述歌曲权重单元540,可以用于将所述文本数目筛选单元560筛选后的第三歌曲集合中歌曲对应的分段文本与所述歌曲的排列属性中的字段按照预定的顺序进行匹配,基于所述匹配结果计算所述歌曲的歌曲权重。
进一步地,所述搜索音乐的装置还可以包括:相关结果集合单元570。所述相关结果集合单元570,可以用于对所述分段文本单元530中候选的第一歌曲集合中的歌曲根据预设的第二规则进行判断,确定所述歌曲与查询串的相关程度,得到第四歌曲集合。
相应地,所述歌曲权重单元540,可以用于将所述相关结果集合单元570得到的第四歌曲集合中歌曲对应的分段文本与所述歌曲的排列属性中的字段按照预定的顺序进行匹配,基于所述匹配结果计算所述歌曲的歌曲权重。
图7是本申请搜索音乐的装置中相关结果集合单元的模块图。如图7所示,所述相关结果集合单元570可以包括:相关程度设定单元571和相关结果集合确定单元572。
其中,所述相关程度设定单元571,可以用于对所述候选的第一歌曲集合中的歌曲根据预设的第二规则进行判断,确定所述歌曲与查询串的相关程度。
相关结果集合确定单元572,可以用于将所述相关程度设定单元571中相关程度为相关的歌曲存储至相关结果集合,当所述相关程度设定单元571中没有相关程度为相关的歌曲时,将所述相关程度设定单元571中相关程度为可能相关的歌曲存储至相关结果集合。
上述实施例提供的搜索音乐的装置与本申请搜索音乐的方法实施例相对应,可以实现本申请方法实施例的技术效果。
图8是本申请一种建立倒排索引的装置一个实施例的模块图。如图8所示,所述建立倒排索引的装置可以包括:排列属性单元801、位置偏移量单元802和倒排索引单元803。
其中,所述排列属性单元801,可以用于记录歌曲排列属性,设置歌曲标识符。
所述位置偏移量单元802,可以用于对所述排列属性单元801中歌曲标识符对应的所述排列属性进行分词,得到关键词,记录所述关键词在所述排列属性中的位置偏移量。
所述倒排索引单元803,可以用于根据所述位置偏移量单元802中的关键词、歌曲标识符和关键词的位置偏移量,生成倒排索引表。
上述实施例提供的建立倒排索引的装置与本申请建立倒排索引的方法实施例相对应,可以实现本申请方法实施例的技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBoolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(JavaHardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby HardwareDescription Language)等,目前最普遍使用的是VHDL(Very-High-Speed IntegratedCircuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。该计算机软件产品可以包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。该计算机软件产品可以存储在内存中,内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括短暂电脑可读媒体(transitory media),如调制的数据信号和载波。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。