写点什么

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


2020-05-21 14:153889

评论 1 条评论

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

实时云渲染vs本地渲染,哪个更好用?

Finovy Cloud

云渲染 实时云渲染

自制操作系统日记(7):字符串显示

操作系统

RxJS 全面解析

阿杰

JavaScript 响应式编程 RXJS

Kotlin函数声明与闭包

子不语Any

android kotlin 11月月更

Dive into TensorFlow系列(2)- 解析TF核心抽象op算子

京东科技开发者

tensorflow TF2 Tensor Op

OceanBase 首席科学家阳振坤博士入选2022 年度“CCF王选奖”

OceanBase 数据库

[力扣] 剑指 Offer 第二天 - 从尾到头打印链表

陈明勇

Go 数据结构与算法 力扣 11月月更

[力扣] 剑指 Offer 第二天 - 反转链表

陈明勇

Go 数据结构与算法 力扣 11月月更

比DataX快20%!SeaTunnel同步计算引擎性能测试全新发布

Apache SeaTunnel

spark DataX Seatunnel 数据集成平台 数据引擎

使用SQL加密函数实现数据列的加解密

华为云开发者联盟

大数据 后端 华为云 数据加密

制造业行业现状及智能生产管理系统一体化解决方案

优秀

制造业 生产管理系统

微服务熔断限流的一些使用场景

Java永远的神

Java 程序员 微服务 程序人生 架构师

2023年语言和框架我们值得关注什么?

阿里巴巴终端技术

框架 语言 & 开发

全国首个AIGC创作大赛开赛,创作者可靠“AI打工人”躺赚

科技热闻

阿里云产品经理刘宇:Serverless 的前世今生

云布道师

阿里云 Serverless 云原生

直播预告|OceanBase 社区版 4.0 全解析

OceanBase 数据库

web技术分享| 日期选择限制组件二次封装

anyRTC开发者

Vue 前端 Web Element

技术分享 | 测试人员必须掌握的测试用例

霍格沃兹测试开发学社

Docker——denied: requested access to the resource is denied问题以及解决方法

A-刘晨阳

Docker Linux 运维 11月月更

OKR之剑·实战篇03:OKR的跟踪需要有“自己”的节奏

vivo互联网技术

团队管理 OKR 目标管理

使用 SAP Cloud Application Programming 编程模型开发一个图书管理 OData 服务

汪子熙

云原生 CAP SAP 企业级应用 11月月更

带你了解S12直播中的“黑科技”

华为云开发者联盟

云计算 后端 音视频 华为云 实时直播

软件测试 | 测试人员必须掌握的测试用例

测试人

软件测试 自动化测试 测试开发 测试用例

PLC与SCADA的什么区别和联系

2D3D前端可视化开发

物联网 PLC 工业控制 web组态 SCADA

RxJS 全面解析

PingCode研发中心

响应式编程 RXJS reactivex

SREWorks v1.3 版本发布 | 插件机制发布

阿里云大数据AI技术

大数据 运维 插件

最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”

牵着蜗牛去散步

人工智能 腾讯云 腾讯 腾讯云AI

docker修改容器的端口、容器名、映射地址......

A-刘晨阳

Docker Linux 运维 11月月更

Docker发布/上传镜像到dockerhub&&下载/拉取镜像&&删除dockerhub镜像

A-刘晨阳

Docker Linux 运维 11月月更

华为云开发者日震撼来袭!11月20日,上海见!

华为云开发者联盟

开发者 华为云

python小知识-python时间操作

AIWeker

Python python小知识 11月月更

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