本发明涉及心理咨询及自然语言处理技术领域,尤其涉及一种用于校园心理咨询的句对匹配度预测方法。
背景技术:
早期的对话回复多为规则驱动,随着可使用的对话语料的增加,数据驱动的回复方式成为主流。这种回复方式主要分为检索式对话回复及生成式对话回复。很多学者从不同方面尝试提高对话回复的质量,通过最大化互信息提高生成式对话回复的回复相关性与多样性,通过额外的信息来指导句子生成,这些信息包括关键词、主题、情感等。还有学者从对话系统的角度,提高系统的会话质量,如赋予聊天机器人人格,使其在会话中可以保持一致性,通过强化学习,提升对话交互的轮次,让机器人在会话的某些时机主动引导对话。但考虑到生成型回复生成的句子质量上得不到保证,不适合用于心理咨询领域内的对话回复。
在选择型对话回复中,模型会从候选的回复句中选择最合适的句子作为回复,这种方式给出的回复句在质量上可以得到一定的保证。为了选出合适的回复句,需要对句对的匹配度进行建模。通过rnn(循环神经网络)对问句及答句进行编码,将问句答句分别编码成定长向量,作为输入特征进行二分类学习。在计算考虑句子相似度时,不仅从句子层面计算相似度,还从词语的层面进行了相似度计算,综合两个不同粒度上的考量之后,进行句对匹配学习。在利用相似度建模时,使用了句子向量生成过程中产生的隐变量,计算出相似度矩阵,以此作为神经网络的输入,学习到一个定长向量,再将这个向量作为分类模型的输入,学习句对的匹配度;上述方法不直接使用句子向量计算相似度,而使用中间过程中得到的隐变量计算,这使得在进行相似度计算时保留了句子中更多的信息,同时也考虑了句子的不同组成部分带来的不同的相似度。
上述方案所构建的匹配模型称为开放式领域内的句对匹配模型,开放式领域内的句对匹配模型在学习的过程中并没有使用句子与“心理咨询”相关的任何信息。因此,直接将开放式领域内的句对匹配模型用到心理咨询领域是不够的,还需要考虑更多的句子信息。
技术实现要素:
本发明的目的是提供一种用于校园心理咨询的句对匹配度预测方法,通过从领域内语料中提取相关特征,可以从更多角度指导后续建模过程。
本发明的目的是通过以下技术方案实现的:
一种用于校园心理咨询的句对匹配度预测方法,包括:
获取带有咨询标签的咨询语句,并进行预处理后获得相关的语料;计算每一句子中每一单词在各咨询类别下的重要性,从而获得每一句子在所有咨询类别下的重要性向量;利用所有句子在所有咨询类别下的重要性向量作为模型输入,获得咨询类别判断模型;
获取句对,并进行预处理后获得训练语料;计算训练语料中每一组句对中问句与答句的隐层状态序列,从而计算句子层面相似度矩阵、从所有咨询类别下重要性的角度得到的单词层面的相似度矩阵、经过加权之后的单词层面相似度矩阵、以及经过加权之后的单词层面相关度矩阵;再将计算得到的四个矩阵作为卷积神经网络模型的输入,在训练语料上训练出句对匹配模型;
对于新输入的句对,利用咨询类别判断模型与句对匹配模型进行匹配对预测。
由上述本发明提供的技术方案可以看出,通过在开放领域中句对匹配度模型的基础上增加一些心理咨询相关的信息,使最终提出来的句对匹配度模型可以较好的应用到心理咨询领域内。此外,除了在词向量的基础上对句子相似度及单词相似度进行建模之外,还利用机器学习模型从句子中提取咨询类别信息以及单词及句子在各咨询类别下的度量信息,这些额外的信息可以帮助指导心理咨询领域内句子匹配度的建模。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种用于校园心理咨询的句对匹配度预测方法的流程图;
图2为本发明实施例提供的句对匹配模型框架示意图;
图3为本发明实施例提供的语料中某一单词在各类别下出现次数示意图;
图4为本发明实施例提供的一维向量特征示意图;
图5为本发明实施例提供的特征矩阵示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供一种用于校园心理咨询的句对匹配度预测方法,如图1所示,其包括:
步骤1、获取带有咨询标签的咨询语句,并进行预处理后获得相关的语料;计算每一句子中每一单词在各咨询类别下的重要性,从而获得每一句子在所有咨询类别下的重要性向量;利用所有句子在所有咨询类别下的重要性向量作为模型输入,获得咨询类别判断模型。
步骤2、获取句对,并进行预处理后获得训练语料;计算训练语料中每一组句对中问句与答句的隐层状态序列,从而计算句子层面相似度矩阵、从所有咨询类别下重要性的角度得到的单词层面的相似度矩阵、经过加权之后的单词层面相似度矩阵、以及经过加权之后的单词层面相关度矩阵;再将计算得到的四个矩阵作为卷积神经网络模型的输入,在训练语料上训练出句对匹配模型。
步骤3、对于新输入的句对,利用咨询类别判断模型与句对匹配模型进行匹配对预测。
本发明实施例上述方案克服了开放领域的对话回复中的句对匹配模型不能直接用于心理咨询领域中进行对话回复的不足,通过从领域内语料中提取相关特征,可以从更多角度指导后续建模过程。学习到一个较好的句子匹配度模型之后,在后续与用户的对话回复中,可以从质量较好的句子集合中选取一个合适的句子作为回复,如选取名人名言、经典句子作为回复。在心理咨询的场景下,这种方式给出的句子质量可以有很好的保证,也具有一定的启发性。
为了便于理解,下面针对本发明做详细说明。
本发明实施例中,除了从词向量出发,计算句子及单词层面的语义相似度之外,还会计算以下特征:
1)从词共现的角度出发,衡量单词之间的相关度,并将此作为完成句对匹配所需的重要特征.
2)从咨询类别出发,由单词在各个咨询类别下的重要性层面去衡量单词之间的相似性,并将此作为完成句对匹配所需的重要特征。
3)用机器学习模型从句子中获取咨询类别信息,并用该信息指示句子中的关键词,通过对关键词加权来提高模型对关键词上相似度及相关度的关注。
本发明实施例中主要涉及两个模型:咨询类别判断模型与句对匹配模型。
一、咨询类别判断模型。
获得咨询类别判断模型的主要过程如下:
1、从校咨询网站及贴吧上获取带有咨询标签的咨询语句(问句),对于获取到的带有咨询标签的咨询语句,去掉长度不符合要求(过长或者过短)的句子、去掉句子中无意义的数字与字母、并去掉停用词后,获得语料xct,
2、计算每一句子中每一单词在各咨询类别下的重要性:
假设语料中共有numconsulttype个咨询类别,numwords个单词,第i个单词wi在第j个咨询类别tj上出现次数为
其中,i=1,2,...,numwords,j=1,2,...,numconsulttype;
从而得到单词wi在所有咨询类别下的重要性向量
3、计算句子s在所有咨询类别下的重要性向量tws,计算公式如下:
其中,numwordss为句子s中包含的单词个数,wl表示句子s中第l个单词,重要性向量tws的维度为1*numconsulttype。
4、将语料xct中句子s的重要性向量tws作为svm或lr模型的输入特征,学习一个咨询类别判断模型fct,使对任意一个句子,其对应的咨询类别可以通过模型fct预测得到。可以通过sklearn完成模型参数的求解。
在获得咨询类别判断模型fct后,对于新句子snew,它的目标咨询类别tnew=fct(snew),可以计算新句子snew在目标咨询类别下的度量
二、句对匹配模型。
句对匹配模型框架如图2所示,获得句对匹配模型的主要过程如下:
1、获取一系列句对(可以从校咨询网站及贴吧上获取),并利用咨询类别判断模型对句对进行筛选,去除不属于任何咨询类别的句对;
对于剩下的句对,去掉句子中无意义符号、分词以及去停用词后得到训练语料xl,xl=[{{u1,r1},label1},{{u2,r2},label2},...];其中的{u,r}为一个句对,下标为句对的序号,u、r分别代表问句、答句,label为对应序号句对的匹配度标签。例如,{u1,r1}为第1个问句u1与第1个答句r1组成的第1个句对,label1为第1个句对{u1,r1}的匹配度标签,此处的问句与答句也都包含有若干个单词。
2、获取句子u对应的隐层状态序列hu,及句子r对应的隐层状态序列hr。
对于每一组句对中的每个单词,通过神经网络建模获取其分布式向量表示,设定词向量长度为numdimension,假设问句u中第x个单词对应的词向量表示为wordvecu,x=[v1,...,vnumdimension],答句r中第y个单词对应的词向量表示为wordvecr,y=[v'1,...,v'numdimension],其中,v与v'均为实数数值,下标为序号;
再将问句与答句中单词的词向量作为输入,通过lstm网络对问句与答句进行编码,并获取句子编码过程中得到的一系列隐层向量;
设句子中包含的单词个数的最大值为maxseqlength,lstm网络中隐层向量维度设置为1×lstmunits,则问句u对应的隐层状态序列为hu=[hu,1,...,hu,maxseqlength],
3、计算句子层面相似度矩阵、从所有咨询类别下重要性的角度得到的单词层面的相似度矩阵、经过加权之后的单词层面相似度矩阵、以及经过加权之后的单词层面相关度矩阵。
1)计算句子层面相似度矩阵
simmatrix_sentencep,q=hu,pwhr,qt;
其中,hu,p表示hu中第p个隐状态向量,hr,q表示hr中第q个隐状态向量。
2)计算计算经过加权之后的单词层面相似度矩阵simmatrix_weighted。
首先,计算单词层面相似度矩阵
simmatrix_wordp,q=wordvecu,p*wordvecr,qt;
其中,wordvecu,p表示问句u中第p个单词对应的词向量,wordvecr,q表示答句r中第q个单词对应的词向量;
然后,计算问句u在目标咨询类别下的咨询向量consultvecu:对于问句u,通过咨询类别判断模型得到问句u的目标咨询类别tu,及在目标咨询类别下的度量consultvecu;具体如前文咨询类别判断模型第4部分的内容。该咨询向量可以从一个更抽象的层面对句子进行描述,其揭示了在句子中哪些词语在目标咨询类别下是关键的词语,可以使模型有侧重的关注问句中关键词与答句中单词的相似性,从而提高模型效果。
最后,计算经过加权之后的单词层面相似度矩阵
simmatrix_weightedp,q=consultvecu*simmatrix_wordp,q。
3)计算经过加权之后的单词层面相关度矩阵relevantmatrix_weighted。
首先,从词共现的角度计算单词之间的相关性矩阵
然后,计算经过加权之后的单词层面相关度矩阵
relevantmatrix_weightedp,q=consultvecu*relevantmatrixp,q;
其中,relevantmatrixp,q表示矩阵relevantmatrix的第p行第q列元素值。
4)计算从所有咨询类别下重要性的角度得到的单词层面的相似度矩阵simmatrix_consulttf:从单词在所有咨询类别下的重要性向量上对单词层面相似度矩阵进行衡量,
其中,
上述内容所涉及的x,y,p,q都是表示[1,maxseqlength]区间上的任意整数。
4、将计算得到的四个矩阵作为卷积神经网络模型的输入,在训练语料上训练出句对匹配模型fl,使得句对的匹配度标签可以通过模型fl预测得到。这四个矩阵维度均为maxseqlength*maxseqlength。通过tensorflow搭建卷积神经网络模型,输入计算得到的四个矩阵,设置模型损失为交叉熵损失,通过adamoptimizer求解模型参数。
以上针对本发明的主要内容进行了介绍,下面给出一个具体示例。
根据《大学生心理行为指导》,校园内咨询类别大致划分为学习问题、恋爱问题、人际交往问题、择业问题、适应性问题这五类,设对应的标签分别为0到4,本发明实施例不考虑异常心理。
一、咨询类别判断模型
1、对于咨询类别判断模型,根据前述技术方案中的定义,其语料为xct,假设现有语料如表1所示,图中每一行为一个样本,样本中的问句内容为样本内容,咨询类别标签为样本标签。则
表1现有语料
2、对语料xct中的每一个单词,计算其在各咨询类别下出现的次数,并由此计算出其在所有咨询类别上的重要性向量。假设语料中有单词w=”想”,它在各个类别下出现的次数如图3所示,按照前述“
3、经过前述步骤2之后,可以得到所有单词的重要性向量,结合前述“tws计算公式”可以计算出语料xct中每个句子s的重要性向量,是一个维度为1*5的向量。
4、经过上述步骤之后,可以得到语料的数字表示形式。设计算出的样本s1的重要性向量[0.3,0.2,0.1,0.2,0.2],样本标签为4(适应性问题);样本s2的重要性向量为[0.2,0.3,0.1,0.1,0.3],样本标签为3(人际交往问题),则语料可表示为:xct=[{[0.3,0.2,0.1,0.2,0.2],4},{[0.2,0.3,0.1,0.1,0.3],3},...].以此作为svm或lr模型的训练集,通过sklearn实现模型求解。
二、句对匹配模型。
假设句子最大长度(即最大单词数量)maxseqlength=20,词向量维度numdimension=100,隐层维度lstmunits=200。
1、对于句对匹配度模型,根据前文技术方案中的定义,其训练语料为xl,假设现有语料如表2所示,图中每一行为一个样本,包括问句、答句、匹配度标签。对句子作预处理,去掉句子中无意义符号、分词、去停用词之后,可以得到图中语料xl=[{{u1,r1},label1},{{u2,r2},label2},...],其中u1为[“有点”,”没有”,”来由”,”害怕”,”担心”,”没有”,”自信”,”没有”,”朋友”,...”无助”],r1为[“这种”,”矛盾”,”冲突”,”内心”,”可以”,”理解”,...,””]。由于设置了句子最大长度为20,语料中预处理之后词数未满20的需要用空字符串填补,词数超过20的需要截断,仅保留前面20个词语。
表2现有语料
2、根据前述咨询类别判断模型所介绍的方案计算出各个单词在所有咨询类别下的重要性向量,及语料xl中问句ui所有咨询类别下的重要性向量
3、对于训练语料中某一问句u,twu作为咨询类别判断模型的输入,可以得到问句u所属的目标咨询类别tu,tu=fct(u),为前面描述的5种咨询类别之一,如对于表1所示的第1个问句,经过模型计算得到的目标咨询类别设为4,表示为”适应性问题”。
4、根据步骤3中得到的目标咨询类别tu,按照前文技术方案中的公式计算u在目标咨询类别下的度量向量consultvecu,本实例中consultvecu维度为1*20,向量形式如图4所示。
5、对于语料xl中的每个句对{u,r},分别将句子u与r中的单词替换为词向量,则u、r均为20*100的矩阵,形式如图5所示;矩阵的第t行的值是句子u中第t个单词的词向量wordvecu,t,经过lstm网络后得到隐状态序列hu、hr,两个隐状态序列均包括20个长为200,如图4所示的向量。
6、按照技术方案中的计算公式及步骤5中的计算结果,算出4个维度为20*20的特征矩阵:simmatrix_sentence,simmatrix_consulttf,simmatrix_weighted,relevantmatrix_weighted,它们的形式均如图5所示。
需要强调的是,图4、图5所示的是一维向量特征、特征矩阵,其展示的是向量、矩阵的形式,内部的数字仅为示意。
7、经过步骤6后,语料中每个样本都计算得到的4个特征矩阵,作为cnn网络的输入,进行匹配度学习。可以使用tensorflow进行模型搭建,设置模型的损失函数为交叉熵误差函数,通过adamoptimizer进行参数学习,超参的选择可以通过网格搜索得到。
示例性的,假设有句对{u,r},其中问句u的原始文本内容为”保研失败,找工作四处碰壁,最近心情焦虑,有时无法控制眼泪,早上起床感觉很累,吃不下饭”,答句r的原始内容为名人名言”艰难的生活永无止境,但因此,生长也无止境”。经过句对匹配模型中的步骤1到6之后,得到句对的特征矩阵,以此作为fl的输入特征,可得到模型预测的匹配度标签。若标签为1则表示问句与答句r相匹配,答句r可以作为问句u的回复给出;若标签为0则说明匹配度模型认为答句r不能够作为问句u的回复。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。