CN103020052A - 一种识别搜索需求的方法和装置 - Google Patents
一种识别搜索需求的方法和装置 Download PDFInfo
- Publication number
- CN103020052A CN103020052A CN2011102794346A CN201110279434A CN103020052A CN 103020052 A CN103020052 A CN 103020052A CN 2011102794346 A CN2011102794346 A CN 2011102794346A CN 201110279434 A CN201110279434 A CN 201110279434A CN 103020052 A CN103020052 A CN 103020052A
- Authority
- CN
- China
- Prior art keywords
- template
- word
- dictionary
- currently
- matched
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000007704 transition Effects 0.000 claims description 63
- 230000008569 process Effects 0.000 claims description 42
- 230000011218 segmentation Effects 0.000 claims description 40
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种识别搜索需求的方法和装置,在数据库中分别以特里(Trie)树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;该方法包括:接收到用户搜索请求(query)后,结合词典Trie树和模板Trie树对用户query进行匹配,确定匹配到的模板所对应的需求类型。通过本发明能够提高识别搜索需求的效率,降低了搜索对搜索引擎的性能所带来的计算压力。
Description
【技术领域】
本发明涉及计算机技术领域,特别涉及一种识别搜索需求的方法和装置。
【背景技术】
在搜索技术中,搜索引擎为了能够向用户返回准确的搜索结果,需要对用户搜索请求(query)进行需求识别,从而能够根据识别出的需求返回相应数据资源的搜索结果,或者根据识别出的需求对搜索结果进行相应形式的展现。
用户表达的某一类query通常符合某种模式,在现有的搜索需求识别技术中,通常将具有相同需求的query归纳起来形成一种或多种模板的形式,预先建立模板与搜索需求的对应关系。接收到用户query后,首先将用户query与词典进行匹配,根据词典的匹配结果确定出用户query中各词语的属性,利用确定的各词语的属性与模板逐一进行匹配,将匹配的模板对应的搜索需求识别为用户query的搜索需求。
然而,在现有的搜索需求中,在匹配过程中需要逐一与数据库中的词典和各模板进行匹配,而通常数据库中的词典和模板的数量很大,这就会造成识别用户query的搜索需求的效率很低,每天海量的搜索会对搜索引擎的性能带来很大的计算压力。
【发明内容】
有鉴于此,本发明提供了一种识别搜索需求的方法和装置,以便于提高识别搜索需求的效率,降低搜索对搜索引擎的性能所带来的压力。
具体技术方案如下:
一种识别搜索需求的方法,在数据库中分别以特里Trie树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;所述方法包括:
接收到用户搜索请求query后,结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型。
其中,所述词典Trie树中根节点指示初始状态,叶节点和部分中间节点指示匹配到的词语属性,节点与节点之间的转移条件为字符;
所述模板Trie树中根节点指示初始状态,叶节点指示模板匹配成功,节点和节点之间的转移条件包括:具体词语、词语属性、通配符或函数。
具体地,在数据库中以Trie树的形式存储词典得到词典Trie树包括:
A1、在数据库中建立词典Trie树的根节点,该根节点指示初始状态;
A2、从所述词典中获取一个尚未添加到词典Trie树中的词语,读取当前获取的词语中的第一个字符,将词典Trie树的根节点作为当前添加位置;
A3、判断当前读取到的字符是否已经存在于从当前添加位置开始的转移条件,如果是,执行步骤A4;否则,执行步骤A6;
A4、在词典Trie树中,将当前读取到的字符所存在的转移条件对应的下一级节点作为当前添加位置;
A5、判断当前读取到的词语是否存在下一个字符,如果是,读取当前获取的词语的下一个字符,转至步骤A3;否则,执行步骤A9;
A6、将当前读取到的字符添加为从当前添加位置开始的一个转移条件;
A7、判断当前获取的词语中是否存在下一个字符,如果是,执行步骤A8;否则,将当前获取的词语的属性添加到步骤A6所添加转移条件对应的下一级节点中,执行步骤A9;
A8、将步骤A6所添加转移条件对应的下一级节点作为当前添加位置,读取当前获取的词语中的下一个字符,转至步骤A3;
A9、结束当前获取的词语的添加过程,如果所述词典中存在尚未添加到词典Trie树中的词语,则转至步骤A2;否则,得到词典Trie树。
具体地,在数据库中以Trie树的形式存储模板得到模板Trie树包括:
B1、在数据库中建立模板Trie树的根节点,该根节点指示初始状态;
B2、获取一个尚未添加到模板Trie树中的模板,读取当前获取的模板中第一个模板槽的内容,将模板Trie树的根节点作为当前添加位置;
B3、判断当前读取到的模板槽的内容是否已经存在于当前添加位置开始的转移条件,如果是,执行步骤B4;否则执行步骤B7;
B4、在模板Trie树中,将当前读取到的模板槽的内容所在的转移条件对应的下一级节点作为当前添加位置;
B5、判断当前读取的模板槽是否存在下一个模板槽,如果是,读取下一个模板槽的内容,转至步骤B3;否则,执行步骤B6;
B6、在当前添加位置中添加模板匹配成功的指示,执行步骤B8;
B7、将当前读取的模板槽的内容添加为从当前添加位置开始的一个转移条件,将该转移条件对应的下一级节点作为当前添加位置,转至步骤B5;
B8、结束当前获取的模板的添加过程,如果存在尚未添加到模板Trie树的模板,则转至步骤B2;否则,得到模板Trie树。
更进一步地,在所述步骤B6中还可以包括:在当前添加位置中添加当前获取的模板所对应需求类型信息的出口,或者添加当前获取的模板所对应的需求类型信息。
其中,结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型具体包括:
C1、从所述用户query的第一个字符开始与所述词典Trie树进行匹配,记录每一轮词典Trie树匹配到的各项内容得到所述用户query的各种词全切分结果,所述词全切分结果包括词语以及词语的属性,且每一种词全切分结果中的词语构成所述用户query;
C2、逐一针对每一种词全切分结果分别在所述模板Trie树上进行匹配,确定匹配到的模板所对应的需求类型。
具体地,所述步骤C1可以包括:
C11、接收到所述用户query后,词典指针指向所述用户query的第一个字符;
C12、将词典Trie树的根节点作为当前匹配位置;
C13、判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果是,执行步骤C14;否则,执行步骤C17;
C14、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行步骤C15;否则,执行步骤C16;
C15、获取并记录当前确定的节点指示的词语属性和匹配到的字符构成的词语;
C16;判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符转至所述步骤C13;否则结束步骤C1;
C17、确定当前词典指针位置时记录的词语中的最短词语,判断该最短词语在用户query中是否存在下一个字符,如果是,将词典指针指向该最短词语在用户query中的下一个字符,读取词典指针指向的字符,转至步骤C12。
具体地,在所述步骤C2中针对每一种词全切分结果分别执行以下步骤:
C21、将模板指针指向所述用户query的第一个字符,将模板Trie树的根节点作为当前匹配到的节点;
C22、确定当前词全切分结果中以当前模板指针所指向的字符开始的词语;
C23、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行步骤C24;否则,结束对当前词全切分结果的模板匹配;
C24、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行步骤C25;否则,执行步骤C26;
C25、获取当前确定的节点指示的搜索需求,结束步骤C2;
C26、判断当前读取的词语在所述用户query中是否存在下一个字符,如果是,执行步骤C27;否则,结束步骤C2;
C27、将模板指针指向当前读取的词语在所述用户query中的下一个字符,转至步骤C22。
另外,结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型具体包括:
D1、将词典指针指向用户query的第一个字符;
D2、从词典指针指向的字符开始与所述词典Trie树进行匹配;
D3、一轮词典Trie树匹配结束后,将本轮词典Trie树匹配到的各项内容从上一轮模板Trie树匹配结束时匹配到的位置开始进行匹配,所述各项内容包括词语以及词语的属性,本轮模板Trie树匹配结束后,将词典指针指向本轮模板Trie树匹配所使用词语在用户query中的下一个字符,转至步骤D2开始下一轮词典Trie树的匹配,直至匹配到模板或者模板Trie树匹配失败;确定匹配到的模板所对应的需求类型。
所述步骤D2具体包括:
D21、将词典Trie树的根节点作为当前匹配位置;
D22、读取当前词典指针指向的字符,判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,本轮词典Trie树匹配结束,记录本轮词典Trie树匹配到的各项内容;如果是,执行步骤D23;
D23、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行步骤D24;否则,执行步骤D25;
D24、获取并记录当前确定的节点指示的词语属性以及匹配到的字符构成的词语,执行步骤D25;
D25、判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至所述步骤D22;否则,转至所述步骤D3。
在步骤D3中,分别读取本轮词典Trie树匹配到的各项内容,并分别针对读取的各项内容执行以下匹配过程:
D31、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,所述当前匹配到的节点的初始位置为所述模板Trie树的根节点;如果是,执行步骤D32;否则,结束针对当前读取的内容的模板Trie树匹配;
D32、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行步骤D33;否则,将当前确定的节点作为当前匹配位置,词典指针指向当前读取的内容中词语在用户query中的下一个字符,转至所述步骤D2;
D33、确定匹配到的模板对应的搜索需求,结束针对当前读取的内容的模板Trie树匹配。
具体地,判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件包括:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前读取的词语的属性与转移条件中的词语属性一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前读取的词语与转移条件中的具体词语一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是通配符,则确认两者匹配,从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语;或者,
如果从当前匹配到的节点开始的转移条件是函数,则调用所述函数从读取的词语开始在所述用户query中进行识别,如果识别结果满足预设的函数要求,则确认两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语。
一种识别搜索需求的装置,在数据库中分别以特里Trie树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;该装置包括:
请求接收单元,用于接收用户搜索请求query;
需求匹配单元,用于结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型。
其中,所述词典Trie树中根节点指示初始状态,叶节点和部分中间节点指示匹配到的词语属性,节点与节点之间的转移条件为字符;
所述模板Trie树中根节点指示初始状态,叶节点指示模板匹配成功,节点和节点之间的转移条件包括:具体词语、词语属性、通配符或函数。
更进一步地,该装置还可以包括:词典树建立单元,用于执行以下操作:
A1、在数据库中建立词典Trie树的根节点,该根节点指示初始状态;
A2、从所述词典中获取一个尚未添加到词典Trie树中的词语,读取当前获取的词语中的第一个字符,将词典Trie树的根节点作为当前添加位置;
A3、判断当前读取到的字符是否已经存在于从当前添加位置开始的转移条件,如果是,执行操作A4;否则,执行操作A6;
A4、在词典Trie树中,将当前读取到的字符所存在的转移条件对应的下一级节点作为当前添加位置;
A5、判断当前读取到的词语是否存在下一个字符,如果是,读取当前获取的词语的下一个字符,转至操作A3;否则,执行操作A9;
A6、将当前读取到的字符添加为从当前添加位置开始的一个转移条件;
A7、判断当前获取的词语中是否存在下一个字符,如果是,执行操作A8;否则,将当前获取的词语的属性添加到操作A6所添加转移条件对应的下一级节点中,执行操作A9;
A8、将操作A6所添加转移条件对应的下一级节点作为当前添加位置,读取当前获取的词语中的下一个字符,转至操作A3;
A9、结束当前获取的词语的添加过程,如果所述词典中存在尚未添加到词典Trie树中的词语,则转至操作A2;否则,得到词典Trie树。
该装置还包括:模板树建立单元,用于执行以下操作:
B1、在数据库中建立模板Trie树的根节点,该根节点指示初始状态;
B2、获取一个尚未添加到模板Trie树中的模板,读取当前获取的模板中第一个模板槽的内容,将模板Trie树的根节点作为当前添加位置;
B3、判断当前读取到的模板槽的内容是否已经存在于当前添加位置开始的转移条件,如果是,执行操作B4;否则执行操作B7;
B4、在模板Trie树中,将当前读取到的模板槽的内容所在的转移条件对应的下一级节点作为当前添加位置;
B5、判断当前读取的模板槽是否存在下一个模板槽,如果是,读取下一个模板槽的内容,转至操作B3;否则,执行操作B6;
B6、在当前添加位置中添加模板匹配成功的指示,执行操作B8;
B7、将当前读取的模板槽的内容添加为从当前添加位置开始的一个转移条件,将该转移条件对应的下一级节点作为当前添加位置,转至操作B5;
B8、结束当前获取的模板的添加过程,如果存在尚未添加到模板Trie树的模板,则转至操作B2;否则,得到模板Trie树。
更进一步地,所述模板树建立单元在执行所述操作B6时,还用于在当前添加位置中添加当前获取的模板所对应需求类型信息的出口,或者添加当前获取的模板所对应的需求类型信息。
其中,所述需求匹配单元具体包括:第一词典树匹配模块和第一模板树匹配模块;
所述第一词典树匹配模块,用于从所述用户query的第一个字符开始与所述词典Trie树进行匹配,记录每一轮词典Trie树匹配到的各项内容得到所述用户query的各种词全切分结果,所述词全切分结果包括词语以及词语的属性,且每一种词全切分结果中的词语构成所述用户query;
所述第一模板树匹配模块,用于逐一针对每一种词全切分结果分别在所述模板Trie树上进行匹配,确定匹配到的模板所对应的需求类型。
所述第一词典树匹配模块具体执行以下操作:
C11、接收到所述用户query后,词典指针指向所述用户query的第一个字符;
C12、将词典Trie树的根节点作为当前匹配位置;
C13、判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果是,执行操作C14;否则,执行操作C17;
C14、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行操作C15;否则,执行操作C16;
C15、获取并记录当前确定的节点指示的词语属性和匹配到的字符构成的词语;
C16;判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符转至所述操作C13;否则结束操作;
C17、确定当前词典指针位置时记录的词语中的最短词语,判断该最短词语在用户query中是否存在下一个字符,如果是,将词典指针指向该最短词语在用户query中的下一个字符,读取词典指针指向的字符,转至操作C12。
所述第一模板树匹配模块具体执行以下操作:
C21、将模板指针指向所述用户query的第一个字符,将模板Trie树的根节点作为当前匹配到的节点;
C22、确定当前词全切分结果中以当前模板指针所指向的字符开始的词语;
C23、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行操作C24;否则,结束对当前词全切分结果的模板匹配;
C24、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行操作C25;否则,执行操作C26;
C25、获取当前确定的节点指示的搜索需求,结束操作;
C26、判断当前读取的词语在所述用户query中是否存在下一个字符,如果是,执行操作C27;否则,结束操作;
C27、将模板指针指向当前读取的词语在所述用户query中的下一个字符,转至操作C22。
具体地,所述需求匹配单元可以包括:词典指针设置模块、第二词典树匹配模块和第二模板树匹配模块;
所述词典指针设置模块,用于将词典指针指向用户query的第一个字符;
所述第二词典树匹配模块,用于从词典指针指向的字符开始与所述词典Trie树进行匹配;
所述第二模板树匹配模块,用于在一轮词典Trie树匹配结束后,将所述第二词典树匹配模块本轮在词典Trie树匹配到的各项内容从上一轮模板Trie树匹配结束时匹配到的位置开始进行匹配,所述各项内容包括词语以及词语的属性,本轮模板Trie树匹配结束后,触发所述词典指针设置模块将词典指针指向本轮模板Trie树匹配所使用词语在用户query中的下一个字符,并触发所述第二词典树匹配模块开始下一轮词典Trie树的匹配,直至匹配到模板或者模板Trie树匹配失败;确定匹配到的模板所对应的需求类型。
其中,所述第二词典树匹配模块具体执行以下操作:
D21、将词典Trie树的根节点作为当前匹配位置;
D22、读取当前词典指针指向的字符,判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,本轮词典Trie树匹配结束,记录本轮词典Trie树匹配到的各项内容;如果是,执行操作D23;
D23、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行操作D24;否则,执行操作D25;
D24、获取并记录当前确定的节点指示的词语属性以及匹配到的字符构成的词语,执行操作D25;
D25、判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至所述操作D22;否则,本轮词典Trie树匹配结束。
具体地,所述第二模板树匹配模块分别读取所述第二词典树匹配模块本轮词典Tire树匹配到的各项内容,并分别针对读取的各项内容执行以下匹配操作:
D31、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,所述当前匹配到的节点的初始位置为所述模板Trie树的根节点;如果是,执行操作D32;否则,结束针对当前读取的内容的模板Trie树匹配;
D32、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行操作D33;否则,将当前确定的节点作为当前匹配位置,词典指针指向当前读取的内容中词语在用户query中的下一个字符,转至所述操作D2;
D33、确定匹配到的模板对应的搜索需求,结束针对当前读取的内容的模板Trie树匹配。
判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件包括:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前读取的词语的属性与转移条件中的词语属性一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前读取的词语与转移条件中的具体词语一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是通配符,则确认两者匹配,从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语;或者,
如果从当前匹配到的节点开始的转移条件是函数,则调用所述函数从读取的词语开始在所述用户query中进行识别,如果识别结果满足预设的函数要求,则确认两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语。
由以上技术方案可以看出,本发明通过Trie树的形式存储词典和需求识别模板,使得接收到用户query后,能够通过结合匹配词典Trie树和模板Trie树的方式确定匹配到的模板所对应的需求类型,相比较逐一与数据库中的词典和各模板进行匹配的方式,大大提高了识别搜索需求的效率,降低了搜索对搜索引擎的性能所带来的计算压力。
【附图说明】
图1为本发明实施例一提供的建立词典Trie树的流程图;
图2为本发明实施例一提供的词典Trie树的实例图;
图3为本发明实施例二提供的建立模板Trie树的流程图;
图4为本发明实施例二提供的模板Tire树的实例图;
图5为本发明实施例三提供的一种确定需求类型的方法流程图;
图6为本发明实施例四提供的另一种确定需求类型的方法流程图;
图7为本发明实施例五提供的一种装置结构图;
图8为本发明实施例五提供的另一种装置结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供的方法主要包括:在数据库中分别以特里(Trie)树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;接收到用户query后,利用词典Trie树和模板Trie树对该用户query进行匹配,确定匹配到的模板所对应的需求类型。
Trie树中包括层级结构的节点以及节点与节点之间的转移条件,其中,每一个节点指示状态信息,根节点指示初始状态。
在词典Trie树中,根节点指示初始状态,叶节点指示匹配到的词语属性。中间节点指示中间状态,也可能指示匹配到的词语属性,节点与节点之间的转移条件为字符。
在模板Trie树中,根节点指示初始状态,叶节点指示模板匹配成功,节点和节点之间的转移条件包括:词语属性、具体词语、通配符或函数。词语属性可以包括但不限于:词性、命名实体类型等。其中具体词语可以包括:常用的实体词或者助词、虚词等可忽略词。
首先通过实施例一和实施例二分别对词典Trie树的建立过程和模板Trie树的建立过程进行描述。
实施例一、
图1为本发明实施例一提供的建立词典Trie树的流程图,如图1所示,包括以下步骤:
步骤101:建立词典Trie树的根节点,该根节点指示初始状态。
在词典Trie树中,根节点仅是一个匹配的开始位置,因此指示的是初始状态。该根节点的建立仅需要在初始读取词典中的第一个词语时执行。
步骤102:从词典中获取一个尚未添加到词典Trie树中的词语,读取当前获取的词语中的第一个字符,将词典Trie树的根节点作为当前添加位置。
步骤103:判断当前读取到的字符是否已经存在于从当前添加位置开始的转移条件,如果是,执行步骤104;否则,执行步骤106。
步骤104:在词典Trie树中,将当前读取到的字符所存在的转移条件对应的下一级节点作为当前添加位置。
步骤105:判断当前获取到的词语中是否存在下一个字符,如果是,读取当前获取的词语中的下一个字符,转至步骤103;否则,结束当前获取的词语的添加过程,则转至步骤102。
实际上,在结束当前获取的词语的添加过程时,如果词典中存在尚未添加到词典Trie树中的词语,则转至步骤102;否则,结束建立词典Trie树的流程,得到词典Trie树。
步骤106:将当前读取到的字符添加为从当前添加位置开始的一个转移条件。
步骤107:判断当前获取的词语中是否存在下一个字符,如果是,执行步骤108;否则,将当前获取的词语的词语属性添加到步骤106所添加转移条件对应的下一级节点中,结束当前获取的词语的添加过程,转至步骤102。
同样,实际上,在结束当前获取的词语的添加过程时,如果词典中存在尚未添加到词典Trie树中的词语,则转至步骤102;否则,结束建立词典Trie树的流程,得到词典Trie树。
步骤108:将步骤106所添加转移条件对应的下一级节点作为当前添加位置,读取当前获取的词语中的下一个字符,转至步骤103。
举一个具体的实例,将词典中存在的“三江”、“三江口”和“三江县”三个词语添加到词典Trie树中,这三个词语在词典中的词语属性均为址名。
如图2所示,建立词典Trie树的根节点(图2中的节点1)后,获取词语“三江”,首先读取字符“三”,假设从根节点开始的转移条件中并不存在“三”,则将“三”添加为从根节点开始的一个转移条件,将该转移条件对应的下一级节点(图2中的节点2)作为当前添加位置。继续读取下一个字符“江”,假设从节点2开始的转移条件中不存在“江”,则将“江”添加为从节点2开始的一个转移条件,在该转移条件对应的下一级节点(即图2中的节点3)中添加词语属性地名,词语“三江”的添加完毕。
继续获取词语“三江口”,首先读取字符“三”,从根节点开始的转移条件中已经存在“三”,则将该转移条件对应的下一级节点(即图2中的节点2)作为当前添加位置。读取下一个字符“江”,从节点2开始的转移条件中已经包含字符“江”,则将该转移条件对应的下一级节点(即图2中的节点3)作为当前添加位置。读取下一个字符“口”,从节点3开始的转移条件中不存在字符“口”,将“口”添加为从节点3开始的转移条件,并在该转移条件对应的下一级节点(即图2中的节点4)中添加词语属性地名,至此,“三江口”的添加过程结束。
“三江县”的添加过程与“三江口”类似,在此不再赘述,最终这三个词语在词典Trie树中的状况如图2所示。通过上述方法能够将词典中所有的词语均在一个词典Trie树中展现,所有词语均共用一个根节点。后续在利用词典Trie树进行词语匹配时,均从词典Trie树的根节点开始。
至此实施例一所示流程结束。
实施例二、
图3为本发明实施例二提供的建立模板Trie树的流程图,该过程利用预先存在的各模板与需求类型信息之间的对应关系形成模板Trie树,如图3所示,包括以下步骤:
步骤301:建立模板Trie树的根节点,该根节点指示初始状态。
在模板Trie树中,根节点仅是一个匹配的开始位置,因此指示的是初始状态。该根节点的建立仅需要在初始读取模板中的第一个模板时执行。
步骤302:获取一个尚未添加到模板Trie树中的模板,读取当前获取的模板中第一个模板槽的内容,将模板Trie树的根节点作为当前添加位置。
模板中各模板槽的内容可以包括但不限于:词语属性、具体词语、通配符或者函数。在是通配符时,还可以同时指示通配符的长度。
步骤303:判断当前读取到的模板槽的内容是否已经存在于从当前添加位置开始的转移条件,如果是,执行步骤304;否则,执行步骤307。
步骤304:在模板Trie树中,将当前读取到的模板槽的内容所在的转移条件对应的下一级节点作为当前添加位置。
步骤305:判断当前获取的模板槽是否存在下一个模板槽,如果是,读取下一个模板槽的内容,转至步骤303;否则,执行步骤306。
步骤306:在当前添加位置中添加模板匹配成功的指示,结束当前获取的模板的添加过程,转至步骤302。
实际上,在结束当前获取的模板的添加过程后,如果存在尚未添加到模板Trie树的模板,则转至步骤302;否则,结束模板Trie树的建立过程,得到模板Trie树。
步骤307:将当前获取的模板槽的内容添加为从当前添加位置开始的一个转移条件,将该转移条件对应的下一级节点作为当前添加位置,转至步骤305。
在上述的步骤306中,除了在当前添加位置中添加模板匹配成功的指示之外,还可以进一步添加一个指向该模板所对应需求类型信息的出口,或者直接添加该模板所对应需求类型信息。
举一个具体的实例,假设要将模板:[地名][到][地名]、[机构名][到][机构名]添加到Trie树中,这两个模板分别对应列车查询需求和地图线路查询需求。
如图4所示,建立模板Trie树的根节点(图4中的节点1)后,获取模板:[地名][到][地名],首先读取第一个模板槽的内容“地名”(是一个词语属性),假设从根节点开始的转移条件中并不存在词语属性“地名”,则将“地名”添加为从根节点开始的一个转移条件,将该转移条件对应的下一级节点(图4中的节点2)作为当前添加位置。继续读取下一个模板槽的内容“到”,假设从节点2开始的转移条件中不存在具体的词语“到”,则将“到”添加为从节点2开始的一个转移条件,将该转移条件对应的下一级节点(即图4中的节点4)作为当前添加位置。继续读取下一个模板槽的内容“地名”,假设从节点4开始的转移条件中不存在词语属性“地名”,则将“地名”添加为从节点4开始的一个转移条件,在该转移条件的下一级节点(图4中的节点6)中指示模板匹配成功,且添加需求类型信息为:列车查询需求类型。
继续获取下一个模板:[机构名][到][机构名],首先读取第一个模板槽的内容“结构名”(是一个词语属性),假设从根节点开始的转移条件中并不存在词语属性“结构名”,则将“结构名”添加为从根节点开始的一个转移条件,将该转移条件对应的下一级节点(图4中的节点3)作为当前添加位置。继续读取下一个模板槽的内容“到”,假设从节点3开始的转移条件中不存在具体的词语“到”,则将“到”添加为从节点3开始的一个转移条件,将该转移条件对应的下一级节点(即图4中的节点5)作为当前添加位置。继续读取下一个模板槽的内容“机构名”,假设从节点5开始的转移条件中不存在词语属性“机构名”,则将“机构名”添加为从节点5开始的一个转移条件,在该转移条件的下一级节点(图4中的节点7)中指示模板匹配成功,且添加需求类型信息为:地图线路查询需求类型。
至此实施例二的过程结束。
在利用词典Trie树和模板Trie树对用户query进行匹配时,实际上是利用词典Trie树对用户query进行词全切分处理,将用户query进行词全切分处理的结果与模板Trie树进行匹配,从而得到与用户query匹配的模板,并确定匹配到的模板对应的需求类型。
其中,利用词典Trie树的匹配和利用模板Trie树的匹配可以先后进行,即先利用词典Trie树对用户query进行词全切分处理完毕后,再进行模板Trie树的匹配;也可以交替进行,即每执行一轮词典Trie树的匹配时,就将本轮切分出的词语在模板Trie树中进行下一个节点的匹配,匹配到模板Trie树的下一个节点后,再回到词典Trie树进行下一轮的匹配。下面通过实施例三和实施例四对上述两种匹配方式进行详细描述。
实施例三、
在该实施例中采用先对用户query进行词典Trie树的匹配进行词全切分处理完毕后,再利用模板Trie树进行匹配确定需求类型的方式。图5为本发明实施例三提供的一种确定需求类型的方法流程图,如图5所示,该方法可以包括以下步骤:
步骤501:接收用户query,词典指针指向用户query的第一个字符,读取当前词典指针指向的字符。
步骤502:将词典Trie树的根节点作为当前匹配位置。
步骤503:判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,则执行步骤507;如果是,执行步骤504。
步骤504:确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行步骤505;否则,执行步骤506。
步骤505:获取并记录当前确定的节点指示的词语属性和匹配到的字符构成的词语,执行步骤506。
步骤506:判断当前读取的字符在用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至步骤503;否则,执行步骤508。
步骤507:确定当前词典指针位置时记录的词语中的最短词语,判断该最短词语在用户query中是否存在下一个字符,如果是,将词典指针指向该最短词语在用户query中的下一个字符,读取词典指针指向的字符,转至步骤502;否则,执行步骤508。
步骤508:词典Trie树的匹配过程结束,利用从该用户query中记录的词语及其属性得到用户query的各种词全切分结果,各种词全切分结果中的词语构成整个用户query。
逐一针对各种词全切分结果分别执行以下模板Trie树的匹配过程。
步骤509:将模板指针指向用户query的第一个字符,将模板Trie树的根节点作为当前匹配到的节点。
步骤510:确定当前词全切分结果中以当前模板指针所指向的字符开始的词语。
步骤511:判断当前读取的词语或其属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行步骤512;否则,结束对当前词全切分结果的模板匹配流程。
在本步骤中,判断当前读取的内容是否匹配到模板Tire树中从当前匹配到的节点开始的转移条件时,可以存在以下几种情况:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前读取的内容中词语属性与转移条件中的词语属性一致,则确定两者匹配。
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前读取的内容中词语与转移条件中的具体词语一致,则确定两者匹配。
如果从当前匹配到的节点开始的转移条件是通配符,则确认两者匹配,在这种情况下,可以从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语后,再执行步骤512。
假设用户query为“从三江口到三江的火车”,如果当前读取的词语“三江口”,转移条件是指示长度为4个词语的通配符时,直接确认两者匹配,但会将“三江口到”作为当前读取的词语,下一步开始从“三江”对模板Trie树进行匹配。
如果从当前匹配到的节点开始的转移条件是函数,则调用该函数从读取的词语开始在query中进行识别,如果识别结果满足预设的函数要求,则确定两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语后,再执行步骤512。
以识别数字的函数为转移条件为例,如果用户query为“13100000000的归属地”,如果当前读取的词语从数字“1”开始,那么调用该函数从“1”开始识别,识别出满足数字的函数要求,返回数字长度作为识别结果,识别完成后,13100000000作为当前读取的词语,接下来从“的”开始匹配。
步骤512:确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行步骤513;否则,执行步骤514。
步骤513:获取当前确定的节点指示的搜索需求,结束流程。
步骤514:判断当前读取的词语在用户query中是否存在下一个字符,如果是,执行步骤515;否则,结束流程。
步骤515:将模板指针指向当前读取的词语在用户query中的下一个字符,转至步骤510。
举一个具体的实例,假设接收到的用户query为“三江口到三江的火车”。
首先利用图2所示的词典Trie树进行匹配,词典指针指向用户query的第一个字符,即“三”,读取“三”。从根节点1开始,按顺序读取用户query中未匹配过的字符,即从“三”开始,能够匹配到从根节点1开始的转移条件,到节点2,在读取“江”,能够匹配到从节点2开始的转移条件,到节点3。由于节点3具有词语属性,则获取并记录“三江”及其对应的词语属性(即地名)。继续读取“口”,能够匹配到从节点3开始的转移条件“口”,到节点4,由于节点4具有词语属性,则获取并记录“三江口”及其对应的词语属性(即地名)。
在当前词典指针位置时记录的词语中最短词语为“三江”,因此,将词典指针指向“三江”在用户query中的下一个字符,即“口”,重复进行上述过程与词典Trie树进行匹配后,将用户query进行分词后得到的各种分词词全切分的结果为:三江(地名)、口(名词)、到(动词)、三江(地名)、的(助词)、火车(名词);三江口(地名)、到(动词)、三江(地名)、的(助词)、火车(名词)口(名词)、到(动词)、三江(地名)、的(助词)、火车(名词)。
对各种全切分结果与模板Trie树进行匹配,首先针对第一种词全切分结果:将模板指针指向用户query的第一个字符“三”,确定词全切分结果中以当前模板指针所指向的字符开始的词语“三江”,首先对“三江”从根节点即节点1开始匹配转移条件,“三江”匹配到转移条件后进入节点2,然后将模板指针指向“三江”的下一个字符“口”,确定词全切分结果中以“口”为首字符的词语及其属性,与以节点2开始的转移条件开始匹配,匹配失败。
针对第二种词全切分结果与模板Trie树进行匹配,对“三江口”从根节点即节点1开始匹配转移条件,匹配到后转向节点2,然后将模板指针指向“三江口”的下一个字符“到”,确定词全切分结果中以“到”及其属性,即将“到”及其属性与从节点2的转移条件开始匹配,转至节点4。将模板指针指向“到”的下一个字符“三”,确定以该字符为首的词语“三江”,匹配从节点4开始的转移条件,匹配到后进入节点6,模板匹配成功,确定需求类型为列车查询。
实施例四、
在该实施例中采用词典Trie树与模板Trie树交替匹配确定需求类型的方式。图6为本发明实施例四提供的另一种确定需求类型的方法流程图,如图6所示,该方法可以包括以下步骤:
步骤601:接收到用户query后,将模板Trie树的根节点作为当前匹配到的节点,词典指针指向用户query的第一个字符。
步骤602:将词典Trie树的根节点作为当前匹配位置。
步骤603:读取当前词典指针指向的字符,判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,则执行步骤607;如果是,执行步骤604。
步骤604:确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行步骤605;否则,执行步骤606。
步骤605:获取并记录当前确定的节点指示的词语属性以及匹配到的字符构成的词语,执行步骤606。
步骤606:判断当前读取的字符在用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至步骤603;否则,转至步骤608。
步骤607:退出本次词典Trie树的匹配,获取本次通过词典Trie树记录的各项内容,其中各项内容包括词语及其词语属性,分别读取记录的各项内容并分别针对读取的各项内容执行以下模板树的匹配过程,即开始执行步骤608。
步骤608:转入模板Trie树的匹配,判断当前读取的词语及其词语属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行步骤609;如果否,结束针对当前读取的词语的模板Trie树匹配。
在本步骤中,在判断最新获取到的词语或者词语属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件时,可以存在以下几种情况:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前获取到的词语属性与转移条件中的词语属性一致,则确定两者匹配。
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前获取到的词语与转移条件中的具体词语一致,则确定两者匹配。
如果从当前匹配到的节点开始的转移条件是通配符,则直接确认两者匹配,在这种情况下,可以从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语后,再执行步骤609。
同样假设用户query为“从三江口到三江的火车”,如果当前读取的词语“三江口”,转移条件是指示长度为4个词语的通配符时,直接确认两者匹配,但会将“三江口到”作为当前读取的词语,如果模板Trie树中的下一级节点没有指示模板匹配成功的话,下一步从“三江口到”之后的“三”开始转至词典Trie树的匹配。
如果从当前匹配到的节点开始的转移条件是函数,则调用该函数从读取的词语开始在query中进行识别,如果识别结果满足预设的函数要求,则确定两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语后,再执行步骤609。
步骤609:确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行步骤610;否则,将当前确定的节点作为当前匹配位置,词典指针指向当前读取的词语在用户query中的下一个字符,转至步骤602。
步骤610:确定匹配到的模板对应的搜索需求,结束针对当前读取的词语的模板Trie树匹配。
仍以接收到的用户query为“三江口到三江的火车”为例,首先进入模板Trie树的根节点。进入词典Trie树的根节点,首先利用图2所示的词典Trie树进行匹配,从根节点1开始,按顺序读取用户query中未匹配过的字符,即从“三”开始,能够匹配到从根节点1开始的转移条件,到节点2,在读取“江”,能够匹配到从节点2开始的转移条件,到节点3。由于节点3具有词语属性,则获取并记录“三江”及其对应的词语属性(即地名)。继续读取“口”,能够匹配到从节点3开始的转移条件“口”,到节点4,由于节点4具有词语属性,则获取并记录“三江口”及其对应的词语属性(即地名)。“到”不能继续匹配词典Trie树,退出词典Trie树的匹配流程,进入模板Trie树。
由于本次词典Trie树的匹配得到了两项内容:“三江(地名)”和“三江口(地名)”,因此,因此分别针对“三江(地名)”和“三江口(地名)”进入模板Trie树的匹配,即存在两个分支的模板Trie树的匹配过程。
第一个分支的模板Trie树的匹配过程,将“三江(地名)”与从模板Trie树的根节点开始的转移条件开始匹配,进入节点2,由于节点2没有指示模板匹配成功,将节点2作为当前匹配位置后,将词典指针指向当前读取的词语在用户query中的下一个字符,回到词典Trie树的根节点。读取当前词典指针指向的字符,即“口”,判断当前读取的字符是否匹配到从词典Trie树根节点开始的转移条件,匹配出“口”后,退出本次词典Trie树的匹配,由于本次通过词典Trie树记录的内容为“口(名词)”,转入模板Trie树的匹配后,无法匹配到模板,结束该分支的匹配。
第二个分支的模板Trie树匹配过程,将“三江口(地名)”与从模板Trie树的根节点开始的转移条件开始匹配,进入节点2,由于节点2没有指示模板匹配成功,将节点2作为当前匹配位置后,将词典指针指向当前读取的词语在用户query中的下一个字符,回到词典Trie树的根节点。读取当前词典指针指向的字符,即“到”,判断当前读取的字符是否匹配到从词典Trie树根节点开始的转移条件,匹配出“到”后,退出本次词典Trie树的匹配,由于本次通过词典Trie树记录的内容为“到”,转入模板Trie树,由于当前匹配到的节点为节点2,“到”匹配到从节点2开始的转移条件,进入节点4。将节点4作为当前匹配到的节点,将词典指针指向当前读取的词语在用户query中的下一个字符即“三”,再回到词典Trie树的根节点。通过词典Trie树的匹配能够匹配出“三江(地名)”,转入模板Trie树,能够匹配到从节点4开始的转移条件,进入节点6。由于节点6指示模板匹配成功,确定该用户query的需求类型为列车查询。
以上是对本发明所提供方法进行的描述,下面结合实施例五对本发明所提供的识别搜索需求的装置进行详细描述。
实施例五、
图7为本发明实施例五提供的装置结构图,预先在数据库中分别以Trie树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;如图7所示,该装置可以包括:请求接收单元710和需求匹配单元720。
请求接收单元710接收用户query。
需求匹配单元720结合词典Trie树和模板Trie树对用户query进行匹配,确定匹配到的模板所对应的需求类型。
其中,词典Trie树中根节点指示初始状态,叶节点和部分中间节点指示匹配到的词语属性,节点与节点之间的转移条件为字符。
模板Trie树中根节点指示初始状态,叶节点指示模板匹配成功,节点和节点之间的转移条件可以包括但不限于:具体词语、词语属性、通配符或函数。
为了实现词典Trie树的建立,该装置还可以包括:词典树建立单元730,用于执行以下操作:
操作A1、在数据库中建立词典Trie树的根节点,该根节点指示初始状态。
操作A2、从词典中获取一个尚未添加到词典Trie树中的词语,读取当前获取的词语中的第一个字符,将词典Trie树的根节点作为当前添加位置。
操作A3、判断当前读取到的字符是否已经存在于从当前添加位置开始的转移条件,如果是,执行操作A4;否则,执行操作A6。
操作A4、在词典Trie树中,将当前读取到的字符所存在的转移条件对应的下一级节点作为当前添加位置。
操作A5、判断当前读取到的词语是否存在下一个字符,如果是,读取当前获取的词语的下一个字符,转至操作A3;否则,执行操作A9。
操作A6、将当前读取到的字符添加为从当前添加位置开始的一个转移条件。
操作A7、判断当前获取的词语中是否存在下一个字符,如果是,执行操作A8;否则,将当前获取的词语的属性添加到操作A6所添加转移条件对应的下一级节点中,执行操作A9。
操作A8、将操作A6所添加转移条件对应的下一级节点作为当前添加位置,读取当前获取的词语中的下一个字符,转至操作A3。
操作A9、结束当前获取的词语的添加过程,如果词典中存在尚未添加到词典Trie树中的词语,则转至操作A2;否则,得到词典Trie树。
为了实现模板树的建立,该装置还可以包括:模板树建立单元740,用于执行以下操作:
操作B1、在数据库中建立模板Trie树的根节点,该根节点指示初始状态。
操作B2、获取一个尚未添加到模板Trie树中的模板,读取当前获取的模板中第一个模板槽的内容,将模板Trie树的根节点作为当前添加位置。
操作B3、判断当前读取到的模板槽的内容是否已经存在于当前添加位置开始的转移条件,如果是,执行操作B4;否则执行操作B7。
操作B4、在模板Trie树中,将当前读取到的模板槽的内容所在的转移条件对应的下一级节点作为当前添加位置。
操作B5、判断当前读取的模板槽是否存在下一个模板槽,如果是,读取下一个模板槽的内容,转至操作B3;否则,执行操作B6。
操作B6、在当前添加位置中添加模板匹配成功的指示,执行操作B8。
操作B7、将当前读取的模板槽的内容添加为从当前添加位置开始的一个转移条件,将该转移条件对应的下一级节点作为当前添加位置,转至操作B5。
操作B8、结束当前获取的模板的添加过程,如果存在尚未添加到模板Trie树的模板,则转至操作B2;否则,得到模板Trie树。
在本发明实施例中可以在通过查找模板Trie树确定出匹配的模板后,在通过预先建立的模板与需求类型的对应关系识别出用户query的需求类型。优选地,模板树建立单元也可以在执行操作B6时,在当前添加位置中添加当前获取的模板所对应需求类型信息的出口,或者添加当前获取的模板所对应的需求类型信息,这样就能够通过查找模板Trie树直接确定出对应的需求类型。
其中,需求匹配单元720可以存在两种结构:
第一种结构,需求匹配单元720可以首先通过匹配词典Trie树对用户query进行词全切分完毕后,再通过匹配模板Trie树确定匹配的模板。此时,需求匹配单元720可以具体包括:第一词典树匹配模块721和第一模板树匹配模块722。
第一词典树匹配模块721从用户query的第一个字符开始与词典Trie树进行匹配,记录每一轮词典Trie树匹配到的各项内容得到用户query的各种词全切分结果,词全切分结果包括词语以及词语的属性,且每一种词全切分结果中的词语构成用户query。
第一模板树匹配模块722逐一针对每一种词全切分结果分别在模板Trie树上进行匹配,确定匹配到的模板所对应的需求类型。
其中,上述第一词典树匹配模块721具体执行以下操作:
操作C11、接收到用户query后,词典指针指向用户query的第一个字符。
操作C12、将词典Trie树的根节点作为当前匹配位置。
操作C13、判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果是,执行操作C14;否则,执行操作C17。
操作C14、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行操作C15;否则,执行操作C16。
操作C15、获取并记录当前确定的节点指示的词语属性和匹配到的字符构成的词语。
操作C16;判断当前读取的字符在用户query中是否存在下一个字符,如果是,读取下一个字符转至操作C13;否则结束操作。
操作C17、确定当前词典指针位置时记录的词语中的最短词语,判断该最短词语在用户query中是否存在下一个字符,如果是,将词典指针指向该最短词语在用户query中的下一个字符,读取词典指针指向的字符,转至操作C12。
另外,第一模板树匹配模块722具体执行以下操作:
操作C21、将模板指针指向用户query的第一个字符,将模板Trie树的根节点作为当前匹配到的节点。
操作C22、确定当前词全切分结果中以当前模板指针所指向的字符开始的词语。
操作C23、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行操作C24;否则,结束对当前词全切分结果的模板匹配。
操作C24、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行操作C25;否则,执行操作C26。
操作C25、获取当前确定的节点指示的搜索需求,结束操作。
操作C26、判断当前读取的词语在用户query中是否存在下一个字符,如果是,执行操作C27;否则,结束操作。
操作C27、将模板指针指向当前读取的词语在用户query中的下一个字符,转至操作C22。
第二种结构:需求匹配单元720可以交替匹配词典Trie树和模板Trie树,即每执行一轮词典Trie树的匹配时,就将本轮切分出的词语在模板Trie树中进行下一个节点的匹配,匹配到模板Trie树的下一个节点后,再回到词典Trie树进行下一轮的匹配。此时,如图8所示,需求匹配单元720可以具体包括:词典指针设置模块821、第二词典树匹配模块822和第二模板树匹配模块823。
词典指针设置模块821将词典指针指向用户query的第一个字符。
第二词典树匹配模块822从词典指针指向的字符开始与词典Trie树进行匹配。
第二模板树匹配模块823在一轮词典Trie树匹配结束后,将第二词典树匹配模块822本轮在词典Trie树匹配到的各项内容从上一轮模板Trie树匹配结束时匹配到的位置开始进行匹配,各项内容包括词语以及词语的属性,本轮模板Trie树匹配结束后,触发词典指针设置模块821将词典指针指向本轮模板Trie树匹配所使用词语在用户query中的下一个字符,并触发第二词典树匹配模块822开始下一轮词典Trie树的匹配,直至匹配到模板或者模板Trie树匹配失败;确定匹配到的模板所对应的需求类型。
其中,第二词典树匹配模块822可以具体执行以下操作:
操作D21、将词典Trie树的根节点作为当前匹配位置。
操作D22、读取当前词典指针指向的字符,判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,本轮词典Trie树匹配结束,记录本轮词典Trie树匹配到的各项内容;如果是,执行操作D23。
操作D23、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行操作D24;否则,执行操作D25。
操作D24、获取并记录当前确定的节点指示的词语属性以及匹配到的字符构成的词语,执行操作D25。
操作D25、判断当前读取的字符在用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至操作D22;否则,本轮词典Trie树匹配结束。
另外,第二模板树匹配模块823分别读取第二词典树匹配模块822本轮词典Tire树匹配到的各项内容,并分别针对读取的各项内容执行以下匹配操作:
操作D31、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,当前匹配到的节点的初始位置为模板Trie树的根节点;如果是,执行操作D32;否则,结束针对当前读取的内容的模板Trie树匹配。
操作D32、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行操作D33;否则,将当前确定的节点作为当前匹配位置,词典指针指向当前读取的内容中词语在用户query中的下一个字符,转至操作D2。
操作D33、确定匹配到的模板对应的搜索需求,结束针对当前读取的内容的模板Trie树匹配。
其中,第一种结构中的第一模板树匹配模块722和第二种结构中的第二模板树匹配模块823在判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件时,包括以下情况中的至少一种:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前读取的词语的属性与转移条件中的词语属性一致,则确定两者匹配。
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前读取的词语与转移条件中的具体词语一致,则确定两者匹配。
如果从当前匹配到的节点开始的转移条件是通配符,则确认两者匹配,从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语。
如果从当前匹配到的节点开始的转移条件是函数,则调用函数从读取的词语开始在用户query中进行识别,如果识别结果满足预设的函数要求,则确认两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (24)
1.一种识别搜索需求的方法,其特征在于,在数据库中分别以特里Trie树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;所述方法包括:
接收到用户搜索请求query后,结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型。
2.根据权利要求1所述的方法,其特征在于,所述词典Trie树中根节点指示初始状态,叶节点和部分中间节点指示匹配到的词语属性,节点与节点之间的转移条件为字符;
所述模板Trie树中根节点指示初始状态,叶节点指示模板匹配成功,节点和节点之间的转移条件包括:具体词语、词语属性、通配符或函数。
3.根据权利要求1或2所述的方法,其特征在于,在数据库中以Trie树的形式存储词典得到词典Trie树具体包括:
A1、在数据库中建立词典Trie树的根节点,该根节点指示初始状态;
A2、从所述词典中获取一个尚未添加到词典Trie树中的词语,读取当前获取的词语中的第一个字符,将词典Trie树的根节点作为当前添加位置;
A3、判断当前读取到的字符是否已经存在于从当前添加位置开始的转移条件,如果是,执行步骤A4;否则,执行步骤A6;
A4、在词典Trie树中,将当前读取到的字符所存在的转移条件对应的下一级节点作为当前添加位置;
A5、判断当前读取到的词语是否存在下一个字符,如果是,读取当前获取的词语的下一个字符,转至步骤A3;否则,执行步骤A9;
A6、将当前读取到的字符添加为从当前添加位置开始的一个转移条件;
A7、判断当前获取的词语中是否存在下一个字符,如果是,执行步骤A8;否则,将当前获取的词语的属性添加到步骤A6所添加转移条件对应的下一级节点中,执行步骤A9;
A8、将步骤A6所添加转移条件对应的下一级节点作为当前添加位置,读取当前获取的词语中的下一个字符,转至步骤A3;
A9、结束当前获取的词语的添加过程,如果所述词典中存在尚未添加到词典Trie树中的词语,则转至步骤A2;否则,得到词典Trie树。
4.根据权利要求1或2所述的方法,其特征在于,在数据库中以Trie树的形式存储模板得到模板Trie树具体包括:
B1、在数据库中建立模板Trie树的根节点,该根节点指示初始状态;
B2、获取一个尚未添加到模板Trie树中的模板,读取当前获取的模板中第一个模板槽的内容,将模板Trie树的根节点作为当前添加位置;
B3、判断当前读取到的模板槽的内容是否已经存在于当前添加位置开始的转移条件,如果是,执行步骤B4;否则执行步骤B7;
B4、在模板Trie树中,将当前读取到的模板槽的内容所在的转移条件对应的下一级节点作为当前添加位置;
B5、判断当前读取的模板槽是否存在下一个模板槽,如果是,读取下一个模板槽的内容,转至步骤B3;否则,执行步骤B6;
B6、在当前添加位置中添加模板匹配成功的指示,执行步骤B8;
B7、将当前读取的模板槽的内容添加为从当前添加位置开始的一个转移条件,将该转移条件对应的下一级节点作为当前添加位置,转至步骤B5;
B8、结束当前获取的模板的添加过程,如果存在尚未添加到模板Trie树的模板,则转至步骤B2;否则,得到模板Trie树。
5.根据权利要求4所述的方法,其特征在于,在所述步骤B6中还包括:在当前添加位置中添加当前获取的模板所对应需求类型信息的出口,或者添加当前获取的模板所对应的需求类型信息。
6.根据权利要求1所述的方法,其特征在于,结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型具体包括:
C1、从所述用户query的第一个字符开始与所述词典Trie树进行匹配,记录每一轮词典Trie树匹配到的各项内容得到所述用户query的各种词全切分结果,所述词全切分结果包括词语以及词语的属性,且每一种词全切分结果中的词语构成所述用户query;
C2、逐一针对每一种词全切分结果分别在所述模板Trie树上进行匹配,确定匹配到的模板所对应的需求类型。
7.根据权利要求6所述的方法,其特征在于,所述步骤C1具体包括:
C11、接收到所述用户query后,词典指针指向所述用户query的第一个字符;
C12、将词典Trie树的根节点作为当前匹配位置;
C13、判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果是,执行步骤C14;否则,执行步骤C17;
C14、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行步骤C15;否则,执行步骤C16;
C15、获取并记录当前确定的节点指示的词语属性和匹配到的字符构成的词语;
C16;判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符转至所述步骤C13;否则结束步骤C1;
C17、确定当前词典指针位置时记录的词语中的最短词语,判断该最短词语在用户query中是否存在下一个字符,如果是,将词典指针指向该最短词语在用户query中的下一个字符,读取词典指针指向的字符,转至步骤C12。
8.根据权利要求6所述的方法,其特征在于,在所述步骤C2中针对每一种词全切分结果分别执行以下步骤:
C21、将模板指针指向所述用户query的第一个字符,将模板Trie树的根节点作为当前匹配到的节点;
C22、确定当前词全切分结果中以当前模板指针所指向的字符开始的词语;
C23、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行步骤C24;否则,结束对当前词全切分结果的模板匹配;
C24、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行步骤C25;否则,执行步骤C26;
C25、获取当前确定的节点指示的搜索需求,结束步骤C2;
C26、判断当前读取的词语在所述用户query中是否存在下一个字符,如果是,执行步骤C27;否则,结束步骤C2;
C27、将模板指针指向当前读取的词语在所述用户query中的下一个字符,转至步骤C22。
9.根据权利要求1所述的方法,其特征在于,结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型具体包括:
D1、将词典指针指向用户query的第一个字符;
D2、从词典指针指向的字符开始与所述词典Trie树进行匹配;
D3、一轮词典Trie树匹配结束后,将本轮词典Trie树匹配到的各项内容从上一轮模板Trie树匹配结束时匹配到的位置开始进行匹配,所述各项内容包括词语以及词语的属性,本轮模板Trie树匹配结束后,将词典指针指向本轮模板Trie树匹配所使用词语在用户query中的下一个字符,转至步骤D2开始下一轮词典Trie树的匹配,直至匹配到模板或者模板Trie树匹配失败;确定匹配到的模板所对应的需求类型。
10.根据权利要求9所述的方法,其特征在于,所述步骤D2具体包括:
D21、将词典Trie树的根节点作为当前匹配位置;
D22、读取当前词典指针指向的字符,判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,本轮词典Trie树匹配结束,记录本轮词典Trie树匹配到的各项内容;如果是,执行步骤D23;
D23、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行步骤D24;否则,执行步骤D25;
D24、获取并记录当前确定的节点指示的词语属性以及匹配到的字符构成的词语,执行步骤D25;
D25、判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至所述步骤D22;否则,转至所述步骤D3。
11.根据权利要求9所述的方法,其特征在于,在步骤D3中,分别读取本轮词典Trie树匹配到的各项内容,并分别针对读取的各项内容执行以下匹配过程:
D31、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,所述当前匹配到的节点的初始位置为所述模板Trie树的根节点;如果是,执行步骤D32;否则,结束针对当前读取的内容的模板Trie树匹配;
D32、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行步骤D33;否则,将当前确定的节点作为当前匹配位置,词典指针指向当前读取的内容中词语在用户query中的下一个字符,转至所述步骤D2;
D33、确定匹配到的模板对应的搜索需求,结束针对当前读取的内容的模板Trie树匹配。
12.根据权利要求8或11所述的方法,其特征在于,判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件包括:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前读取的词语的属性与转移条件中的词语属性一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前读取的词语与转移条件中的具体词语一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是通配符,则确认两者匹配,从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语;或者,
如果从当前匹配到的节点开始的转移条件是函数,则调用所述函数从读取的词语开始在所述用户query中进行识别,如果识别结果满足预设的函数要求,则确认两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语。
13.一种识别搜索需求的装置,其特征在于,在数据库中分别以特里Trie树的形式存储词典和需求识别模板,分别得到词典Trie树和模板Trie树;该装置包括:
请求接收单元,用于接收用户搜索请求query;
需求匹配单元,用于结合所述词典Trie树和模板Trie树对所述用户query进行匹配,确定匹配到的模板所对应的需求类型。
14.根据权利要求13所述的装置,其特征在于,所述词典Trie树中根节点指示初始状态,叶节点和部分中间节点指示匹配到的词语属性,节点与节点之间的转移条件为字符;
所述模板Trie树中根节点指示初始状态,叶节点指示模板匹配成功,节点和节点之间的转移条件包括:具体词语、词语属性、通配符或函数。
15.根据权利要求13或14所述的装置,其特征在于,该装置还包括:词典树建立单元,用于执行以下操作:
A1、在数据库中建立词典Trie树的根节点,该根节点指示初始状态;
A2、从所述词典中获取一个尚未添加到词典Trie树中的词语,读取当前获取的词语中的第一个字符,将词典Trie树的根节点作为当前添加位置;
A3、判断当前读取到的字符是否已经存在于从当前添加位置开始的转移条件,如果是,执行操作A4;否则,执行操作A6;
A4、在词典Trie树中,将当前读取到的字符所存在的转移条件对应的下一级节点作为当前添加位置;
A5、判断当前读取到的词语是否存在下一个字符,如果是,读取当前获取的词语的下一个字符,转至操作A3;否则,执行操作A9;
A6、将当前读取到的字符添加为从当前添加位置开始的一个转移条件;
A7、判断当前获取的词语中是否存在下一个字符,如果是,执行操作A8;否则,将当前获取的词语的属性添加到操作A6所添加转移条件对应的下一级节点中,执行操作A9;
A8、将操作A6所添加转移条件对应的下一级节点作为当前添加位置,读取当前获取的词语中的下一个字符,转至操作A3;
A9、结束当前获取的词语的添加过程,如果所述词典中存在尚未添加到词典Trie树中的词语,则转至操作A2;否则,得到词典Trie树。
16.根据权利要求13或14所述的装置,其特征在于,该装置还包括:模板树建立单元,用于执行以下操作:
B1、在数据库中建立模板Trie树的根节点,该根节点指示初始状态;
B2、获取一个尚未添加到模板Trie树中的模板,读取当前获取的模板中第一个模板槽的内容,将模板Trie树的根节点作为当前添加位置;
B3、判断当前读取到的模板槽的内容是否已经存在于当前添加位置开始的转移条件,如果是,执行操作B4;否则执行操作B7;
B4、在模板Trie树中,将当前读取到的模板槽的内容所在的转移条件对应的下一级节点作为当前添加位置;
B5、判断当前读取的模板槽是否存在下一个模板槽,如果是,读取下一个模板槽的内容,转至操作B3;否则,执行操作B6;
B6、在当前添加位置中添加模板匹配成功的指示,执行操作B8;
B7、将当前读取的模板槽的内容添加为从当前添加位置开始的一个转移条件,将该转移条件对应的下一级节点作为当前添加位置,转至操作B5;
B8、结束当前获取的模板的添加过程,如果存在尚未添加到模板Trie树的模板,则转至操作B2;否则,得到模板Trie树。
17.根据权利要求16所述的装置,其特征在于,所述模板树建立单元在执行所述操作B6时,还用于在当前添加位置中添加当前获取的模板所对应需求类型信息的出口,或者添加当前获取的模板所对应的需求类型信息。
18.根据权利要求13所述的装置,其特征在于,所述需求匹配单元具体包括:第一词典树匹配模块和第一模板树匹配模块;
所述第一词典树匹配模块,用于从所述用户query的第一个字符开始与所述词典Trie树进行匹配,记录每一轮词典Trie树匹配到的各项内容得到所述用户query的各种词全切分结果,所述词全切分结果包括词语以及词语的属性,且每一种词全切分结果中的词语构成所述用户query;
所述第一模板树匹配模块,用于逐一针对每一种词全切分结果分别在所述模板Trie树上进行匹配,确定匹配到的模板所对应的需求类型。
19.根据权利要求18所述的装置,其特征在于,所述第一词典树匹配模块具体执行以下操作:
C11、接收到所述用户query后,词典指针指向所述用户query的第一个字符;
C12、将词典Trie树的根节点作为当前匹配位置;
C13、判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果是,执行操作C14;否则,执行操作C17;
C14、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行操作C15;否则,执行操作C16;
C15、获取并记录当前确定的节点指示的词语属性和匹配到的字符构成的词语;
C16;判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符转至所述操作C13;否则结束操作;
C17、确定当前词典指针位置时记录的词语中的最短词语,判断该最短词语在用户query中是否存在下一个字符,如果是,将词典指针指向该最短词语在用户query中的下一个字符,读取词典指针指向的字符,转至操作C12。
20.根据权利要求18所述的装置,其特征在于,所述第一模板树匹配模块具体执行以下操作:
C21、将模板指针指向所述用户query的第一个字符,将模板Trie树的根节点作为当前匹配到的节点;
C22、确定当前词全切分结果中以当前模板指针所指向的字符开始的词语;
C23、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,如果是,执行操作C24;否则,结束对当前词全切分结果的模板匹配;
C24、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行操作C25;否则,执行操作C26;
C25、获取当前确定的节点指示的搜索需求,结束操作;
C26、判断当前读取的词语在所述用户query中是否存在下一个字符,如果是,执行操作C27;否则,结束操作;
C27、将模板指针指向当前读取的词语在所述用户query中的下一个字符,转至操作C22。
21.根据权利要求13所述的装置,其特征在于,所述需求匹配单元具体包括:词典指针设置模块、第二词典树匹配模块和第二模板树匹配模块;
所述词典指针设置模块,用于将词典指针指向用户query的第一个字符;
所述第二词典树匹配模块,用于从词典指针指向的字符开始与所述词典Trie树进行匹配;
所述第二模板树匹配模块,用于在一轮词典Trie树匹配结束后,将所述第二词典树匹配模块本轮在词典Trie树匹配到的各项内容从上一轮模板Trie树匹配结束时匹配到的位置开始进行匹配,所述各项内容包括词语以及词语的属性,本轮模板Trie树匹配结束后,触发所述词典指针设置模块将词典指针指向本轮模板Trie树匹配所使用词语在用户query中的下一个字符,并触发所述第二词典树匹配模块开始下一轮词典Trie树的匹配,直至匹配到模板或者模板Trie树匹配失败;确定匹配到的模板所对应的需求类型。
22.根据权利要求21所述的装置,其特征在于,所述第二词典树匹配模块具体执行以下操作:
D21、将词典Trie树的根节点作为当前匹配位置;
D22、读取当前词典指针指向的字符,判断当前读取的字符是否匹配到从当前匹配位置开始的转移条件,如果否,本轮词典Trie树匹配结束,记录本轮词典Trie树匹配到的各项内容;如果是,执行操作D23;
D23、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示词语属性,如果是,执行操作D24;否则,执行操作D25;
D24、获取并记录当前确定的节点指示的词语属性以及匹配到的字符构成的词语,执行操作D25;
D25、判断当前读取的字符在所述用户query中是否存在下一个字符,如果是,读取下一个字符,将当前确定的节点作为当前匹配位置,转至所述操作D22;否则,本轮词典Trie树匹配结束。
23.根据权利要求21所述的装置,其特征在于,所述第二模板树匹配模块分别读取所述第二词典树匹配模块本轮词典Tire树匹配到的各项内容,并分别针对读取的各项内容执行以下匹配操作:
D31、判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件,所述当前匹配到的节点的初始位置为所述模板Trie树的根节点;如果是,执行操作D32;否则,结束针对当前读取的内容的模板Trie树匹配;
D32、确定匹配到的转移条件对应的下一级节点,判断当前确定的节点是否指示模板匹配成功,如果是,执行操作D33;否则,将当前确定的节点作为当前匹配位置,词典指针指向当前读取的内容中词语在用户query中的下一个字符,转至所述操作D2;
D33、确定匹配到的模板对应的搜索需求,结束针对当前读取的内容的模板Trie树匹配。
24.根据权利要求20或23所述的装置,其特征在于,判断当前读取的词语或该词语的属性是否匹配到模板Trie树中从当前匹配到的节点开始的转移条件包括:
如果从当前匹配到的节点开始的转移条件是词语属性,则如果当前读取的词语的属性与转移条件中的词语属性一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是具体词语,则如果当前读取的词语与转移条件中的具体词语一致,则确定两者匹配;或者,
如果从当前匹配到的节点开始的转移条件是通配符,则确认两者匹配,从当前读取的词语开始在query中截取通配符所指示长度,将截取的内容作为当前读取的词语;或者,
如果从当前匹配到的节点开始的转移条件是函数,则调用所述函数从读取的词语开始在所述用户query中进行识别,如果识别结果满足预设的函数要求,则确认两者匹配,将满足预设的函数要求的识别结果所对应的词语作为当前读取的词语。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110279434.6A CN103020052B (zh) | 2011-09-20 | 一种识别搜索需求的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110279434.6A CN103020052B (zh) | 2011-09-20 | 一种识别搜索需求的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103020052A true CN103020052A (zh) | 2013-04-03 |
CN103020052B CN103020052B (zh) | 2016-11-30 |
Family
ID=
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714947A (zh) * | 2013-12-11 | 2015-06-17 | 深圳市腾讯计算机系统有限公司 | 预定类型号码识别方法及装置 |
CN105022740A (zh) * | 2014-04-23 | 2015-11-04 | 苏州易维迅信息科技有限公司 | 非结构化数据的处理方法和装置 |
WO2016062255A1 (zh) * | 2014-10-22 | 2016-04-28 | 百度在线网络技术(北京)有限公司 | 多轮会话交互方法、系统和计算机设备 |
CN105843882A (zh) * | 2016-03-21 | 2016-08-10 | 乐视网信息技术(北京)股份有限公司 | 一种信息匹配方法及装置 |
CN107305567A (zh) * | 2016-04-21 | 2017-10-31 | 北京智能管家科技有限公司 | 一种基于双层trie树的语句查询方法及装置 |
CN107423363A (zh) * | 2017-06-22 | 2017-12-01 | 百度在线网络技术(北京)有限公司 | 基于人工智能的话术生成方法、装置、设备及存储介质 |
CN108334491A (zh) * | 2017-09-08 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 文本分析方法、装置、计算设备及存储介质 |
CN109684290A (zh) * | 2018-12-20 | 2019-04-26 | 东软集团股份有限公司 | 日志存储方法、装置、设备及计算机可读存储介质 |
CN110147433A (zh) * | 2019-05-21 | 2019-08-20 | 北京鸿联九五信息产业有限公司 | 一种基于字典树的文本模板提取方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1153356A (zh) * | 1995-11-10 | 1997-07-02 | 富士通株式会社 | 以格阵作关键字的字典检索装置和方法 |
CN1294454A (zh) * | 1999-10-21 | 2001-05-09 | 索尼国际(欧洲)股份有限公司 | 具有降低规一化复杂性的SOVA Turbo解码器 |
CN101013420A (zh) * | 2006-12-31 | 2007-08-08 | 中国科学院计算技术研究所 | 一种识别中文文本编码形式的方法 |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1153356A (zh) * | 1995-11-10 | 1997-07-02 | 富士通株式会社 | 以格阵作关键字的字典检索装置和方法 |
CN1294454A (zh) * | 1999-10-21 | 2001-05-09 | 索尼国际(欧洲)股份有限公司 | 具有降低规一化复杂性的SOVA Turbo解码器 |
CN101013420A (zh) * | 2006-12-31 | 2007-08-08 | 中国科学院计算技术研究所 | 一种识别中文文本编码形式的方法 |
Non-Patent Citations (1)
Title |
---|
米嘉: ""大规模中文文本检索中的高性能索引研究"", 《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714947A (zh) * | 2013-12-11 | 2015-06-17 | 深圳市腾讯计算机系统有限公司 | 预定类型号码识别方法及装置 |
CN105022740A (zh) * | 2014-04-23 | 2015-11-04 | 苏州易维迅信息科技有限公司 | 非结构化数据的处理方法和装置 |
US10817786B2 (en) | 2014-10-22 | 2020-10-27 | Baidu Online Network Technology (Beijing) Co., Ltd. | Multi-round session interaction method and system, and computer device |
WO2016062255A1 (zh) * | 2014-10-22 | 2016-04-28 | 百度在线网络技术(北京)有限公司 | 多轮会话交互方法、系统和计算机设备 |
CN105843882A (zh) * | 2016-03-21 | 2016-08-10 | 乐视网信息技术(北京)股份有限公司 | 一种信息匹配方法及装置 |
WO2017161749A1 (zh) * | 2016-03-21 | 2017-09-28 | 乐视控股(北京)有限公司 | 一种信息匹配方法及装置 |
CN107305567A (zh) * | 2016-04-21 | 2017-10-31 | 北京智能管家科技有限公司 | 一种基于双层trie树的语句查询方法及装置 |
CN107423363A (zh) * | 2017-06-22 | 2017-12-01 | 百度在线网络技术(北京)有限公司 | 基于人工智能的话术生成方法、装置、设备及存储介质 |
US10755148B2 (en) | 2017-06-22 | 2020-08-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for generating a response based on artificial intelligence, and storage medium |
CN108334491B (zh) * | 2017-09-08 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 文本分析方法、装置、计算设备及存储介质 |
CN108334491A (zh) * | 2017-09-08 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 文本分析方法、装置、计算设备及存储介质 |
CN109684290A (zh) * | 2018-12-20 | 2019-04-26 | 东软集团股份有限公司 | 日志存储方法、装置、设备及计算机可读存储介质 |
CN109684290B (zh) * | 2018-12-20 | 2021-08-17 | 东软集团股份有限公司 | 日志存储方法、装置、设备及计算机可读存储介质 |
CN110147433A (zh) * | 2019-05-21 | 2019-08-20 | 北京鸿联九五信息产业有限公司 | 一种基于字典树的文本模板提取方法 |
CN110147433B (zh) * | 2019-05-21 | 2021-01-29 | 北京鸿联九五信息产业有限公司 | 一种基于字典树的文本模板提取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI638274B (zh) | 一種語義匹配方法及智能設備 | |
JP5002751B2 (ja) | データベースアクセスのための2段階データ検証およびマッピング | |
CN108170859B (zh) | 语音查询的方法、装置、存储介质及终端设备 | |
JP2957375B2 (ja) | 文書書式のデジタル・イメージの文字認識誤りを修復するデータ処理システム及び方法 | |
CN116483973B (zh) | 一种文本处理方法、装置以及相关设备 | |
CN108052547A (zh) | 基于问句和知识图结构分析的自然语言问答方法及系统 | |
WO2021143299A1 (zh) | 语义纠错方法、电子设备及存储介质 | |
JPH08194719A (ja) | 検索装置および辞書/テキスト検索方法 | |
WO2015043318A1 (zh) | 自动回复方法及装置 | |
CN112800769A (zh) | 命名实体识别方法、装置、计算机设备和存储介质 | |
CN113961768A (zh) | 敏感词检测方法、装置、计算机设备和存储介质 | |
CN113836950A (zh) | 商品标题文本翻译方法及其装置、设备与介质 | |
CN103020052B (zh) | 一种识别搜索需求的方法和装置 | |
CN117909518A (zh) | 一种对大语言模型的生成文本进行校对的处理方法和装置 | |
CN117874166A (zh) | 文本处理方法、装置、计算机设备及存储介质 | |
JP5844375B2 (ja) | 物体検索システムおよび物体検索方法 | |
CN103020052A (zh) | 一种识别搜索需求的方法和装置 | |
US8166043B2 (en) | Bit strings search apparatus, search method, and program | |
JP3589007B2 (ja) | 文書ファイリングシステムおよび文書ファイリング方法 | |
CN107368525B (zh) | 搜索相关词的方法及装置、存储介质和终端设备 | |
JPH05257982A (ja) | 文字列認識方法 | |
CN110795425B (zh) | 一种海关数据清洗合并的方法、装置、设备及介质 | |
CN114678028A (zh) | 一种基于人工智能的语音交互方法及系统 | |
CN113609373A (zh) | 知识推荐方法、装置、电子设备及存储介质 | |
JPH03260869A (ja) | データ検索装置及びデータ検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |