上期文章,我们从整体上介绍了富文本编辑器的背景,并分享了有道云笔记新版编辑器技术选型中的模型和渲染部分。 本期文章,我们将继续分享技术选型中的编辑和指令部分内容,并详细解读有道云笔记编辑器的分层架构设计。
作者/ 金鑫
编辑/ 刘振宇
在开发有道云笔记的新版编辑器的过程中,我们遇到很多实际问题,愈发感觉到这是一个非常有深度的前端技术领域,所以我们将新版编辑器的技术选型、架构和部分实现细节拿出来分享给大家,希望对大家开发富文本编辑器、做复杂系统的架构设计有一定参考意义。
作者/ 金鑫
编辑/ Ryan
来源/ 有道技术团队(ID: youdaotech)
作者/ 刘哲;
编辑/ Ryan ;
来源/ 有道技术团队(ID: youdaotech)
引言
当我们提到智能硬件的高效测试时,通常会考虑使用自动化测试的方案,提升产品的测试效率和质量。
由于智能硬件的使用过程中,包括了大量和用户的行为交互,这就导致在测试方案上,传统的软件自动化测试很难完全模拟用户的完整使用行为。
因此,我们除了要考虑借鉴和使用软件测试的思路之外,还要考虑如何实现硬件测试自动化。
01 网易 Duilib 框架概述
Duilib 是 Windows 系统下的开源的 DirectUI 界面库(遵循 BSD 协议),完全免费,可用于商业软件开发。
Duilib 可以简单方便地实现大多数界面需求,包括换肤、换色、透明等功能,支持多种图片格式,使用 XML 可以方便地定制窗口,能较好地做到 UI 和逻辑相分离,尽量减少在代码里创建 UI 控件。目前,Duilib 已经在国内有较为广泛的使用。
网易在研发网易易信 PC 版时引入 Duilib,经过多年开发和改进,由网易云信在2019年4月开源。
(github 地址:https://github.com/netease-im…)
网易 Duilib 使用 C++11 重写,在其原有基础上做了较大重构,搭配谷歌的基础组件 Base 库、基于 Chromium 的 WebView 框架 CEF 以及常用的 UI 组件,形成了一套功能强大、简单易用的完整桌面 UI 开发框架。
近年来,有道技术团队在移动端实时 AI 能力的研究上,做了很多探索及应用的工作。2017 年 11 月 Google 发布 TensorFlow Lite (TFLlite) 后,有道技术团队第一时间跟进 TFLite 框架,并很快将其用在了有道云笔记产品中。本文将介绍我们是如何将 TFLite 运用在有道云笔记中的文档识别工作中的,以及 Tflite 都有些什么特性。
背景篇
NLPCC的全称为“CCF国际自然语言处理与中文计算会议”,英文为“Natural Language Processing and Chinese Computing”,是中国首个NLP领域的国际会议,由中国计算机学会(CCF)主办,至今已经举办了七届。在今年的竞赛单元中,首次增加了中文语法错误修正任务(Shared Task 2: Grammatical Error Correction)。该项任务的目标是:检测并修正由非中文母语者书写的中文句子中的语法错误[1]。可以认为该项任务的输入是一句可能含有语法错误的中文句子,输出是一句经过修正后的中文句子。作为一个比赛任务,这个工作更关注算法的效果,即结果的正确性,而不太考虑处理速度、资源占用等应用落地的问题。
数据篇
比赛方要求参赛者主要使用主办方提供的数据进行模型算法的训练和调试,在比赛截止前一周发布测试集原文,参赛者使用算法生成指定格式的自动批改结果以后提交结果。 主办方给出的训练数据来源于一个语言学习网站,该网站提供了一个开放平台让对应语言的母语者可以自由地对平台上语言学习者写的作文进行语法修正。训练数据共有71万条记录,每一条记录包含一个可能含有语法错误的句子和零到多句对应句子修正结果。如果是零句修正结果,则可以认为这句话是不需要修正的;如果是多句修正结果,可以认为有多种修改方法。 在一个传统的自然语言处理任务中,训练数据的收集和清洗往往会占到整个策略工作的50%甚至70%的时间,数据预处理的策略也会对后续算法的选择和效果有非常大的影响。通过对训练语料的分析,我们最终使用的策略是:将训练语料中每条记录拆成多个错误到正确的语句对,如果某条记录没有修正结果,则生成一个正确到正确的语句对。经过上述处理后,我们最终获得了122万条训练语料,并且将其中的3000句预留作为调试用的开发集,不参与到训练当中。原始训练数据的对应修正结果分布及样例分别如图表 1和图表 2所示。