阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

来自锤子开源项目:Big Bang 大爆炸智能化地“炸开”文字块

  • 2017-01-21
  • 本文字数:3729 字

    阅读完需:约 12 分钟

编者按

本次要探讨的 Big Bang,不是天文学家头脑中的宇宙理论,也不是众人追过的情景喜剧,更不是迷妹严重的歌舞男团。这篇文章的主角,是锤子科技刚刚开源的文字处理技术 Big Bang——在没有任何硬件依赖下,完全在软件层面,实现对文字段的智能语义化分词处理。Big Bang 已于 2017 年 1 月 12 日正式开源,那么 Big Bang 是什么?背后的技术是怎样的?为何将其开源?为此 InfoQ 采访了锤子科技软件研发副总裁邹伟先生,以下是他的介绍。

Big Bang 的简单介绍

人们的的联网习惯从电脑端转移到手机,总体而言的确便利很多,网络触手可及;但是文字处理一直很“憋屈”。罗老师(锤子科技 CEO 罗永浩)说:“九年了,没人管这个事儿。” 在既没有大键盘又没有鼠标针的情况下,手持设备的文字输入效率很低;超级常用的复制粘贴操作,没有 Ctrl+C 和 Ctrl+V 可用,只能用“胡萝卜”似的手指对着一群细小的文字不断触碰。

Big Bang 因此应运而生,它可以实现对文字信息便捷化处理:复制、编辑和分享;具体而言,通过“炸”的形式,将一段文字 (文字气泡或便签版图片)拆分成独立、可组合再使用的词。

Big Bang 支持对中英两种语言的“炸”式处理,尤其是中文,会根据智能语义拆分成词组。使用者可以选定某个或某些进行搜索查询、复制和分享操作。比如,将微信聊天记录中的聚会地址,“炸”开只选取地址词语,直接发给高德地图软件。

Big Bang 的技术概览

Big Bang 以悬浮于当前应用窗口的形式,展示选定文字或便签图的“炸”开结果,所有工作都是软件层面实现。Big Bang 是贯通锤子科技、三角兽、扫描全能王三家公司的技术,通力合作的结果。其中三角兽负责进行分词的算法与优化,扫描全能王负责图片的识别解析。锤子做了两件事:一个是打通界面与文字的区隔,尽可能用技术手段直接提取出文字,为此全系统做了很多工作配合文字提取,包括浏览器从内核层面上给予了支持,允许大爆炸从网页中提取文字;二是从系统层面上,整合这些技术,再根据用户的实际使用体验,交互与需求,进行不停的打磨与优化。

因为是深度定制 Smartisan OS,所以能从框架层做出应用层无法实现的功能。比如炸开任意位置的文本, 只要一个应用使用了文本,这个应用不需要做任何事情,Big Bang 就能炸开文字段。

分词技术我们采用了三角兽的方案,虽然这个公司成立时间不久,但是技术实力毋庸置疑。

三角兽目前提供的技术分为两种,一种是离线,一种是在线,开源的代码上面是使用的在线的分词库。离线库的指标:内存 70-80M,100 字的分词时间在 20-30ms。在线库的指标:内存在 5M 以内,100 字的时间在 120ms 左右(网络状态好的情况下)。

考虑到解析效率与内存的问题,Big Bang 现在对文字的长度限制是 1000 个字。三角兽目前的能力最大上限是 8192 字节, 采用的 UTF-8 编码,大部分汉字是三个字节的长度。因为这个长度越大分词的时间就需要越长。我们在综合考虑了分词的体验与实际的使用情况后, 限制了最大的长度是 1000 个字。对于自然语言的理解,三角兽有一个机器学习的平台,可以进行不断的训练,不断提高。同时还有一个人为干涉修正的因子,这样就尽可能的保证断句的准确性。

除了单一语言的中文或英文字段,Big Bang 同样胜任中英文混排的语句的分词,还可以通过专业语库拆分一些难以理解的句子,比如在锤子 M1 发布会上,罗老师就运用 Big Bang 功能将一段文字“碳碳键键能能否否定定律一”,炸成了“碳碳键 / 键能 / 能否 / 否定 / 定律一”。针对有些文字语句的划分和理解有两种以上合理解释,也就是说连正常人都分不清的断句,非得交给机器来按照你想要的效果来处理,恐怕也是不合适的。

Big Bang 还可以实现将图片转成文字,当用户大面积按压一张图片时,系统会对屏幕上的显示内容进行截屏,进行适当的处理后(例如相册中,会裁掉上方和下方的工具条),交给扫描全能王进行文字识别。识别结果返回后,文字再交给三角兽智能分词引擎进行分词,最终呈现给用户。

纯色背景下的长微博几乎能全部识别,包括标点符号。标准打印字体,清晰的图书扫描的识别率也非常不错。图片转文字的正确率 97%。不过,对于海报、漫画识别率会有不同程度的下降。目前尚不支持手写字体。

研发故事

十年前,iPhone 的诞生让触摸屏全面取代手写笔和实体键盘,进行了人机交互的全面革新,但触摸屏无法精准定位的特性,让移动设备上的文字处理效率相比传统的键盘加鼠标而言,非常低下。

十年间,我们见证了微信、微博等互联网应用的诞生,但是移动设备上糟糕的文字处理体验却几乎没有任何提升。Big Bang 正是从这里切入,解决了手机屏幕上难于处理文字信息的弊端。

单纯提取应用内的文本,已经有友商做过类似的功能。如何方便地提取以及提取后如何方便地选取,才是大爆炸需要解决的核心问题。通过大拇指按压从而让文字“炸”出来,罗老师已经有提到过,灵感来源于他生活中的一件每个人都做过的,寻常的不能再寻常的小事 —— 蹲马桶。

提取的问题解决了,还需要解决选取的问题。最简单的做法是将每个字都做成一个按钮,用户选几个是几个。考虑到大多数情况用户需要选择的不是“字”,而是“词”,锤子科技与三角兽合作,通过其提供的智能语义分析能力对提取出的文本进行智能分词,这样炸出的结果大多数情况下用户只需要一次点击即可选中所需要的词。

产品需求的确定也是一个递进的过程。在开发过程中,也尝试过不同的方案,最终在使用的便利程度、界面的美观程度以及工程实现的复杂程度上选取了一个平衡点,才有了现在的大爆炸。

开源之举

与 Big Bang(大爆炸)同时对外亮相的功能还有 One Step(一步)。One Step 简化跨应用之间的操作步骤,简化了文字图片等信息的复用再分享。在 12 月 20 日正式开源后,一周左右就冲到 github 周排行榜第二名,截至目前已收获 1400 多个好评(Star )。

锤子科技的这两个开源项目在 GitHub 上的地址是 https://github.com/SmartisanTech/android

这两个开源项目的目标群体是谁呢?针对 One Step,开源分成两部分,一部分是提供给手机厂商、ROM 开发者,希望可以集成这些功能,一起改善用户的使用行为和习惯,让整个系统更加便利;一部分是提供给第三方软件的开发者们,锤子科技同时开源了 API,希望第三方开发者可以直接集成而适应所有已经支持 One Step 的厂商。锤子科技也很欢迎第三方的开发者们提交修改建议,比如魔趣 ROM 的开发者就发现了一个 One Step 的 bug,并且帮助进行了修复。而此次 Big Bang 开源,则只针对手机厂商、ROM 开发者。

为什么要开源?罗老师对此曾有过表述,“有人说‘软件抄袭是没有技术门槛的,而且在中国,一般说来,被抄袭的去打官司也打不赢,老罗这小子很聪明,知道别人反正都会抄,就索性做成了开源,弄得大家抄也不是,不抄也不是,最后大家拿去用了,还会念你的好。’其实没这么复杂,这件事真正的原因是,锤子科技希望通过开源,使更多其他厂商也都做这两个功能,最终带动大多数安卓系统的第三方应用开发商都支持这些特性。否则我们作为一个小厂商,很难推动这件事。我们后续还有很多类似的功能设计,大部分要依赖这样的开源方式来推广普及。”

目前开源的仅为 Big Bang 的 1.0 版本,在之后的版本中,One Step 和 Big Bang 还有几十项的改进,并且在新版发布后也会开源的新版本代码。总有一天,在手机上要实现比电脑端还高的文字处理效率。

谈谈 Smartisan OS

Smartisan OS 的创新很多,我们认为主要分为生态创新,功能创新,交互创新:生态创新典型案例是一步和大爆炸;功能创新指单手下拉悬停,定时静音等;交互创新指音乐打碟功能等。

伴随着这些创新难度的不同,它们从构思到诞生所经过的不同阶段的时间比重截然不同。像一步和大爆炸,实际上产品团队从有构思到形成交互经历了漫长的阶段(半年以上),而开发到发布则只有 5 个月时间;而大部分的需求,它的研发周期是要长于产品构思周期的。从大的方面来讲,这些创意会经历构思、需求交互、设计、研发、测试和产品验收阶段。根据难度和工作量的不同,部分需求会在交互到验收阶段折腾几轮,才能达到理想效果,触动用户心灵。

锤子科技在创新需求上很多时候是设计驱动的。一些技术实现需要在兼顾系统框架稳定的前提下做出大的突破才能实现,这比在遵循框架能力的前提下去完成创新要付出的更高昂的代价,而这直接的体现就是我们一些主要的研发负责人要么身材更加丰满,要么发际线后移直至消失。因为我们清醒的知道锤子科技的核心竞争力是什么,所以虽然免不了与产品团队相爱相杀,但(极端)创新需求的开工和完成度仍然非常高,基本上是超过 90% 的。

在创新需求的整个技术评估阶段,研发团队的出发点是两个:技术可行性和开发周期,只要可以按时交付,那需求就可以开工。从 12 年成立后到 16 年 10 月份的时间段里,研发团队是在需求的路上飙到了 180 迈。当然随着系统的日渐完善和产品思路的逐渐转变,我们会将更多的精力放在一些系统优化和手机使用效率提升相关的特性上去,后面会在一些效费比低的创新上保持克制,行四两拨千金之道。

采访对象

邹伟,锤子科技的软件研发副总裁,负责软件团队的相关工作。2003 年北邮毕业后,十余年一直从事手机的研发工作,是中国最早的从事 Android 研发的一批人,在整机软件研发,framework、通信、应用开发等领域有着丰富的经验。

2017-01-21 18:004090
用户头像

发布了 58 篇内容, 共 42.6 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

OpenHarmony组件内状态变量使用:@State装饰器

OpenHarmony开发者

OpenHarmony

当 FineReport 遇见 CnosDB

CnosDB

开源 时序数据库 CnosDB FineReport

精彩议程抢先看 | 第四届 CID 大会线下参会报名启动!

OpenAnolis小助手

云计算 架构 深圳 龙蜥社区 CID

80、90童年回忆之小霸王游戏机网页版

echeverra

小霸王

全国5000家金融单位将加入信创建设大军,未来数年发展关键期

没有用户名丶

Programming abstractions in C阅读笔记:p166-p175

codists

Eclipse、IntelliJ IDEA、PyCharm三种IDE区别

小齐写代码

IntelliJ IDEA安装教程

小齐写代码

HarmonyOS应用窗口管理(Stage模型)

HarmonyOS开发者

HarmonyOS

BOE(京东方)“照亮成长路”百所智慧教室落地偏远地区 携手故宫启动百堂公益课

科技热闻

聊聊什么是厂商绑定

冯骐

开源 供应链 战略思考 技术 优化体系 厂商绑定

Hugging "Hugging Face"

数由科技

低代码 huggingface 大语言模型 huggingfists 多模态模型

深入浅出MySQL MRR(Multi-Range Read)

Java随想录

Java MySQL

源码, AST, IR, CFG之间的关系梳理

华为云PaaS服务小智

云计算 软件开发 华为云

Databend 开源周报第 113 期

Databend

深入解析时序引擎预计算功能

KaiwuDB

预计算 KaiwuDB 时序引擎

代码检查过程中为什么需要涉及到编译呢?

华为云PaaS服务小智

云计算 软件开发 华为云 代码检查

什么是K-均值算法

小魏写代码

用 TDengine 3.0 碰到“内存泄露”?定位问题原因很关键

TDengine

时序数据库 内存泄漏 ​TDengine

一款Redis可视化工具:ARDM | 京东云技术团队

京东科技开发者

redis 可视化工具 企业号10月PK榜 ARDM

Perforce发布《2023游戏开发与设计现状报告》,为游戏开发行业提供参考

龙智—DevSecOps解决方案

perforce 游戏开发与设计现状报告

六个为Rust构建的IDE

树上有只程序猿

rust语言

运维 | Nginx Proxy Manager反向代理工具

Appleex

运维 nginx反向代理

全流程多元化适配服务,OPPO Android 14 适配率高达98%!

科技热闻

Python 元组完全指南2

小万哥

Python 程序员 软件 后端 开发

如何正确使用多线程和锁机制来构建可靠的程序

华为云开发者联盟

后端 多线程 开发 华为云 华为云开发者联盟

六个实用的软件开发步骤

高端章鱼哥

敏捷开发 软件开发 瀑布开发

从问界单日7000台,聊聊智能汽车成熟时

脑极体

问界

来自锤子开源项目:Big Bang大爆炸智能化地“炸开”文字块_语言 & 开发_木环_InfoQ精选文章