首页 / 句子相似度计算方法和装置及系统

句子相似度计算方法和装置及系统有效专利 发明

技术领域

[0001] 本申请涉及自然语言处理技术领域,尤其涉及一种句子相似度计算方法和装置及系统。

相关背景技术

[0002] 计算句子对中句子之间的相似度在自然语言处理领域具有非常广泛的应用前景,如在问答系统中通过计算句子对中句子之间的相似度找到与问题相匹配的答案;在信息检索系统中通过计算句子对中句子之间的相似度找到与用户需求相似的句子等;因此,准确的计算句子之间的相似度具有重要意义,同时如何准确的计算句子之间的相似度也一直是研究人员的研究热点。
[0003] 相关技术中,一般是直接根据句子对中两个句子中词的词向量计算句子之间的相似度,这种方法考虑的信息较片面,从而降低了句子相似度计算的准确度。

具体实施方式

[0023] 下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0024] 图1是本申请一个实施例提出的句子相似度计算方法的流程示意图。
[0025] 如图1所示,本实施例的方法包括:
[0026] S11:获取待计算相似度的句子对。
[0027] 一般来讲,一组句子对中包含两个句子,可以称为第一句子和第二句子,以计算第一句子和第二句子之间的相似度。
[0028] 在计算句子间的相似度时,可以基于文本数据进行,相应的,获取的句子对是指句子的文本数据。但是,可以理解的是,不限于直接获取到文本数据,比如还可以获取到语音数据,之后通过语音识别得到文本数据。后续内容中如果未做特殊说明,句子是指文本数据的句子。
[0029] 待计算相似度的第一句子和第二句子,可以均由用户提供,比如用户直接指定这两个句子,或者,用户可以先在大段文本数据中标出待计算相似度的两个句子,由系统根据标注自动确定待计算相似度的两个句子。
[0030] 或者,待计算相似度的两个句子一个是由用户提供的,另一个是系统在已有数据中获取的,比如,在问答系统中,用户输入一个问题,用户输入的问题作为第一句子,系统的数据库中可以预先记录大量的问题及对应的答案,之后系统接收到第一句子后,可以依次将数据库中的每个已有问题作为第二句子,计算第一句子与第二句子的相似度,找到与第一句子最相似的句子,获取最相似的句子对应的答案,并将该答案反馈给用户。或者,在检索系统中进行类似处理,从而在已有的大量信息中获取满足用户需求的信息反馈给用户。
[0031] 需要说明的是,所述第一句子和第二句子可以为一句或多句文本数据组合后得到的句子,并不限于指一句话。
[0032] S12:构建所述句子对中每个句子的依存句法树。
[0033] 对应每个句子,可以先对句子进行分词,对分词结果进行依存句法分析后,构建相应的依存句法树。因此,依存句法树包含句子的句法信息。
[0034] 依存句法树是一种树型结构,包括多个节点和节点间的边,每个节点表示一个词,节点间的边表示词与词之间的依存关系。所述词包括根节点对应的词和非根节点对应的词,根节点是设置的虚节点,非根节点对应的词是对每个句子进行分词后得到的。具体构建依存句法树的方法可以参见后续描述。
[0035] S13:根据预先构建的句子相似度计算模型以及所述每个句子的依存句法树,计算所述句子对中句子之间的相似度。
[0036] 具体构建句子相似度计算模型的方法可以参见后续描述。
[0037] 具体计算时,将句子对中每个句子的依存句法树作为模型输入,模型输出即为句子对中两个句子的相似度,所述相似度一般为句子的语义相似度。
[0038] 进一步地,还可以预先设置阈值,在计算得到句子对中两个句子之间的相似度后,可以将该相似度与阈值进行比较,如果大于或等于该阈值,则确定这两个句子是相似的,否则这两个句子不是相似的。
[0039] 具体实施时,假设第一句子是用户输入的句子,第二句子是服务端在已有数据中获取的句子,则结合客户端与服务端,给出如图2所示的流程:
[0040] S21:客户端接收用户输入的第一句子。
[0041] 比如,第一句子是一个问题或者一个检索词(query)等。
[0042] S22:客户端将第一句子发送给服务端。
[0043] 客户端可以通过与服务端之间的网络连接将第一句子发送给服务端。
[0044] S23:服务端接收客户端发送的第一句子,并在已有数据中获取第二句子,将所述第一句子和所述第二句子组成句子对。
[0045] 具体获取第二句子的方式不限定,比如采用相关问答系统或检索系统中获取句子的方式。
[0046] S24:服务端构建所述句子对中每个句子的依存句法树。
[0047] S25:服务端根据预先构建的句子相似度计算模型以及所述每个句子的依存句法树,计算所述句子对中句子之间的相似度。
[0048] S26:服务端在确定所述第二句子与所述第一句子相似后,根据所述第二句子获取反馈结果。
[0049] 根据第二句子获取反馈结果的方式不限定,可以依据具体应用进行相应选择,比如,第二句子是问题,则将预先存储与第二句子对应的答案作为反馈结果。或者,将第二句子本身或者第二句子的相关内容作为反馈结果。
[0050] S27:服务端将反馈结果发送给客户端。
[0051] S28:客户端将所述反馈结果反馈给所述用户。
[0052] 服务端可以以文本形式将反馈结果发送给客户端,客户端可以以文本、语音等形式将反馈结果反馈给用户。
[0053] 上述各步骤的具体内容可以参见各实施例中的相关描述,在此不再详述。
[0054] 可以理解的是,上述的客户端和服务端可以分别位于不同的物理设备中,如客户端位于用户侧的终端设备中,服务端位于服务器中,终端设备与服务器通过网络连接;或者,客户端和服务端可以位于相同的物理设备中,例如,在终端设备中集成客户端和服务端的功能,从而可以在终端设备本地完成句子相似度计算。或者,仅有服务器中的服务端获取句子对以及进行后续的相似度计算。
[0055] 本实施例中,通过构建句子的依存句法树,并基于依存句法树计算句子之间的相似度,由于依存句法树包含句子的句法信息,因此在计算句子之间的相似度时考虑了句子的句法信息,从而提高句子之间相似度计算的准确度。
[0056] 图3是本申请另一个实施例提出的句子相似度计算方法的流程示意图。
[0057] 本实施例以服务端的执行为例。
[0058] 如图3所示,本实施例的方法包括:
[0059] S31:服务端构建句子相似度计算模型。
[0060] 所述句子相似度计算模型通过预先收集大量句子对文本数据进行构建,具体构建方法如下所述。
[0061] S32:服务端获取待计算相似度的句子对。
[0062] S33:服务端构建所述句子对中每个句子的依存句法树。
[0063] S34:服务端根据预先构建的句子相似度计算模型以及所述每个句子的依存句法树,计算所述句子对中句子之间的相似度。
[0064] 可以理解的是,本实施例未做详细说明的部分,可以参见其他实施例中的相关部分。
[0065] 如图3所示,构建句子相似度计算模型的方法包括:
[0066] S311:获取用于训练的句子对及其标注信息,所述标注信息包括所述用于训练的句子对中句子之间的相似度。
[0067] 例如,将收集的大量句子对文本数据作为用于训练的句子对,每组句子对中包含两个句子,即第一句子和第二句子。
[0068] 在收集到句子对后,可以标注句子对样本中的两个句子是否相似,如两个句子相似,则标注为1,不相似标注为0;具体标注方法可以使用人工标注或自动标注的方法,具体本案不作限定。
[0069] S312:构建所述用于训练的句子对中每个句子的依存句法树。
[0070] 依存句法树是由多个节点组成的树型结构,每个节点表示一个词,节点之间的边表示词与词之间的依存关系。所述词包括根节点对应的词和非根节点对应的词,根节点是设置的虚节点,非根节点对应的词是对每个句子进行分词后得到的。
[0071] 在构建每个句子的依存句法树时,可以先对每个句子进行分词,得到每个句子中的词;再对所述每个句子中的词进行依存句法分析,确定词与词之间的依存关系;然后根据每个句子中的词,以及词与词之间的依存关系构建每个句子的依存句法树。
[0072] 对句子进行分词的方法不限定,可以采用各种相关技术,如采用基于条件随机场的方法对句子进行分词,得到分词结果。
[0073] 例如,一个句子为“我要查信用卡账单”,经过分词后得到的分词结果为“我要查信用卡账单”,即分词结果包括5个词。
[0074] 依存句法分析的具体方法也不限定,可以采用各种相关技术,如基于规则的方法,或者直接使用斯坦福自然语言处理工具进行依存句法分析。
[0075] 如上例中句子“我要查信用卡账单”进行分词和依存句法分析后,可以得到句子中词以及词与词之间的依存关系,如下所示:
[0076] SBV(查-3,我-1)
[0077] ADV(查-3,要-2)
[0078] HED(Root-0,查-3)
[0079] ATT(账单-5,信用卡-4)
[0080] VOB(查-3,账单-5)
[0081] 其中,括号前面的字符串表示括号中两个词的依存关系,如“SBV”、“ADV”等,其中,“SBV”表示主调关系,“HED”表示核心关系,“ADV”表示状中关系,“VOB”表示动宾关系,“ATT”表示定中关系;括号中第一个词表示依存句法树中的父节点词,第二个词表示依存句法树中的子节点词,每个词后的数字表示词在句子中的位置,如“查-3”表示“查”在句子中的位置为3,即第三个词;ROOT表示依存句法树的根节点,该节点为虚节点,其与子节点之间的关系为虚关系。
[0082] 根据每个句子中的词以及词与词之间的依存关系,可以构建每个句子对应的依存句法树,如图4所示:其中每个节点表示句子中的一个词,节点之间的边表示词与词之间的依存关系。
[0083] 进一步地,依存句法树的节点对应的词可以用词向量表示,即对句子进行分词后,还可以计算句子中每个词的词向量,以在依存句法树的节点处存储相应的词向量。词向量可以用行向量或列向量表示,以列向量为例,每个词向量大小为d0×1,其中,d0为每个词向量中元素数。
[0084] S313:根据所述用于训练的句子对中每个句子的依存句法树和所述标注信息进行模型训练,得到句子相似度计算模型。
[0085] 具体构建时,将句子对样本中每个句子的依存句法树作为模型输入,基于预先确定的模型拓扑结构,得到模型输出的相似度,再将模型输出的相似度与预设阈值比较,得到相似度判定结果,根据判定结果与对应的相似度标注信息对模型参数进行更新,当所有句子对输入结束后,参数更新结束,得到句子相似度计算模型。具体的更新过程可以参见各种相关模型训练过程,在此不再详述。
[0086] 句子相似度计算模型的拓扑结构可以根据需求设置,图5给出了本实施例采用的一种拓扑结构。如图5所示,句子相似度计算模型包括:输入层、卷积层、池化层、拼接层和输出层。其中,输入层,用于输入句子对中每个句子的依存句法树;卷积层,用于根据所述每个句子的依存句法树,分别计算每个句子的语义单元矩阵;池化层,用于根据所述每个句子的语义单元矩阵,分别计算每个句子的语义向量;拼接层,用于根据所述每个句子的语义向量进行拼接,得到句子语义相似度拼接向量;输出层,用于根据所述句子语义相似度拼接向量进行回归运算,得到所述句子对中句子之间的语义相似度。具体特征变换过程如下所述:
[0087] 输入层:输入每个句子的依存句法树。具体输入时,依次输入依存句法树的每个分支,其中,每个分支包括相互连接的两个节点对应的词以及词与词之间的依存关系,如上例中依次输入“SBV(查-3,我-1)”、“ADV(查-3,要-2)”等。依存句法树的节点对应的词采用词向量表示。
[0088] 卷积层:对应每个句子的依存句法树,采用预设深度的卷积窗在所述依存句法树上滑动,依次获取所述依存句法树中每个节点对应的语义单元向量,以及,将所述依存句法树中所有节点对应的语义单元向量组成所述依存句法树对应的句子的语义单元矩阵;
[0089] 其中,所述采用预设深度的卷积窗在所述依存句法树上滑动,依次获取所述依存句法树中每个节点对应的语义单元向量,包括:
[0090] 将所述卷积窗在当前滑动位置所覆盖的节点依次作为当前处理的节点,根据当前处理的节点中各个节点表示的词的词向量进行卷积操作,将卷积操作后得到的结果作为当前处理的节点中第一层节点的语义单元向量,所述第一层节点为一个节点。
[0091] 具体地,利用固定深度的卷积窗沿输入层输入的依存句法树从上至下,从左到右滑动,依次对卷积窗内的词进行卷积操作;所述卷积窗的深度指卷积窗每次覆盖的依存句法树的深度,如深度为2时,则卷积窗每次覆盖2层依存句法树,具体卷积操作的节点为2层,即卷积窗内第一层节点与第一层节点连接的所有第二层子节点进行卷积操作,得到第一层节点对应的语义单元向量,当第一层节点无节点连接时,则直接根据第一层节点得到其对应的语义单元向量;将卷积操作后得到的每个语义单元向量组合后得到每个句子的语义单元矩阵,将所述语义单元矩阵作为卷积层的输出;由于所述语义单元向量一般为列向量,则将句子中所有语义单元向量按列组合后,得到对应语义单元矩阵,矩阵每列表示每个语义单元向量,每行表示每个语义单元向量每行的具体取值;
[0092] 当然卷积窗也可以为其它深度,如深度为3时,则卷积窗内进行卷积操作的节点为3层,即第一层节点、第二层子节点及第三层子子节点,其它深度卷积窗内节点进行卷积操作时与之类似。
[0093] 需要说明的是,每个卷积窗第一层节点都只有一个节点,第二层节点为与第一层节点连接的子节点,第三层节点为每个子节点连接的子子节点,依次类推。
[0094] 以卷积窗的深度为2为例说明卷积操作:记卷积窗内第一层节点的词向量为Q,第二层节点的词向量记为q1,q2,…,qK,第一层节点与每个第二层节点的依存关系记为r1,r2,…,rK,则第一层节点与所有第二层节点之间的卷积操作如式(1)所示,卷积操作后得到第一层节点对应的语义单元向量:
[0095]
[0096] 其中,ci为第一层节点Q与所有第二层节点进行卷积操作后得到的语义单元向量,其大小与词向量大小相同,即d0×1,WQ为第一层节点Q的权值参数,Wrk为第二层节点qk的权值参数,b为偏置项,f为卷积函数,如ReLU函数或sigmoid函数,其中,WQ、Wrk、b为模型参数,初始时可以设置为初始值,之后通过大量数据的训练过程进行更新,得到模型最终采用的参数值。
[0097] 如图6为对句子“我要查信用卡账单”进行卷积操作的示例图,图中虚线三角形表示深度为2的卷积窗,该卷积窗从上到下,从左到右滑动,依次对卷积窗内节点进行卷积操作,得到右侧卷积操作后的语义单元向量。具体地,卷积窗依次从根节点Root开始,每次覆盖2层依存句法树中节点,如图6中,第一个卷积窗覆盖的两层节点依次为Root节点和“查”节点,其中,Root节点为第一层节点,“查”节点为第二层节点,根据式(1)进行卷积操作后,得到Root节点对应的语义单元向量c1;卷积窗再向下滑动,覆盖的第一层节点为“查”节点,第二层节点依次为“我”节点、“要”节点、“账单”节点,进行卷积操作后,得到“查”节点对应的语义单元向量c2,再向下动,卷积窗内覆盖的第一层节点为“我”节点,该节点无子节点,则直接根据式(1)对该节点进行卷积操作,此时,式(1)对应的第二层节点相关取值为0,得到“我”节点对应的语义单元向量c3;依次滑动卷积窗进行卷积操作,得到句子中每个节点对应的语义单元向量,如图6右侧所示,将句子中所有语义单元向量组合后,得到句子对应的语义单元矩阵。
[0098] 池化层:基于卷积层得到每个句子的语义单元矩阵,计算每个句子的语义向量。
[0099] 具体地,根据所述每个句子的语义单元矩阵,计算所述句子对中句子之间的注意力矩阵;根据所述注意力矩阵计算每个句子的语义单元矩阵中每个语义单元向量的注意力权重;根据所述每个语义单元向量及其注意力权重,计算每个句子的语义向量。
[0100] 下面对上述的注意力矩阵、注意力权重、语义向量的计算过程进行详细说明:
[0101] 注意力矩阵:描述两个句子中每个语义单元向量的相关度,假设两个句子分别称为第一句子和第二句子,则矩阵的每行表示第一句子中每个语义单元向量分别与第二句子中所有语义单元向量之间的相关度,如矩阵的第m行取值表示第一句子中第m个语义单元向量分别与第二句子中每一个语义单元向量之间的相关度;矩阵的每列表示第二句子中每个语义单元向量分别与第一句子中所有语义单元向量之间的相关度,如矩阵的第n列取值表示第二句子中第n个语义单元向量分别与第一句子中每一个语义单元向量之间的相关度,具体计算方法如式(2)所示:
[0102] Amn=g(C1[:,m],C2[:,n])  (2)
[0103] 其中,Amn表示注意力矩阵A的第m行第n列的取值;矩阵大小为M×N,其中,M为第一句子的语义单元向量的总数,N为第二句子的语义单元向量的总数;C1[:,m]表示第一句子的语义单元矩阵中第m个语义单元向量;C2[:,n]表示第二句子的语义单元矩阵中第n个语义单元向量;g为相关度计算函数,具体计算方法如式(3)所示:
[0104]
[0105] 其中,x,y为相关度计算函数的向量参数,如在式(2)中x为C1[:,m],y为C2[:,n];|x-y|为向量x和y的距离。
[0106] 注意力权重:直接将注意力矩阵每行求和后的计算值分别作为第一句子每个语义单元向量的注意力权重,记为L1={l11,…l1M};将注意力矩阵中每列求和后的计算值分别作为第二句子每个语义单元向量的注意力权重,记为L2={l21,…l2N},具体计算方法如式(4)和式(5)所示;
[0107]
[0108]
[0109] 其中,l1m表示第一句子第m个语义单元向量的注意力权重;l2n表示第二句子第n个语义单元向量的注意力权重;Amn表示注意力矩阵A的第m行第n列的取值;M和N分别为注意力矩阵的行数和列数。
[0110] 语义向量:第一句子的语义向量为第一句子的所有语义单元向量与其注意力权重的乘积和,第二句子的语义向量为第二句子的所有语义单元向量与其注意力权重的乘积和,具体计算方法如式(6)和式(7)所示:
[0111]
[0112]
[0113] 其中,P1为第一句子的语义向量,其大小与第一句子语义单元向量大小相同,即d0×1;P2为第二句子的语义向量,其大小与第二句子语义单元向量大小相同,即d0×1;C1m表示第一句子第m个语义单元向量,即式(2)中的C1[:,m];C2n表示第二句子第n个语义单元向量,即式(2)中的C2[:,n]。
[0114] 将计算得到的第一句子的语义向量P1和第二句子的语义向量P2作为池化层的输出。
[0115] 拼接层:将池化层得到的第一句子的语义向量P1和第二句子的语义向量P2作为拼接层的输入,进行拼接后,得到句子语义相似度拼接向量,记为U。
[0116] 具体拼接时,依次将向量P1、向量P2、向量P1与向量P2的差值向量(P1-P2)及向量P1与向量P2的乘积向量(P1·P2)进行拼接,所述差值向量即向量P1与向量P2中每个元素对应相减后得到的向量,所述乘积向量即向量P1与向量P2中每个元素对应相乘后得到的向量,其大小与P1和P2相同,具体拼接方法如式(8)所示:
[0117] U=[P1;P2;P1-P2;P1·P2]  (8)
[0118] 将句子语义相似度拼接向量U作为拼接层的输出。
[0119] 输出层:对句子语义相似度拼接向量进行回归后,得到两个句子的语义相似度,将所述语义相似度作为输出层的输出,所述回归函数如softmax函数。
[0120] 本实施例中,通过构建句子的依存句法树,并基于依存句法树计算句子之间的相似度,由于依存句法树包含句子的句法信息,因此在计算句子之间的相似度时考虑了句子的句法信息,从而提高句子之间相似度计算的准确度。进一步地,在计算句子的语义向量时,会采用句子之间的注意力矩阵,而注意力矩阵表明了句子间的语义相关度,因此,在计算句子之间的相似度时还考虑了句子之间的语义关系,可以进一步提高句子之间相似度计算的准确度。
[0121] 图7是本申请一个实施例提出的句子相似度计算装置的结构示意图。
[0122] 如图7所示,本实施例的装置70包括:获取模块71、依存句法树构建模块72和相似度计算模块73。
[0123] 获取模块71,用于获取待计算相似度的句子对;
[0124] 依存句法树构建模块72,用于构建所述句子对中每个句子的依存句法树;
[0125] 相似度计算模块73,用于根据预先构建的句子相似度计算模型以及所述每个句子的依存句法树,计算所述句子对中句子之间的相似度。
[0126] 一些实施例中,参见图8,该装置70还包括:用于构建句子相似度计算模型的模型构建模块74,所述模型构建模块74具体用于:
[0127] 获取用于训练的句子对及其标注信息,所述标注信息包括所述用于训练的句子对中句子之间的相似度;
[0128] 构建所述用于训练的句子对中每个句子的依存句法树;
[0129] 根据所述用于训练的句子对中每个句子的依存句法树和所述标注信息进行模型训练,得到句子相似度计算模型。
[0130] 一些实施例中,所述依存句法树构建模块72具体用于:
[0131] 对每个句子进行分词,得到每个句子中的词;
[0132] 对所述每个句子中的词进行依存句法分析,确定词与词之间的依存关系;
[0133] 根据每个句子中的词,以及词与词之间的依存关系构建每个句子的依存句法树。
[0134] 一些实施例中,所述句子相似度计算模型的拓扑结构包括:
[0135] 输入层,用于输入句子对中每个句子的依存句法树;
[0136] 卷积层,用于根据所述每个句子的依存句法树,分别计算每个句子的语义单元矩阵;
[0137] 池化层,用于根据所述每个句子的语义单元矩阵,分别计算每个句子的语义向量;
[0138] 拼接层,用于根据所述每个句子的语义向量进行拼接,得到句子语义相似度拼接向量;
[0139] 输出层,用于根据所述句子语义相似度拼接向量进行回归运算,得到所述句子对中句子之间的语义相似度。
[0140] 一些实施例中,所述依存句法树包括多个节点,所述节点包括根节点和非根节点,每个非根节点表示所述依存句法树对应的句子中的一个词,且在得到所述词后还计算所述词的词向量,所述根据所述每个句子的依存句法树,分别计算每个句子的语义单元矩阵,包括:
[0141] 对应每个句子的依存句法树,采用预设深度的卷积窗在所述依存句法树上滑动,依次获取所述依存句法树中每个节点对应的语义单元向量,以及,将所述依存句法树中所有节点对应的语义单元向量组成所述依存句法树对应的句子的语义单元矩阵;
[0142] 其中,所述采用预设深度的卷积窗在所述依存句法树上滑动,依次获取所述依存句法树中每个节点对应的语义单元向量,包括:
[0143] 将所述卷积窗在当前滑动位置所覆盖的节点依次作为当前处理的节点,根据当前处理的节点中各个节点表示的词的词向量进行卷积操作,将卷积操作后得到的结果作为当前处理的节点中第一层节点的语义单元向量,所述第一层节点为一个节点。
[0144] 一些实施例中,所述根据所述每个句子的语义单元矩阵,分别计算每个句子的语义向量,包括:
[0145] 根据所述每个句子的语义单元矩阵,计算所述句子对中句子之间的注意力矩阵;
[0146] 根据所述注意力矩阵计算每个句子的语义单元矩阵中每个语义单元向量的注意力权重;
[0147] 根据所述每个语义单元向量及其注意力权重,计算每个句子的语义向量。
[0148] 一些实施例中,所述根据每个句子的语义向量进行拼接,得到句子语义相似度拼接向量,包括:
[0149] 根据每个句子的语义向量计算语义向量间的差值向量和语义向量间的乘积向量;
[0150] 将所述每个句子的语义向量、所述差值向量和所述乘积向量拼接成句子语义相似度拼接向量。
[0151] 可以理解的是,本实施例的装置与上述方法实施例对应,具体内容可以参见方法实施例的相关描述,在此不再详细说明。
[0152] 本实施例中,通过构建句子的依存句法树,并基于依存句法树计算句子之间的相似度,由于依存句法树包含句子的句法信息,因此在计算句子之间的相似度时考虑了句子的句法信息,从而提高句子之间相似度计算的准确度。
[0153] 图9是本申请一个实施例提出的句子相似度计算系统的结构示意图。
[0154] 如图9所示,本实施例的系统包括:客户端91和服务端92。
[0155] 客户端91,用于接收用户输入的第一句子;
[0156] 服务端92,用于接收客户端发送的第一句子,并在已有数据中获取第二句子,将所述第一句子和所述第二句子组成句子对;构建所述句子对中每个句子的依存句法树;根据预先构建的句子相似度计算模型以及所述每个句子的依存句法树,计算所述句子对中句子之间的相似度。
[0157] 一些实施例中,所述服务端92还用于:在确定所述第二句子与所述第一句子相似后,根据所述第二句子获取反馈结果;
[0158] 所述客户端91还用于:接收所述服务端发送的反馈结果,并将所述反馈结果反馈给所述用户。
[0159] 图9中以客户端与服务端通过无线网络连接为例,可以理解的是,客户端与服务端也可以通过有线网络连接,或者,如果客户端与服务端集成在同一设备中,客户端与服务端可以通过设备内部的总线连接。
[0160] 可以理解的是,服务端的功能与上述的装置一致,因此,服务端的具体组成可以参见图7或图8所示的装置,在此不再详述。
[0161] 本实施例中,通过构建句子的依存句法树,并基于依存句法树计算句子之间的相似度,由于依存句法树包含句子的句法信息,因此在计算句子之间的相似度时考虑了句子的句法信息,从而提高句子之间相似度计算的准确度。
[0162] 可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
[0163] 需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
[0164] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0165] 应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0166] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0167] 此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0168] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0169] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0170] 尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页 第1页 第2页 第3页
相关技术
方法装置相关技术
相似计算相关技术
胡加学发明人的其他相关专利技术