一种基于词性和停用词过滤的语义识别方法及系统与流程

文档序号:23729435发布日期:2021-01-26 19:42阅读:176来源:国知局
一种基于词性和停用词过滤的语义识别方法及系统与流程

[0001]
本发明涉及语义识别技术领域,具体涉及一种基于词性和停用词过滤的语义识别方法及系统。


背景技术:

[0002]
1956年以前,可以看作自然语言处理的基础研究阶段。一方面,人类文明经过了几千年的发展,积累了大量的数学、语言学和物理学知识。这些知识不仅是计算机诞生的必要条件,同时也是自然语言处理的理论基础。另一方面,阿兰
·
图灵在1936年首次提出了“图灵机”的概念。“图灵机”作为计算机的理论基础,促使了1946年电子计算机的诞生。而电子计算机的诞生又为机器翻译和随后的自然语言处理提供了物质基础。
[0003]
从50年代中期开始到60年代中期,以chomsky为代表的符号派学者开始了形式语言理论和生成句法的研究,60年代末又进行了形式逻辑系统的研究。而随机派学者采用基于贝叶斯方法的统计学研究方法,在这一时期也取得了很大的进步。但由于在人工智能领域中,这一时期多数学者注重研究推理和逻辑问题,只有少数来自统计学专业和电子专业的学者在研究基于概率的统计方法和神经网络,所以,在这一时期中,基于规则方法的研究势头明显强于基于概率方法的研究势头。
[0004]
随着研究的深入,由于人们看到基于自然语言处理的应用并不能在短时间内得到解决,而一连串的新问题又不断地涌现,于是,许多人对自然语言处理的研究丧失了信心。从70年代开始,自然语言处理的研究进入了低谷时期。90年代中期以后,有两件事从根本上促进了自然语言处理研究的复苏与发展。一件事是90年代中期以来,计算机的速度和存储量大幅增加,为自然语言处理改善了物质基础,使得语音和语言处理的商品化开发成为可能;另一件事是1994年internet商业化和同期网络技术的发展使得基于自然语言的信息检索和信息抽取的需求变得更加突出。
[0005]
最近几年出现了如下的一些自然语言处理技术:神经语言模型、多任务学习、word嵌入、nlp的神经网络、序列到序列模型、注意力机制、基于记忆的神经网络、预训练语言模型。
[0006]
在上述自然语言处理相关技术的快速发展下,nlp技术现已被用在生活中的各个场景中,也体会到了nlp技术发展带来的各种便捷,如:购物客服、商品导购、生活服务助手等。这些都是基于nlp技术发展带来的产物。
[0007]
在nlp快速发展的当下,语义识别一直是一个热门的话题,语义识别不同于其他ai服务,因为中文语言的博大精深,使得同样一句话的表述会存在若干种,这给语义识别带来了巨大的挑战。
[0008]
目前市面上的语义识别机器人都是在特定场景下的,如:购买火车票、购买衣服、生活服务助手等,他们都需要针对特定场景进行语料定制化,不管是基于机器学习的还是基于模型训练的,都是以大量的语料为前提,同一个意图需要考虑到用户的若干种问法,配置多条语料,这些语料的录入格式是一个非常巨大的工作量。因此,提出一种基于词性和停
用词过滤的语义识别方法及系统。


技术实现要素:

[0009]
本发明所要解决的技术问题在于:如何解决现有的识别方法中存在的需要录入大量语料的问题,提供了一种基于词性和停用词过滤的语义识别方法。
[0010]
本发明是通过以下技术方案解决上述技术问题的,本发明包括以下步骤:
[0011]
s1:分词处理
[0012]
将用户的输入进行分词处理,处理的结果为多个词语组成的结果集,并对各个词语的词性进行自动标注;
[0013]
s2:词性过滤
[0014]
去除分词结果集中的过滤属性表示的词语;
[0015]
s3:停用词过滤
[0016]
去除分词结果集中属于停用词的词语;
[0017]
s4:语义相似度计算
[0018]
将依次经过步骤s1、s2、s3处理后的分词结果集重新进行句子拼接,组合成新的输入,把该输入作为用户想表达的真实意图,和系统已录入的语料进行文本相似度计算,找到最大相似度对应的语料,把该语料作为用户的意图。
[0019]
更进一步地,所述步骤s1的具体过程如下:
[0020]
s11:获取用户输入
[0021]
获取用户的输入内容,把该输入作为为用户的原始意图输入;
[0022]
s12:分词处理
[0023]
将用户的输入按照词语进行拆分,将一个长句子拆分成多个词语组成的集合;
[0024]
s13:词性标注
[0025]
对步骤s12中的多个词语进行词性标注;
[0026]
s14:输出结果集
[0027]
将经过上述处理后的分词结果集进行封装并传递给步骤s2。
[0028]
更进一步地,所述步骤s2的具体过程如下:
[0029]
s21:获取分词结果集
[0030]
获取经过步骤s14处理后的分词结果集;
[0031]
s22:遍历分词结果集
[0032]
设置变量n=0,判断是否存在该分词;如果存在,则执行步骤s23,否则执行步骤s24;
[0033]
s23:获取第n个分词
[0034]
从分词结果集中获取下标为n的分词,设置该分词为p,若p存在,表示遍历还没有结束,执行步骤s24,否则表示遍历结束,执行步骤s27;
[0035]
s24:判断分词词性是否属于过滤词性
[0036]
获取系统中预先设置的过滤的词性集合t,并判断p的词性是否在t中,若p在t中,表示该p需要删除,执行步骤s25,否则表示该词性不需要进行过滤,并进行下一个分词的词性判断,执行步骤s26;
[0037]
步骤s25:删除分词p
[0038]
若p在t中,则从分词结果集中把分词p删除;
[0039]
步骤s26:下标n进行自增操作
[0040]
重新设置n的值为n+1,遍历下一个分词,并返回步骤s23;
[0041]
步骤s27:封装剩余的分词结果集
[0042]
将经过上述步骤处理后的分词结果集进行重新封装,组合成新的分词结果集。
[0043]
更进一步地,所述步骤s3的具体过程如下:
[0044]
s31:获取分词结果集
[0045]
获取经过步骤s27处理后的分词结果集,并遍历分词结果集;
[0046]
s32:遍历分词结果集
[0047]
设置变量m=0,判断是否存在该分词;若存在,表示遍历还没有结束,执行步骤s33,否则表示遍历结束,执行步骤s34;
[0048]
s33:获取第m个分词
[0049]
从分词结果集中获取下标为m的分词,设置该分词为q;
[0050]
s34:判断分词词语是否属于停用词
[0051]
获取系统中预先设置的停用词集合u,并判断q的词语是否在u中,若q在u中,表示该q的词语属于停用词,对其进行过滤,执行步骤s35,否则执行步骤s36;
[0052]
s35:删除分词q
[0053]
把q从分词结果集中删除;
[0054]
步骤s36:下标m进行自增操作
[0055]
重新设置m的值为m+1,遍历下一个分词,并返回步骤s33;
[0056]
步骤s37:拼接剩余的分词结果集
[0057]
将经过上述步骤处理后的分词结果集进行遍历,将遍历出来的分词按照顺序进行词语拼接,组合成新的输入,将该输入input作为用户的真实意图。
[0058]
更进一步地,所述步骤s4的具体过程如下:
[0059]
s41:获取用户新的输入
[0060]
获取经过步骤s37处理后的输入,把该输入作为用户的真实意图;
[0061]
s42:获取系统中的语料
[0062]
获取系统中预先录入的语料库,将语料库加载到系统的内存中;
[0063]
s43:遍历语料,设置c=0,maxscore=0,intent=null
[0064]
遍历系统的语料库,先设置下标c=0,最大相似度分数maxscore=0,使用maxscore来记录语料库中和用户输入的最大相似分数,使用intent来记录最大分数对应的语料;
[0065]
s44:获取第c个语料
[0066]
获取下标为c的语料,设置该语料为i,若i存在,则进行步骤s45,否则进行步骤s48;
[0067]
s45:计算相似度
[0068]
计算语料i和用户的输入的文本相似度,采用余弦相似度算法计算2个文本之间的相似度,得到相似度分数s:
[0069]
s46:分数比较
[0070]
计算分数s和maxscore的大小,若s大于maxscore,表示找到了一个更加符合用户意图的语料,则将s的值赋值给maxscore,并将i赋值为intent,然后执行步骤s47;
[0071]
s47:下标c进行自增操作
[0072]
重新设置c的值为n+1,遍历下一个分词,并返回步骤s44;
[0073]
s48:返回系统匹配的语料
[0074]
将intent代表的语料作为用户的真实意图。
[0075]
更进一步地,在所述步骤s45中,具体的计算步骤如下:
[0076]
s451:通过中文分词,把用户输入和系统语料分成独立的词集合;
[0077]
s452:求出两个词集合的并集;
[0078]
s453:计算各自词集的词频并将词频向量化;
[0079]
s454:代入余弦公式求出文本相似度。
[0080]
本发明还提供了一种基于词性和停用词过滤的语义识别系统,采用上述的语义识别方法对用户的语义进行识别,包括:
[0081]
分词处理模块,用于将用户的输入进行分词处理,处理的结果为多个词语组成的结果集,并对各个词语的词性进行自动标注;
[0082]
词性过滤模块,用于去除分词结果集中的过滤属性表示的词语;
[0083]
停用词过滤模块,用于去除分词结果集中属于停用词的词语;
[0084]
相似度计算模块,用于将处理后的分词结果集重新进行句子拼接,组合成新的输入,把该输入作为用户想表达的真实意图,和系统已录入的语料进行文本相似度计算,找到最大相似度对应的语料,把该语料作为用户的意图;
[0085]
中央处理模块,用于向其他模块发出指令,完成相关动作;
[0086]
所述分词处理模块、所述词性过滤模块、所述停用词过滤模块、所述相似度计算模块均与中央处理模块电连接。
[0087]
本发明相比现有技术具有以下优点:该基于词性和停用词过滤的语义识别方法,通过分词、停用词、文本相似度计算来进行语义识别,可以让语料库在数据量少的情况下能够泛化更多的语义能力,不仅可以节省语料库的搭建成本,还可以提高语义识别的效率,给用户带来更好的感知体验,值得被推广使用。
附图说明
[0088]
图1是本发明实施例中语义识别方法的总体流程示意图;
[0089]
图2是本发明实施例中分词处理流程图;
[0090]
图3是本发明实施例中词性过流程图;
[0091]
图4是本发明实施例中停用词处理流程图;
[0092]
图5是本发明实施例中的文本相似度计算流程图。
具体实施方式
[0093]
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施
例。
[0094]
如图1所示,本实施例提供一种技术方案:一种基于词性和停用词过滤的语义识别方法,通过分词处理、词性过滤、停用词处理、文本相似度计算来达到语义识别的目的。解决了语义泛化问题,通过更少的语料能够表达更多的意图,抓住用户对话的核心内容,包括如下步骤:
[0095]
s1:分词处理
[0096]
利用hanlp工具录入标注好的实体、词性,将用户的输入使用hanlp工具进行分词处理,将分词后的词语结果集传入步骤s2。
[0097]
s2:词性过滤
[0098]
获取系统需要过滤的词性集合,遍历分词后的词语结果集,将分词词性在系统过滤词性集合中的词语删除,对用户的输入进行词性降噪处理,将剩余的分词结果集传入步骤s3。
[0099]
s3:停用词处理
[0100]
获取系统停用词集合,遍历分词结果集,将分词的词语在系统停用词集合中的词语删除,对用户的输入进行口语化降噪处理,将剩余的分词结果集遍历拼接返回一个新的字符串当做用户的真实输入,传递给步骤s4。
[0101]
s4:文本相似度计算
[0102]
计算步骤s3生成的新输入和系统语料库中已有的语料的相似度分数,获取分数最大的语料,作为用户的真实意图。
[0103]
如图2所示,在所述步骤s1中,其包括如下步骤:
[0104]
s11:获取用户输入
[0105]
通过输入框、asr等其他手段获取用户的输入内容,把该输入作为为用户的原始意图输入;
[0106]
s12:分词处理
[0107]
将用户的输入按照词语进行拆分,使用分割句子中词语的算法:maxmatch,该算法为贪心算法,将一个长句子拆分成若干个词语组成的集合,对于新词或者系统识别有误的结果,可以通过系统进行纠正,通过手动分的方式纠正,为识别错误的词语配置纠正词,在其他语句出现该词语时可自动进行纠正,保证分词的结果符合预期,否则会影响后面步骤的操作结果;
[0108]
s13:词性标注
[0109]
将步骤s12中的若干个词语进行词性标注,基于hmm去实现词性标注方法,实现基于hmm的词性标注方法中,模型的参数估计是其中的关键问题,通常利用词典信息约束模型的参数;假设输出符号表由单词构成(即词序列为hmm的观察序列),如果某个对应的『词汇-词性标记』没有被包含在词典中,那该词汇被标记为该词性标记的概率就为0;如果存在,那该词汇被标记为某词汇标记的概率为其所有可能被标记的所有词性个数的倒数,然后根据训练语料给定词性标记生成词的概率,根据训练语料来合理的估计模型概率,对于某词性标记j生成词wl的概率,分子用词wl出现的次数乘以该词汇被标记为该词汇标记的概率,分母是在训练语料范围内,所有词被标记为该词汇标记的概率乘以该词出现的次数,如:“你好”标注为问候语,“恩”、“呢”、“了”标注为语气词等,词性的标注是为了后面词性过滤步骤
使用,对于系统标注不准确的词性,可以通过人工干预手段进行标注,对于标注不准确的词语,通过可视化页面为词语手动勾选词性进行标注,保证分词的词性标注符合用户上下文环境,否则会影响后面步骤的操作结果;
[0110]
s14:输出结果集
[0111]
将经过上述处理后的分词结果集进行封装传递给步骤s2。
[0112]
如图3所示,在所述步骤s2中,其包括如下步骤:
[0113]
s21:获取分词结果集
[0114]
获取经过步骤s14处理后的分词结果集;
[0115]
s22:遍历分词结果集
[0116]
设置变量n=0,判断是否存在该分词;如果存在,则执行步骤s23,否则执行步骤s24;
[0117]
s23:获取第n个分词
[0118]
从分词结果集中获取下标为n的分词,设置该分词为p,如果该p存在,表示遍历还没有结束,执行步骤s24,否则表示遍历结束,执行步骤s27;
[0119]
s24:判断分词词性是否属于过滤词性
[0120]
获取系统中设置的过滤的词性集合t,并判断p的词性是否在t中,如果p在t中,表示该p需要删除,执行步骤s25,否则表示该词性是语义识别需要的,不需要进行过滤,可以进行下一个词性判断,执行步骤s26;
[0121]
s25:删除分词p
[0122]
如果p在t中,需要从分词结果集中把分词p删除;
[0123]
s26:下标n进行自增操作
[0124]
重新设置n的值为n+1,遍历下一个分词,并返回步骤s23;
[0125]
s27:封装剩余的分词结果集
[0126]
将经过上述步骤处理后的分词结果集进行重新封装,组合成新的分词结果集。
[0127]
如图4所示,在所述步骤s3中,其包括如下步骤:
[0128]
s31:获取分词结果集
[0129]
获取经过步骤s27处理后的分词结果集,并遍历分词结果集;
[0130]
s32:遍历分词结果集
[0131]
设置变量m=0,判断是否存在该分词;如果存在,表示遍历还没有结束,执行步骤s33,否则表示遍历结束,执行步骤s34;
[0132]
s33:获取第m个分词
[0133]
从分词结果集中获取下标为m的分词,设置该分词为q;
[0134]
s34:判断分词词语是否属于停用词
[0135]
获取系统中设置的停用词集合u,并判断q的词语是否在u中,如果q的词语在u中,表示该q的词语属于停用词,需要进行过滤,执行步骤s35,否则执行步骤s36;
[0136]
s35:删除分词q
[0137]
把q从分词结果集中删除;
[0138]
s36:下标m进行自增操作
[0139]
重新设置m的值为m+1,遍历下一个分词,并返回步骤s33;
[0140]
s37:拼接剩余的分词结果集
[0141]
将经过上述步骤处理后的分词结果集进行遍历,将遍历出来的分词按照语句中词语的顺序进行词语拼接,组合成新的输入input,把该输入input作为用户的真实意图;
[0142]
如图5所示,在所述步骤s4中,其包括如下步骤:
[0143]
s41:获取用户新的输入
[0144]
获取经过步骤s37处理后的输入input,把该输入input作为用户的真实意图;
[0145]
s42:获取系统中的语料
[0146]
获取系统中录入的语料库,将语料库加载到系统的内存中,提高系统的访问速度,本操作可以使用es、redis等nosql中间件进行辅助;
[0147]
s43:遍历语料,设置c=0,maxscore=0,intent=null
[0148]
遍历系统的语料库,先设置下标c=0,最大相似度分数maxscore=0,使用maxscore来记录语料库中和用户输入的最大相似分数,使用intent来记录最大分数对应的语料;
[0149]
s44:获取第c个语料
[0150]
获取下标为c的语料,设置该语料为i,如果i存在,则进行步骤s45,否则进行步骤s48;
[0151]
s45:计算相似度
[0152]
计算语料i和用户的输入input的文本相似度,采用余弦相似度算法计算2个文本之间的相似度,具体的计算步骤如下:
[0153]
s451:通过中文分词,把用户输入input和系统语料分成独立的词集合;
[0154]
s452:求出两个词集合的并集(称作词包,词包确定之后,词的顺序不能再修改,否则会影响到向量的变化);
[0155]
s453:计算各自词集的词频并将词频向量化;
[0156]
s454:代入余弦公式求出文本相似度;
[0157]
通过余弦相似度算法计算出2个文本的相似度分数s;
[0158]
s46:分数比较
[0159]
计算分数s和maxscore的大小,如果s大于maxscore,表示找到了一个更加符合用户意图的语料,需要将s的值赋值给maxscore,并将i赋值为intent,然后执行步骤s47;
[0160]
s47:下标c进行自增操作
[0161]
重新设置c的值为n+1,遍历下一个分词,并返回步骤s44;
[0162]
s48:返回系统匹配的语料
[0163]
将intent代表的语料作为用户的真实意图。
[0164]
需要说明的是,系统的少量语料虽然可以泛化更多的意图,但并不代表语料的质量也降低了,无论是机器学习还是模型训练,如果语料的质量不高,最终都会影响语义的识别效率。
[0165]
另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。
[0166]
本实施例通过分词处理用户的输入,将用户输入的长句子进行分词和词性标注;
通过词性过滤,对输入的内容进行词性降噪,将长句子转换为核心的短句,找到一句话的核心内容;通过停用词处理,将输入内容进行降噪处理,去除无关紧要的词语;通过文本相似度计算获取最佳意图。
[0167]
通过上述的处理,可以将用户输入的一个很长的内容转换为一个核心短句,而系统只需要录入核心短句语料即可达到很高的语义识别率,如:配置的语料假设为“查询天气”,那么当用户输入”您好,帮我查询一下明天合肥的天气”,上述的输入经过本方法的几个步骤处理后会去除“您好”(语气词)、“,“(标点符号)、”帮“(停用词)、”我“(停用词)、”一下“(停用词)、”明天“(时间词)、”合肥“(地点词)、”的“(停用词),那么经过上述步骤处理后的输入为:”查询天气“,和语料库中的语料计算文本相似度计算,能够获取非常高的相似度分数。通过上述例子可以看到基于词性和停用词过滤的语义识别方法不仅能够帮助企业减少语料搭建的成本,还能够提高语义识别率。
[0168]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1