又是一年开学季,看着大批莘莘学子步入高校,同时又有大批学生即将面临毕业,这一年要饱受论文的洗礼。在学术论文领域,几乎每一位大学生都避不开论文检索、查重环节。想写出一篇高质量论文,前期大量的信息储备必不可少,而文献检索成为我们获取信息的重要途径。

万方数据知识服务平台以客户需求为导向,整合了数亿条全球优质知识资源,依托强大的数据采集能力,应用先进的信息处理技术和检索技术,为决策主体、科研主体、创新主体提供高质量的信息资源产品。今天就来聊聊,我们如何使用百度飞桨PaddleNLP升级论文检索系统。

业务背景

万方论文检索系统的核心问题是文本匹配任务,这个系统需要在数亿条知识资源中,基于检索匹配算法,根据用户的检索词快速地在海量文献中查找相似文献。

在系统任务执行过程中,检索词和文献的相关性会直接反映到结果页面的排序上面,而排序准确率直接影响着用户的搜索决策效率和搜索体验。因此,快速且准确地刻画检索词和文档之间的深度语义相关性至关重要。

然而,面对海量数据和频繁的用户搜索请求,同时解决高速和高效问题,给万方文献检索系统带来了诸多挑战:

  • 难点1——标注数据少:由于人力资源紧张无法对系统中海量的数据资源进行标注,如何利用海量无监督数据,自动生成弱监督数据?

  • 难点2——很难精准计算语义相似度:如何准确计算用户检索词和文献之间的相似度?

  • 难点3——检索时效性差:面对海量资源和不断增长的用户需求,如何快速、高效得找到相关文献也是一大挑战。

除了检索场景外,论文查重、相似论文推荐的核心方法也是文本相似度计算。在这些业务上,我们经历了长期的探索,最终使用飞桨。得益于PaddleNLP丰富的中文预训练模型,面向工业级场景的模型选型与部署能力,使得我们非常高效的搭建了端到端工业级的文本向量学习和计算环境,实现了学术检索系统的多方面升级。

技术选型和项目实践

飞桨在产业实践方面提供了强悍的产品功能和技术支持,我们基于PaddleNLP中丰富前沿的预训练模型、使用Paddle Serving实现了服务端的快速部署,解决了实际业务落地中的痛点。

我们通过PaddleNLP提供的高质量中文预训练Word Embedding构造训练数据标签,结合SimCSE以及飞桨深度优化过的文本匹配预训练模型Sentence-BERT,大幅提升了算法精度。

在模型性能方面,我们采用了多线程数据预处理、模型降层、TensorRT部署。成熟开发工具的选用,极大地降低了应用深度学习技术进行产业落地的难度。

技术方案整体架构图

我们的技术方案整体架构图如上所示。概括来说,主要包括三部分:构造数据、模型选择和产业部署。

1. 构造数据

万方业务积累了海量的无监督数据,但是标注数据极少。我们使用PaddleNLP开源的高质量中文预训练词向量,快速构建了弱监督的相似文本匹配数据,节省了大量的人力标注成本。为了数据指标的进一步提升,我们还采用了无监督语义匹配模型SimCSE。

此外,万方搜索系统积累了大量用户行为日志数据(如浏览、点击、阅读、下载等),我们也从业务角度筛选出了大量监督数据。

SimCSE参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/text_matching/simcse

2. 模型选择

关于文本相似度计算,我们使用过字面匹配、word2vec、FastText等方法,都无法学到足够精度的文本语义表示。我们知道百度在搜索场景有丰富的技术积累,也关注到PaddleNLP里集成了ERNIE、BERT等一系列预训练语义模型,并且针对检索场景给出了系统化方案

近年来,以BERT、ERNIE为代表的预训练语言模型成为NLP任务的主流模型。Sentence-BERT使用孪生网络结构,在BERT模型的基础上进行Fine-Tune,引入(DSSM)双塔模型,符合我们的业务场景,因此我们选择该模型作为我们的基准模型。较FastText模型,Sentence-BERT的匹配效果提升了70%,用户的整体体验大幅度提高。

我们将数据库中的文献预先通过Sentence-BERT计算得到文献向量后,通过开源向量数据库Milvus建立索引库,快速召回相似向量,减少了检索系统的响应时间。

  • Sentence-BERT参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/text_matching/sentence_transformers

  • 语义索引策略参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/semantic_indexing

3. 产业部署

线上检索系统尤其需要考虑快速响应需求。Sentence-BERT 12层Transfomer结构,具有庞大的参数量和计算量,在部署上线时面临响应实时性的巨大挑战。

为了满足线上业务对于性能上的要求,我们通过飞桨原生推理库Paddle Inference 结合飞桨服务化部署框架Paddle Serving进行推理预测。在不损失精度的前提下,我们将Sentence-BERT 从12层压缩至6层,并结合了TensorRT加速等优化手段,使得QPS达到2600,超预期完成了目标。

延伸—检索场景整体方案

以上我们参考了PaddleNLP检索场景整体方案,其主要包括领域预训练(Post-Training)、语义匹配和语义索引三大部分。

  • 领域预训练是在通用预训练模型基础上,在领域数据上继续预训练,让预训练模型学习更多的领域知识。

  • 语义匹配模块针对存在高质量监督数据的场景,给出了检索系统中排序模型方案。此外,针对高质量标注数据获取成本高,数据量少的问题,语义匹配模块还内置了 R-Drop 数据增强策略,进一步提升小数据量场景下排序模型效果,从而帮助检索系统达到更优的效果。

  • 语义索引模块针对无监督和有监督数据场景,分别给出了无监督语义索引(SimCSE)和监督语义索引的方案,即使没有监督数据,也能利用无监督语义索引方案提升检索系统的召回效果。

针对工业应用落地部署的高性能需求,预测部署环节还提供了基于 FasterTransformer 的高性能预测能力以及简单易用的Python API,便于我们将模型快速落地到实际业务中。后续在万方业务中,我们将使用R-Drop 数据增强策略、FasterTransformer进一步应对持续新增的用户需求。

如果您想了解详细方案,可关注PaddleNLP,⭐️Star⭐️收藏,跟进其最新功能,也可在直播中与我交流哦:

GitHub Repo: https://github.com/PaddlePaddle/PaddleNLP

直播预告

万方数据的技术负责人将为大家直播讲解,如果你也有相同的业务痛点,或想进一步了解PaddleNLP在产业实践中的具体实现,欢迎大家扫码上车!
9月14日晚19:00-20:00,
直播间不见不散~
扫码报名课程,立即加入交流群

精彩内容抢先看

万方数据基于PaddleNLP的文献检索系统实践相关推荐

  1. 使用PaddleNLP打造精准文献检索系统,看万方系统升级放大招!

    又是一年开学季,看着大批莘莘学子步入高校,同时又有大批学生即将面临毕业,这一年要饱受论文的洗礼.在学术论文领域,几乎每一位大学生都避不开论文检索.查重环节.想写出一篇高质量论文,前期大量的信息储备必不 ...

  2. php论文的外文期刊,万方数据知识服务平台 (学位论文 、学术期刊、会议论文、外文文献)...

    万方数据知识服务平台 万方数据知识服务平台海纳中外学术期刊论文.学位论文.中外学术会议论文.标准.专利.科技成果.特种图书等各类信息资源,覆盖了全部学科内容,涉及各行各业,是国内一流的品质信息资源出版 ...

  3. CNKI学术趋势与万方数据的知识脉络

    CNKI学术趋势与万方数据的知识脉络 CNKI和万方都有一个可视化的检索工具,cnki叫做学术趋势,可以检索"学术关注度"和"用户关注度"两个指标,万方的叫做知 ...

  4. python批量检索文献_基于Python的文献检索系统设计与实现

    基于 Python 的文献检索系统设计与实现 杜兰 ; 刘智 ; 陈琳琳 [期刊名称] <软件> [年 ( 卷 ), 期] 2020(041)001 [摘要] 毕业设计是大学本科教育的一个 ...

  5. 免费知网万方数据论文下载

    大家好,我是日常混迹于b站舞蹈区解压的南南,一个每天都在手机和课本之间纠结的小废物 众所周知,当代大学生永远离不开的一个网站那就是知网(除非你是翟博士).小到选修课结课论文,大到毕业论文,学术期刊啥的 ...

  6. CNKI学术趋势和万方数据知识服务平台的知识脉络分析

    分享:不要用战术上的勤奋,掩饰战略上的懒惰.(学习需重方法,不可盲目)-------与君共勉 这几天写论文,发现对某一领域的关注度进行了解,有两种方法,一个是用知网的学术趋势,另一个是用万方的知识脉络 ...

  7. 什么检索是借助计算机技术进行自动标引的,自动文献检索系统

    相关文献 随着计算机技术的发展,文献检索系统中的自动标引技术也不断提高,其中,基于汉语的自动标引技术是现今国内外图书情报专家研究的热点,提出了许多方案.笔者通过长期的观察和实践,认为建立科学.有效的抽 ...

  8. 检索有关计算机系统功能设计方面的文献,文献检索系统

    文献检索系统是指按某种方式.方法建立起来的供读者查检信息的一种有层次的体系,是表征有序的信息特征的集合体.在这个集合体中,对所收录的信息的外部特征和内容特征都按需要有着详略不同的描述,每条描述记录(即 ...

  9. 【引用】免费论文检测 系统 软件 论文免费检测 论文抄袭检测大师 万方数据论文相似性检测系统 万方论文检测...

    转载请注明:http://jiancelunwen.blog.163.com/blog/static/2031182372009420928035/ 免费论文检测+论文检测免费+论文抄袭检测大师 +论 ...

最新文章

  1. 黑科技,教你用Python打电话,控制手机技术,快来学一下
  2. Yann LeCun主讲!纽约大学《深度学习》2021课程全部放出,附slides与视频
  3. 服务器更改文件夹权限,云服务器如何修改文件权限
  4. 【转发】关于Java性能的9个谬论
  5. 深入Atlas系列:客户端网络访问基础结构示例(1) - 编写并使用自定义的WebRequestExecutor...
  6. 2019寒假纪中集训总结学期总结(流水账)
  7. Visual C++——获取屏幕大小、窗口大小、对话框大小和位置、控件大小和位置
  8. Docker/Docker 起步123
  9. 五年,时间告诉我只有自己强大才是真的强大!
  10. Log4j文件配置教程大全
  11. Flutter列表ListView 使用概述
  12. weblogic创建多个域 及域的配置方法 war包部署及访问测试
  13. vue 类型字段除了用select框_pumelo-select
  14. unix编程艺术中的17点编程原则--设计开发者的至高准则
  15. 跨境B2B电商市场血雨腥风,供应链管理系统成争夺焦点
  16. java扫描条形码接口_javaweb条形码产生、打印、扫描
  17. cron表达式每隔1小时一次_quartz 每天 8-10点每隔10分钟执行一次,11-13点每隔1小时执行一次 cronExpression 要怎么写?...
  18. 关于阅读论文的一些感想
  19. Ubuntu 找不到wifi适配器
  20. 大学生最好用搜题的APP,个人开发的,吊打一切搜题软件

热门文章

  1. git flow的介绍和使用
  2. tplinkac2600评测_tp-link全千兆端口ac2600m路由器好不好?选购攻略,看完再买不迟 | 智能扫地机器人评测...
  3. 基于Modbus协议的C#串口工具开发
  4. CST电磁仿真软件的功能和优势有哪些
  5. python冰雪奇缘使用教程_99 行代码的《冰雪奇缘》
  6. Three.js - 绘制不规则图形(二十)
  7. 用MySQL绘制新年祝福图形_2017微信拜年图片-2017微信拜年动态表情图片高清完整版-东坡下载...
  8. pygame clock.tick
  9. 百度推599元带屏智能音箱,称要在智能生活领域打一场大仗 | 速递
  10. 北大穗志方教授:从语言到知识—构建语言智能的基石