前记
最近做一些文本匹配相关的事,有两篇百度的nlp相关讲得不错
百度语义计算技术及其应用
语义表示
- 从基于term的multi-hot ,Topic Model ,CBOW,ERNIE
-
ERNIE与BERT最大的区别是在于进行了知识增强,引入了中文词、实体等先验语义知识进来学习,在中文评测中都取得了更好的成绩。详细见下图
bert vs ernie
语义匹配
-
挑战主要有四个
挑战 -
基础做了很多工作,挖掘同义词、词级别泛化、语义紧密度、对齐资源挖掘、共线关联计算等。
-
从传统的VSM到基于深度神经网络的SimNet
-
长文本匹配有一个很大的挑战,就是让 Document 直接做表示,如果文本太长,很多信息会丢失,计算效率也非常低。但如果我们先做一个粗匹配,选择好相关的句子以后再做精细化的匹配,效果就比较不错。有一篇论文RLTM发表。
-
模型应用效果并不是静态的,而是动态变化的,特别是搜索反馈的数据,随着时间的推移,网民在搜索的时候,Term 的分布、主题的分布会发生变化,所以数据的时效性影响还是非常大的。
-
我们把 Bigram 知识也融入了进去。尽管 RNN 已经很厉害了,但加入知识、模型还是会有很大的提升。
-
新的模型:SimNet-QC-MM,会考虑 Query 中每个词被 Title 和正文覆盖的情况,并基于 Matching Matrix 匹配方法计算。
标题+正文 -
语义模型压缩技术,Embedding 一维从32bits压缩到 4bits
神经网络语义匹配技术
介绍
SimNet 在语义表示上沿袭了隐式连续向量表示的方式,但对语义匹配问题在深度学习框架下进行了 End-to-End 的建模,将词语的 Embedding 表示与句篇的语义表示、语义的向量表示与匹配度计算、文本对的匹配度计算与 pair-wise 的有监督学习全部统一在一个整体框架内。在实际应用场景下,海量的用户点击行为数据可以转化大规模的弱标记数据,搭配我们研发的高效并行训练算法,大数据训练的 SimNet 显著超越了主题模型类算法的效果,并首次实现了可完全取代基于字面匹配的策略,而且可以直接建模非相似度类的匹配问题。
框架
- 输入层, look up table 将文本词序列转换为 word embedding
- 表示层,词到句的构建过程,简单是累加的BOW方法,还支持CNN、RNN等
- 匹配层
-- Representation-based Match,包括cos和mlp匹配
-- Interaction-based Match,计算成本大,不会在表示层将文本转换成唯一的一个整体表示向量,而一般会保留和词位置相对应的一组表示向量,一般通过两段文本的matching matrix进行卷积等操作 - 采用了 pair-wise Ranking Loss 来进行 SimNet 的训练。以网页搜索任务为例,假设搜索查询文本为 Q,相关的一篇文档为 D+,不相关的一篇文档为 D-,二者经过 SimNet 网络得到的和 Q 的匹配度得分分别为 S(Q,D+) 和 S(Q,D-),而训练的优化目标就是使得 S(Q,D+)>S(Q,D-)。实际中,我们一般采用 Max-Margin 的 Hinge Loss:max{0,margin-(S(Q,D+)-S(Q,D-))}
改进
- 细粒度: SimNet 框架下需要降低对精准切词的依赖,或者说要考虑如何从切词角度来进一步提升匹配效果。如高频共现片段和句法结构信息,能否作为先验知识融入 SimNet 框架发挥作用,也是值得探索的方向。将字粒度和词粒度进行融合互补。另一方面,由于切词自身不存在唯一客观标准,实际上不同的切分方式也可以实现互补,比如可以同时使用大粒度切词和细粒度切词。这样一来,我们对单一切词的精度要求就可以不那么高了。这也从某种意义上降低了语义匹配任务对切词的高度依赖。多切分粒度融合在输入层、表示层和匹配层都可以设计实现。
- 粗粒度:1)基于大数据只挑选少量对匹配任务有很好信息量的高频共现 Term 组合,作为 Bigram 词加入字典,进一步显著提升了模型效果。2)跨词的 Collocation 搭配也非常重要,我们使用依存句法分析工具来获得相应的 Collocation 片段,我们对输入语料构建依存分析树,统计父节点和子节点共现频率。
网友评论