Categories
程式開發

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


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

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

整体架构

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

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

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

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

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

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

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

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

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

组件/技术

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

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

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

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

计算单词频率项(TF):

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

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

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

得到TF-IDF值:

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

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

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

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

图2.1 NER模型计算流程

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

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

图2.2 NER模型结构示意图

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

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

图2.3 TextRank算法流程示意图

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

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

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

图2.4 TextCNN模型结构示意图

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

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

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

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

图2.5 Infersent模型结构示意图

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

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

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

性能目标

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

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

应用效果

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

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

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

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

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

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