发明内容
针对现有技术的缺点,本发明目的在于:提供一种电子渠道应用上的FAQ识别***及方法,该方法可以体现电子渠道增值业务的特征,误识别的现象比较少,用户感知度好。
本发明采用的技术方案为:一种电子渠道应用上的FAQ识别***,包括如下模块:
FAQ分词模块,该模块采用了前向、后向分词两种方法,并将两种方法得到的分词结果做了合并,即去掉了相同的结果,同时保留两者不同的结果;
检索出多候选模块,该模块中每个句子的特征向量的维数由基于电信运营商增值业务中相关词的个数决定,每一维的值是该维对应的词在该句子中的贡献,该词在该句中不出现,则认为该维值为0,所以每句话的特征向量维度很高,但其中只有几维值不为0,所以我们只关心其中不为0的维,即句子中分词结果中的词即可;
同义词扩展模块,该模块中同义词扩展计算得分的方式为:将可进行扩展的词依次换为该词的同义词,计算其得分;
自学习模块,该模块主要用于离线日志标注,该模块首先对比,运营商今日与昨日更新的资源知识,根据此差别,工具主动修改线下运营商积累一些知识问题,并录入识别知识的储备资源库,若最小粒度的问答对中,问题一半以上发生变化,则线下标注的部分,提示运营商进行核定。
其中,所述的FAQ分词模块采用的具体算法为:采用了前向、后向分词两种方法,并将两种方法得到的分词结果做了合并,即去掉了相同的结果,同时保留两者不同的结果。
其中,所述的检索出多候选模块采用的具体算法为:
每个句子的特征向量的维数由字典中词的个数决定,每一维的值是该维对应的词在该句子中的贡献,该词在该句中不出现,则认为该维值为0,所以每句话的特征向量维度很高,但其中只有几维值不为0,所以我们只关心其中不为0的维,即句子中分词结果中的词即可;具体如下:
首先在索引文件时会针对建索引的句子进行计算它的要素词权重得分,
(1)、如表1所示第一条模板:
表1“数据流量功能暂停与恢复”分词结果为:
分词结果 |
词属性 |
该类词权重 |
得分 |
暂停 |
开通取消类 |
3 |
3 |
恢复 |
开通取消类 |
3 |
3 |
数据流量功能 |
业务类 |
7 |
7 |
共分出3个词,所以特征向量应为(0…0,3,0…7,0…0,3,0…0)即只有“暂停”“恢复”“数据流量功能”对应的维度不为0,所以计算该向量的模的平方为:
3*3+3*3+7*7=67
(2)“数据流量套餐变更”分词结果为表2所示第二条模板:
表2
分词结果 |
词属性 |
该类词权重 |
得分 |
恢复 |
开通取消类 |
3 |
3 |
数据流量功能 |
业务类 |
7 |
7 |
所以计算该向量的模的平方为:
3*3+7*7=58
如果用户输入的短信为“请把我的数据流量暂停了,谢谢”,
提要素结果为表3所示:
表3
分词结果 |
词属性 |
该类词权重 |
得分 |
暂停 |
开通取消类 |
3 |
3 |
数据流量功能 |
业务类 |
7 |
7 |
所以计算该向量的模的平方为:
3*3+7*7=58
计算a,b两向量夹角余弦值公式cosα=a.b/|a|*|b|;
输入短信特征向量与第一条模板特征向量点积结果为0*0+…0*0+3*3+7*7=58;
输入短信特征向量与第二条模板特征向量点积结果为0*0+…0*0+7*7=49;
所以与第一条模板得分为
与第二条模板得分为
其中,所述的同义词扩展模块采用的具体算法为:
同义词扩展计算得分的方法为:将可进行扩展的词依次换为该词的同义词,计算其得分;如果用户输入为“想把我的gprs暂停了”;
提要素结果为表4所示:
表4
分词结果 |
词属性 |
该类词权重 |
得分 |
暂停 |
开通取消类 |
3 |
3 |
gprs |
业务类 |
7 |
7 |
计算该向量的模的平方为:
3*3+7*7=58
则认为gprs与“移动数据流量功能”为同义词;
则在计算得分时,先按“暂停,gprs”计算一遍得分,这时,第一条模板的得分为 第二条模板得分Score_B1为
同于现行***在同义词扩展中将词的权重做了降低,具体作为是乘0.8,所以再将gprs替换成其同义词“移动数据流量功能”,按“暂停、移动数据流量功能”计算得分是计算第一条模板的得分为 第二条模板得分
然后找到最大值为Score_A2,即模板1的最终得分是0.647;同理模板2的最终得分是0.54。
其中,所述的自学习模块采用的具体算法为:根据昨日局方提供的问答库、今日局方提供的问答库将线下积累的问答库进行升级,从而实现动态更新问答库,主要逻辑如下:
首先对比出局方问答对变化情况,若局方在某个主题名称(style)下新增了问题(Question),首先判断是否与问答对知识库(QA)是否相同,若相同则不做更改;若新增的问题(Question)与我们之前的标注不一致,则调整我们该主题名称(style)的所有问答对,若局方没有新增问题(Question),而是删除了部分问题(Question),首先判断该主题名称(style)是否全部删除,则之前标注的部分该主题名称(style)及其问答对全部删除;若该主题名称(style)仍然保留,但是其下的问题库一半以上发生变动,则将我们标注的部分提交局方确认;若只是小部分变动,则整体以局方为主,其中:局方指的是运营商;QA库为问答对知识库;Style为问答对中的主题名称。
本发明另外提供一种电子渠道应用上的FAQ识别方法,包括如下步骤:
(1)FAQ分词步骤后,将用户输入的短信分词保存起来;
(2)进入检索多候选步骤,将集内所有Question分词,逐一与用户输入短信比对,计算得分,在海量集合中,计算出得分最高的若干项,通常我们保留前10项结果;
(3)在(2)的计算过程中,会基于运营商增值业务的同义词进行同义词得分转换,据此,保证多样化的问题,在检索的过程中同样被检索出来;
(4)经过(2)、(3)后,得出前10个候选,将得分最高的候选项回复内容,推送给用户;将其与候选展现给用户查看;
(5)前4项都是线上实现的,知识库越大,计算越准确,同时,这些问题对应的答案根据的实际情况,会有所变化,整个问答对的变化是很快的,所以,需要及时应对各种变化,则需要自学习功能;
(6)自学习是对比局方的问答对变化,及时调整我们线下标注的问答对,达到快速的更新整个线上问答对知识库效果;
(7)如此线上及时检索,线下及时更新,保证整个识别率更高,覆盖度更广。
本发明与现有技术相比的优点在于:
1.本发明形成专有字典。对增值业务划分要素词。分为:业务要素词、操作要素词、特殊要素词等。同时支持词性扩展。
2.检索时,侧重于业务要素词检索。
3.同义词也根据词性划分,多组同义词见不传递。使得提高识别率时,多候选中至少出现与用户输入存在相同词
4.自学习中,知识更新,通过我们的资源升级工具,对比出差异后,提交给运营商知识库人员审核后,线上更新。
具体实施方式
如图4所示。***整体构架如下:
(1)QA库中所有问题,使用通用字典进行分词,其中通用字典是科大讯飞积累的24万词汇。
(2)从(1)中的分词结果中,提取QA库中与知识标题(Style)相关的要素词,形成专有字典。
(3)专有字典中,包含词性:业务要素词(例如:gprs是业务要素词,这是运营商常见的业务类型)、操作要素词(例如:查询、开通是操作要素词,能真实反映用户意图的词语)、其他要素词(例如:资费、使用方法是其他要素词,能真实反映用户咨询重点),要素词权重(这个可以动态调整,当前根据统计,建议比例为:7:3:1)等。这是分词模块处理过程。
(4)根据前三个步骤,讲问题、所属业务、所属知识标题、所有关联要素词,构建索引,形成索引文件。这是索引构建模块处理过程。
(5)在要素词扩展的过程中,有些词语之间是等同的。例如:gprs与数据流量,在业务层面当前是一致的,这些的词语在电子渠道的应用中较普遍。在线下标注的过程中,我们会维护一个同义词列表,在构建索引文件时,同时将同义词列表也加入到其中。这是同义词模块的处理过程。
(6)当用户输入短信后,在索引文件中进行查找,快速给出多候选。称为多候选模块。
1、FAQ分词模块
无论是构建索引还是识别时使用的为同一套分词***,该***分词结果一定为电子渠道词典中的词,词典中未出现的词会被丢弃。
该***采用了前向、后向分词两种方法,并将两种方法得到的分词结果做了合并,即去掉了相同的结果,同时保留两者不同的结果。
例如,词典内包含机械、工业出版社、机械工业、出版社、算法导论、这本书6个词。
那么针对“我要找机械工业出版社的算法导论这本书”进行分词,由于我要找这个词在词典中没有出现,则不会产生结果;根据最大后向分词理论,可以知道后续分词结果为“这本书、算法导论、工业出版社、机械”;
前向结果为“机械工业、出版社、算法导论、这本书”;
“算法导论”与“这本书”在两种分词方式中均出现了,只保留一次,两种中不同的部分,均会被保留,所以最后结果为:
“这本书、算法导论、工业出版社、机械、机械工业、出版社”。
其中,前向分词逻辑如图6所示。
其中,后向分析的逻辑说明如下:
逆向匹配法思想与正向一样,只是从右向左切分,例如:
输入例句:S1=”计算语言学课程有意思”;
定义:最大词长MaxLen=5;S2=”“;分隔符=“/”;
假设存在词表:…,计算语言学,课程,意思,…;
最大逆向匹配分词算法过程如下:
1)S2=”";S1不为空,从S1右边取出候选子串W=”课程有意思”;
2)查词表,W不在词表中,将W最左边一个字去掉,得到W=”程有意思”;
3)查词表,W不在词表中,将W最左边一个字去掉,得到W=”有意思”;
4)查词表,W不在词表中,将W最左边一个字去掉,得到W=”意思”
5)查词表,“意思”在词表中,将W加入到S2中,S2=”意思/”,并将W从S1中去掉,此时S1=”计算语言学课程有”;
6)S1不为空,于是从S1左边取出候选子串W=”言学课程有”;
7)查词表,W不在词表中,将W最左边一个字去掉,得到W=”学课程有”;
8)查词表,W不在词表中,将W最左边一个字去掉,得到W=”课程有”;
9)查词表,W不在词表中,将W最左边一个字去掉,得到W=”程有”;
10)查词表,W不在词表中,将W最左边一个字去掉,得到W=”有”,这W是单字,将W加入到S2中,S2=“/有/意思”,并将W从S1中去掉,此时S1=”计算语言学课程”;
11)S1不为空,于是从S1左边取出候选子串W=”语言学课程”;
12)查词表,W不在词表中,将W最左边一个字去掉,得到W=”言学课程”;
13)查词表,W不在词表中,将W最左边一个字去掉,得到W=”学课程”;
14)查词表,W不在词表中,将W最左边一个字去掉,得到W=”课程”;
15)查词表,“意思”在词表中,将W加入到S2中,S2=“课程/有/意思/”,并将W从S1中去掉,此时S1=”计算语言学”;
16)S1不为空,于是从S1左边取出候选子串W=”计算语言学”;
17)查词表,“计算语言学”在词表中,将W加入到S2中,S2=“计算语言学/课程/有/意思/”,并将W从S1中去掉,此时S1=”";
18)S1为空,输出S2作为分词结果,分词过程结束。
2、检索出多候选模块
每个句子的特征向量的维数由字典中词的个数决定,每一维的值是该维对应的词在该句子中的贡献,该词在该句中不出现,则认为该维值为0,所以每句话的特征向量维度很高,但其中只有几维值不为0,所以我们只关心其中不为0的维,即句子中分词结果中的词即可。
首先在索引文件时会针对建索引的句子进行计算它的要素词权重得分。例如:
(1)“数据流量功能暂停与恢复”分词结果为:
表1
共分出3个词,所以特征向量应为(0…0,3,0…7,0…0,3,0…0)即只有“暂停”“恢复”“数据流量功能”对应的维度不为0,所以计算该向量的模的平方为:
3*3+3*3+7*7=67
(2)“数据流量套餐变更”分词结果为:
表2
所以计算该向量的模的平方为:
3*3+7*7=58
如果用户输入的短信为“请把我的数据流量暂停了,谢谢”。
提要素结果为
表3
所以计算该向量的模的平方为:
3*3+7*7=58。
计算a,b两向量夹角余弦值公式cosα=a.b/|a|*|b|;
输入短信特征向量与第一条模板特征向量点积结果为0*0+…0*0+3*3+7*7=58;
输入短信特征向量与第二条模板特征向量点积结果为0*0+…0*0+7*7=49;
所以与第一条模板得分为
与第二条模板得分为
举例说明:
当用户输入:流量包年套餐,经过分词后,会分出词语:流量、包年、套餐,根据以上计算,可以得到以下几个候选:
第一个候选:biz:GPRS
Type:数据流量包年或半年套餐跟普通套餐有什么不一样的吗?Question:流量包年套餐
b_Score:0.800000 Score:1.000000
第二个候选:biz:积分服务
Type:怎么用积分兑换流量包?
Question:流量包
b_Score:0.632456 Score:0.632456
3、同义词扩展模块
同义词扩展计算得分的方法为:将可进行扩展的词依次换为该词的同义词,计算其得分。
例如:用户输入为“想把我的gprs暂停了”。
提要素结果为:
表4
计算该向量的模的平方为:
3*3+7*7=58
我们可以认为gprs与“移动数据流量功能”为同义词。
则在计算得分时,先按(暂停,gprs)计算一遍得分,这时,模板1的得分为:
模板2得分
同于现行***在同义词扩展中将词的权重做了降低,具体作为是乘0.8,所以再将gprs替换成其同义词“移动数据流量功能”,按(暂停、移动数据流量功能)计算得分是计算模板1的得分为
(模板2得分Score_B2为
然后从Score_A*中找到最大值为Score_A2,即模板1的最终得分是0.647;同理模板2的最终得分是0.54。
举例说明:
当用户输入:流量,经过分词后,会分出词语:流量,在***中,我们设定gprs与流量是同义词,则检索结果中,最匹配的应该是完全相同的,其次是包含了gprs和流量的。候选结果示例如下:
第一个候选:biz:GPRS
Type:手机上网如何收费?
Question:流量
Score:1.000000
第二个候选:biz:GPRS
Type:手机上网如何收费?
Question:gprs流量
b_Score:0.894427
Score:0.894427
4、自学习模块
自学习模块也可以称为资源升级模块。
根据昨日运营商提供的问答库、今日局方提供的问答库将线下积累的问答库进行升级。从而实现动态更新问答库。主要逻辑如图4所示,具体流程图如图5所示。
其中:局方指的是运营商;QA库为问答对知识库;Style为问答对中的主题名称。
首先对比出局方问答对变化情况,若局方在某个style下新增了Question,首先判断是否与我们积累的问题库是否相同,若相同则不做更改;若新增的Question与我们之前的标注不一致,则调整我们该style的所有问答对。若局方没有新增Question,而是删除了部分Question,首先判断该Style是否全部删除,则之前标注的部分该Style及其问答对全部删除;若该Style仍然保留,但是其下的问题库一半以上发生变动,则将我们标注的部分提交局方确认;若只是小部分变动,则整体以局方为主。
使用过程说明:
依次输入的内容如下:
a.昨日局方FAQ文件路径
b.昨日我方积累FAQ文件路径
c.今日局方FAQ文件路径
d.需要将今日无风险无错误的FAQ文件输出路径
按照以上算法逻辑,对输入的FAQ资源进行对比,最终的输出结果格式有5种,如下:
对应于结果1:
2012/3/3018:01:17:963[信息]:[IsNewInCMCCNow]:怎么开通GPRS
上述表明,“怎么开通GPRS”已经被局方添加至新的QA库中,且局方标的Style与我方昨天标的Style相同,今日我方QA库中将不在添加该句。
对应于结果2:
2012/3/3018:01:17:963[信息]:[IsNewInCMCCNowButDIFF]:Question:给我开通GPRS
上述表明,“怎么开通GPRS”已经被局方添加至新的QA库中,但局方标的Style与我方昨天标的Style不同,今日我方QA库中将不在添加该句。
对应于结果3:
2012/3/3018:01:17:964[信息]:[NoExistTheStyle]:Question:怎么开通寒假两城一家Sytle:寒假两城一家
上述表明,“怎么开通寒假两城一家”对应的Style寒假两城一家在新的局方QA库中已经不存在了,今日我方QA库中将不在自动添加该句。
同理对应于结果4,日志格式为[信息]:[Normal]:
对应于结果5,日志格式为[信息]:[Risk]: 。