项目总结:蓝凌

https://blog.csdn.net/lipengcn/article/details/85313971
(文本匹配详解,有监督,无监督)

2019.7.7新总结:
项目流程新梳理:

  1. 只要输入的数据都会重新建立索引。
    用户调用2接口时, 通过建立的索引返回候选句子,WMD进行无监督 语义层面上的相似度计算排序,
    用户输入会标明是 普通问答进行匹配,还是指令语句进行解析, 相似度值设置阈值,无法识别的阈值,和相似语句的阈值,
    阈值都很低的话,说明输入语句在匹配模型或者场景分类模型里不存在,就返回无法识别或者相似。

  2. 高于相似阈值的话,开始调用匹配模型或者场景分类模型。
    场景分类模型:模型对输入指令语句预测场景类别,预测的类别在候选排名靠前的句子中,就输出这个类别;不在的话,和相似度靠前 的前几个候选语句投票的类别,

普通问答的:输入句子和候选句子进行意图匹配预测,预测结果为正例的,排名最靠前的即为最终的结果。

  1. 实体解析:
    解析出人名, 时间, 地名

bilstm 序列标注本身就很好了, 可是难免有错误,crf是为了在输出的时候,考虑上下文序列的关系。
crf学习一个状态矩阵。相当于增加了一层约束,考虑句子正常的结构,不会输出非法的序列。提高预测序列的准确率。

先分词, 然后 bilstm + CRF (命名实体识别)
如果没有识别出来,那就说明这句话没有实体日, 识别出来之后,去实体库里检索,高于某个阈值,则匹配到。
主要是一些很偏的人名,地名, 时间识别的都很好。

可以使用词典,地名,人名,时间

https://www.cnblogs.com/rise0111/p/11440365.html
(WMD的详解)

WMD(Word Mover’s Distance)1是2015年提出的一种衡量文本相似度的方法。它具有以下几个优点:
效果出色:充分利用了word2vec的领域迁移能力
无监督:不依赖标注数据,没有冷启动问题
模型简单:仅需要词向量的结果作为输入,没有任何超参数
可解释性:将问题转化成线性规划,有全局最优解
灵活性:可以人为干预词的重要性

当然它也有一些缺点:
词袋模型,没有保留语序信息
不能很好的处理词向量的OOV(Out of vocabulary)问题
处理否定词能力偏差
处理领域同义词互斥词的能力偏差
时间复杂度较高:O(p3logp)O(p3log⁡p)(其中,p代表两篇文本分词去重后词表的大小)

计算方法:(1)去掉停用词(2)计算出每个词在文本中所占权重,一般用词频来表示(3)对于每个词,找到另一条文本中的词,确定移动多少到这个词上。如果两个词语义比较相近,可以全部移动或移动多一些。如果语义差异较大,可以少移动或者不移动。用词向量距离与移动的多少相乘就是两个词的转移代价(4)保证全局的转移代价加和是最小的

1)WMD文本语义相似度计算(涉及到语义层面,用的是语义词向量)
句子匹配是很多nlp工作的基础, 句子相似又是句子匹配的基础,
WMD是一种使用词向量,无监督的方式实现的相似度计算。两篇文档中任意两个词的词向量的欧式距离,然后加权求和。c(i, j)是i, j两个词对应词向量的欧式距离。Tij表示词语i有多少转移到了词语j。
T是加权矩阵,一个词移到另一个词分得的权重(通过距离比较),一个词到其它所有词的权重和为1.

在这里插入图片描述
https://blog.csdn.net/cht5600/article/details/53405315
在词向量空间中,语义相似的词距离会比较小,而词移距离(WMD)正是基于词向量这种特性开发出来的,

https://www.jianshu.com/p/8e436cd3d658 (介绍文本相似度计算)
WMD方法来自EMD(Earth Mover‘s Distance), EMD也是一种距离度量的定义,测量某种分布之间的距离。
把一个变成另一个所需要的最小工作量,就是EMD对距离的定义。

词嵌入(Word Embedding)和EMD相结合,度量文档距离,提出了WMD(word mover’s distance)算法,
WCD、RWMD,这两种算法比起WMD,降低了复杂度,也降低了精度。

2)TextCNN
https://www.jianshu.com/p/f69e8a306862 (textCNN中文文本分类)

3)实体解析

https://www.jianshu.com/p/aed50c1b2930

https://blog.csdn.net/xxzhix/article/details/81514040

核心,1)对数据建立索引(用于精确匹配);2. WMD(无监督的模型,相似度计算,排序,对于无法精确匹配的,设置阈值)

普通问答(问答类型的):返回相似度最高的匹配问句(后面可以接应用场景,返回库里对应的答案, 比如:特定领域的特定知识库)

指令(执行某种操作,命令型的):应用场景,语音助手等,1. 分类模型:识别指令类型,2.解析模型:对指令进行解析,提取出机构名(地名)、人名、时间,做什么。

接口1: index

数据更新

问法类型:
0:普通问答,
1:指令,
2:主数据(一些名词)

操作类型:0,新增/修改,1:删除

接口2: match
对发送过来的内容识别,判断是普通问答(0),还是指令(1)。或者是匹配到了相似问题(8),阈值太低(匹配不到9)

普通问答:问句匹配,(相似度计算)

指令:

主数据:字典,也会进行相似度匹配计算,有一样的就返回,没有就进行字,拼音的模糊匹配。返回最相似的。

结果总结:
指令问法随机分成5份,4份用来训练,1份用来测试。识别准确率平均87.6%。
错误的有:指令识别错误,场景识别错误。

4.10 面试总结:
蓝凌项目问题:

  1. 数据量那么少,训练不够怎么办,会过拟合?
    答案: 我们模型是私下预先训练好,迁移到项目里用的,在项目只进行微调,考验的是迁移能力;
    同时,有很多防止过拟合的操作机制,

发现过拟合:验证集上准确率饱和,就停止训练。

1.增大训练数据,人为构造数据;

  1. dropout: 随机删除网络中的一般隐藏的单元,输入层、输出层神经元保持不变。
    训练网络的健壮性,丢掉不同的神经元,相当于训练不同的神经网络,多次之后,相当于投票的方式,降低过拟合,提高泛化能力。

  2. 网络规范化,L1\L2规范化,学习小规模数据的权重,

2. 蓝凌项目细节
用户输入句子,不确定是问答还是指令,从两个库里都返回候选; 1)指令这边,分类模型分类(???错了怎么办),类别和指令候选进行比较,过滤掉类别不同的,同时还有wmd相似度计算排序;2)问答那边,相似度计算,排序,

最后,返回哪一个????

4.22 补充:
数据量多说点,8000条左右,效果还不错,够用。
输入可以带0,1(是普通问答,还是指令),只去相应的类别里去找。
不输入0,1时,两个模块都去找,看相似度最高的句子(WMD)是哪个类别。
CNN 分类,很简单,自己实现的。在自己数据集上做调整,匹配模型参考论文,自己实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值