“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

WPS 智能辅助写作平台架构实践分享

  • 2020-05-21
  • 本文字数:2650 字

    阅读完需:约 9 分钟

WPS智能辅助写作平台架构实践分享

结合当下流行的 NLP 等人工智能相关技术,金山办公软件有限公司武汉 AI 部门自主研发了 WPS 智能辅助写作平台。利用意图识别、文本聚类等语义匹配算法,该平台实现了 AI 辅助用户写稿创作,并具备公文模板、素材推荐和辅助生成等特色功能,同时还实现了公文素材的海量收集,数据规模达到千万级文章、百万级提纲和段落。


作为一款技术立业、用户角度的写作产品,wps 智能辅助写作平台在不断提升用户写作体验的同时,也在积极寻求和新思路、新技术的融合碰撞,下面为大家带来结合了 Milvus 相关技术的素材推荐解决方案的案例分享。

整体架构

在 WPS 智能辅助写作平台重要组成部分的素材推荐模块中,基于 Milvus 的向量处理模块作为核心功能,发挥了极其重要的作用,其目标是在海量的文本中高效提取、存储高质量公文素材,并针对不同用户需求进行精准推荐。



图 1.1 结合 Milvus 的 WPS 智能辅助写作平台示意图


本案例的素材推荐服务按模块可以分为数据处理模块和编码存储模块以及推荐查询模块。涉及到 Milvus 向量数据库的主要是编码存储模块以及推荐查询模块。



图 1.2 素材推荐服务整体架构


数据处理模块主要分为数据清洗、提纲及段落抽取,从海量数据中得到筛选后的提纲、段落数据。


编码存储模块则涉及到文本编码和向量存储两部分。文本编码通过深度学习方法得到 256 维高维向量,再将向量及其对应的原文 id 等信息插入 Milvus 向量数据库,并按照 Milvus 提供的索引建立方法 IVFFLAT 对每条数据建立索引。


推荐查询模块则根据用户输入等搜索条件进行编码得到输入搜索向量,在 Milvus 向量数据库中使用官方提供的相似度计算方法(L2 距离)进行最近邻搜索,返回粗召回的向量和原文 id 等,再通过画像、模型等进行精准排序推荐。

组件/技术

在数据处理模块,所用方法主要涉及到特征工程、正则匹配及 NLP 模型打分等。


文档是人类使用复杂语义的代表,从字到词、句子、段落和文章,多层次分布着大量的语义信息。对文档建立特征工程,是最大化提取语义特征的有效途径之一。


结合实际文本数据,本案例选择从词汇、句子等多级别出发,建立文档的词汇特征和语句特征。


在词汇特征级别上,经过分词建立语料词库,再通过 TF-IDF 算法,


计算单词频率项(TF):



以及逆文档频率项(IDF):



得到 TF-IDF 值:



经过排序提取出文档关键词。


同时考虑到对象文本含有大量的人名、机构名称等实体词汇,这些实体在排序召回尤其是精准排序时发挥了巨大作用,因此采用深度学习模型:BLSTM-CNNs-CRF 对文档中的实体词进行抽取。



图 2.1 NER 模型计算流程


BLSTM-CNNs-CRF 模型可以分为三个部分,首先在字符级别嵌入(Char Embedding)的基础上,使用 CNN 模型对每个单词计算其字符级别表示(Char Representation),再将该结果连接到单词级别嵌入向量(Word Embedding),输送到双向长短期记忆网络(BLSTM),最后将 BLSTM 的输出反馈到条件随机场(CRF),共同解码最佳标签序列。



图 2.2 NER 模型结构示意图


在语句特征级别上,本案例使用 TextRank 抽取文档中表达观点的摘要性句子作为文档关键句,TextRank 算法作为一种抽取式的无监督的文本摘要方法,借鉴了用于对在线搜索结果中的网页进行排序的 PageRank 算法,通过分割文本、向量化并建立图模型, 利用转移概率矩阵对文本语句进行排序, 在文档内部实现了关键句抽取。



图 2.3 TextRank 算法流程示意图


同时本案例还训练了一个 TextCNN 模型用于提取文档中的高质量段落和语句,将抽取任务看作分类任务,为了更好的捕捉语句之间的局部相关性,本案例在使用预训练的词向量(Word2Vec)基础上,利用多个不同大小(Size)的卷积核(Kernel),实现语句对单词的强关联。


TextCNN 主要分为嵌入层(Embedding)、卷积层(Convolution)、池化层(MaxPooling)和全连接输出层(Full-Connection and Softmax),作为常用的文本分类算法之一,其优势体现在结构简单,效果良好,可扩展性强。



图 2.4 TextCNN 模型结构示意图


在编码存储模块,编码主要使用语义理解模型,在存储中主要用到了索引 Index 组件。


在编码部分,传统的语句嵌入多使用无监督方法,然而这些方法在处理长语句时不够鲁棒。在本案例场景下,采用了有监督训练方法的语句嵌入模型中的 Infersent 模型,尽可能对句子进行通用表征。


作为有监督模型,Infersent 选取 SNLI 作为分类任务,通过设计好的编码器(Encoder)对句子对(text, hypothesis)进行编码得到其对应的特征向量 U、V,经过连接、差值和内积后得到分类所用的特征,经过全连接层和 Softmax 层后输出对应分类(Judgements),在训练完成后即可通过 Encoder 得到语句的编码向量。



图 2.5 Infersent 模型结构示意图


在索引部分,IndexFlatL2 索引是作为针对欧式距离计算设计的暴力搜索索引,但考虑到际应用场景,本案例选择了在 IndexFlatL2 索引基础上添加聚类的 IVF-FLAT 索引,通过划分搜索空间,在查询时检索某几个聚类,大大加快了整体速度。


本案例也用到了 Milvus 的分区功能,为数据划分不同的种类,使得查询变得更加快速和准确。


线上服务部分主要使用 K8s 共享集群,同时考虑具体数据内容,选择 mysql 保存元数据信息,没有使用默认的 SQLite,侧面也反映了 Milvus 组件的灵活性。

性能目标

目前部署于 0.6.0-CPU 版本 Milvus 向量数据库约有 200 万文本,用于支持 WPS 智能辅助写作微信小程序搜索,同时正在处理增加数据,预计可以达到千万级规模语料。


在响应时间方面,本案例使用共享集群,计算资源被其他应用所共享,因此本案例的数据只能作为参考标志,在目前的版本中单次单条服务总体响应时间平均达到 0.2s。

应用效果

在面向党政领域的素材智能推荐功能上,意图识别准确率达 80%以上,用户素材引用率达 40%;在面向公文领域的辅助生成功能上,实现了多类法定公文的写作模板和辅助创作,并支持一键生成全文。



以 WPS 智能辅助写作网页客户端为例,现支持工作总结、心得体会以及评论观点等 9 类常见公文类型的辅助写作,辅助功能则主打一键全文和智能生成功能。一键全文功能通过对标题、关键词的意图理解,通过相关推荐算法选择合适的提纲和段落,生成一篇完整的文章供用户修改使用。而特色的智能生成功能则先初步为用户提供多篇可更换的提纲段落,同时在用户修改创作过程中,通过 AI 生成算法对选中字段结合上下文语境生成适度文字段落供用户引用和发散思维,达到以人为主、辅助创作的效果。




而 WPS 智能辅助写作平台微信小程序在相关公文功能的基础上,开发了诸如诗词创作、信件模板推荐等实用功能,同时引入了写作社区,方便用户开拓视野、分享创作,以文交友,进一步提升写作体验。


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-05-21 14:153388

评论 1 条评论

发布
用户头像
学习了
2023-12-28 15:31 · 北京
回复
没有更多了
发现更多内容

Vue_Webpack详解

Studying_swz

前端 10月月更

详解Native Memory Tracking 追踪区域分析

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

堆排序详解(含对时间复杂度的分析)

lovevivi

c 数据结构 10月月更

“程”风破浪的开发者|我的js学习小技巧

国服第二切图仔

JavaScript 学习方法 “程”风破浪的开发者

你应该知道的数仓安全:都是同名Schema惹的祸

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

Hybrid app本地开发如何调用JSBridge

甜点cc

JavaScript 前端 Hybrid 10月月更

如何实现图像人脸融合?

夏夜许游

人工智能 AI 融合 图像人脸

Vue_cli2和Vue_cli3

Studying_swz

前端 10月月更

JavaScript基础知识-JS数据类型

木偶

JavaScript 前端 10月月更

JNI中实现类似C++回调的方法(1)

中国好公民st

c++ jni 10月月更

规律跑步,让生活更有掌控感

BY林子

跑步 掌控

八大排序 (上)

lovevivi

c 数据结构 10月月更

在线问题反馈模块实战(十六)​:实现查详情功能

bug菌

springboot 项目实战 10月月更

在线问题反馈模块实战(十七):实现excel模板在线下载功能

bug菌

springboot 项目实战 10月月更

数据湖(九):Iceberg特点详述和数据类型

Lansonli

数据湖 10月月更

如何实现一个SQL解析器

vivo互联网技术

sql 解析 SQL解析

在线问题反馈模块实战(十八):实现excel台账文件记录批量导入功能

bug菌

springboot 项目实战 10月月更

基于Ernie-3.0 CAIL2019法研杯要素识别多标签分类任务

汀丶人工智能

nlp

浅析HTML页面的生命周期

CoderBin

html 前端 10月月更

一种基于柔性事务的分布式事务解决方案设计探究

京东科技开发者

编程 分布式事务 事务 事务回滚 柔性事务

“程”风破浪的开发者 | 踉踉跄跄的Java之路

游坦之

Java 学习方法 “程”风破浪的开发者

科兴未来:产业创新和人才服务为一体化的双创体系

科兴未来News

#双创赛事# #双招双引# #人才政策# #创业大赛#

uniapp H5端精准定位

源字节1号

软件开发 小程序开发

Python高阶语法---函数

木偶

Python 函数 10月月更

八大排序(下)

lovevivi

c 数据结构 10月月更

vue-router学习-1

Studying_swz

前端 10月月更

【高并发】深度解析ScheduledThreadPoolExecutor类的源代码

冰河

并发编程 多线程 高并发 协程 异步编程

HashMap源码分析(六)

知识浅谈

hashmap 10月月更

Gartner发布2023年十大战略技术趋势播

雨果

Gartner

算法 | 详解斐波那契数列问题

甜点cc

JavaScript 算法 10月月更 斐波那契数列

记一个“奇葩”需求的实现

甜点cc

JavaScript 前端 Element UI 10月月更

WPS智能辅助写作平台架构实践分享_AI&大模型_陈启贤_InfoQ精选文章