HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Android Smart Linkify API 背后的机器学习

  • 2018-08-23
  • 本文字数:918 字

    阅读完需:约 3 分钟

上周,谷歌发布了代号为 Pie 的 Android 9 。Android 正在推出一系列由人工智能提供支持的新功能。 Android Smart Linkify 是最重要的新 AI 功能之一。

Smart Linkify 建立在先前版本 Android Oreo 发布的 Smart Text Selection 之上。Smart Linkify 可以检测文本中的某些类型的实体(例如地址、电话号码)并添加可点击的链接,允许用户直接启动地图或拨打电话。它由设备内的前馈神经网络提供支持,每种语言大小仅 500KB,推理代码不超过 250KB。这个系统为几近实时的系统,在 Google Pixel 手机上计算时间短于 20 毫秒。

系统首先通过空格将输入文本拆分为单词,并计算最多 15 个单词所有可能的单词子序列。每个子序列被提供给神经网络,神经网络基于其有效性为它们分配 [0 … 1] 范围的值。在删除重叠实体后,系统为子序列打较高的分数。在整个过程的第一部分结束时,每个未知类型都有一个不重复单词子序列。

然后使用第二个神经网络来识别每个单词子序列的类型,无论是电话号码、地址还是未识别的实体。神经网络将上下文中的单词子序列作为输入。通过将子序列的前三个和后三个单词作为实体,将它们前面的五个单词作为左上下文,将随后的五个单词作为右上下文,然后将它们作为不同的特征来识别单词的含义。这个神经网络中一个有趣的优化是使用二进制特征来识别以大写字母开头的单词。其背后的原因是,邮政地址非常独特,使用这种方式更容易识别出来。

为了训练神经网络,谷歌团队从真实数据中生成了虚假样本。他们使用 Schema.org 注解的实体、地址、电话号码和随机单词的自定义列表合成了一个训练集。他们采用可观察的实体并用随机单词围绕它们达到更理想的结果。另外,有意生成负数据训练样本,让神经网络避免将“ID:”识别为电话号码。

国际化是这个功能的一个重要方面,根据测试,一种模型适用于所有拉丁语言,并可以为中文、日文、韩文、泰文、阿拉伯文和俄文添加单独的模型。目前,API 支持 16 种语言,未来几个月将支持更多语言。这些模型使用 TensorFlow 进行训练,自定义的推理库由 TensorFlow Lite 和 FlatBuffers 提供支持。开发人员可以通过 TextClassifier API generateLinks 方法开始使用 Smart Linkify。

查看英文原文 The Machine Learning behind Android Smart Linkify API

2018-08-23 07:441327
用户头像

发布了 731 篇内容, 共 449.2 次阅读, 收获喜欢 2002 次。

关注

评论

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

用 Vim 编辑 Markdown 时直接粘贴图片

mzlogin

vim markdown

树莓派小车系列-直播

波叽波叽啵😮一口盐汽水喷死你

树莓派 ffmpeg 云直播 盐汽水 raspberry

百度开源项目

Bruce Duan

Java并发编程系列——线程池

孙苏勇

Java Java并发 并发编程 多线程 线程池

企业如何选择物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

游戏夜读 | 做游戏选什么专业?

game1night

leetcode20.有效的括号

Damien

算法 LeetCode

扩展Redis:增加Redis命令

心平气和

redis

CEPH OSD Down故障分析与处理

木子

高仿瑞幸小程序 02 创建Tabbar

曾伟@喵先森

小程序 微信小程序 大前端 瑞幸

File类的文件操作

Howe

Java File 文件 io

我愿沉迷于学习,无法自拔(三)

孙瑜

深度思考 程序员 感悟

DDD 实践手册(3. Entity, Value Object)

Joshua

系统设计 领域驱动设计 系统架构 架构模式

[计算机网络1]我所知道的关于TCP的一切

海神名

TCP 计算机网络 网络协议 原理

虚拟化Pod性能比物理机还要好,原因竟然是这样!

亨利笔记

Kubernetes 容器 k8s vSphere pod

我的关注清单

lmymirror

知识管理 关注清单 RSS

大家看看我这个斜杠青年够斜吗?

伯薇

个人成长 斜杠青年 能力提升 好奇心 T型人才

译文MapReduce:大型集群上的简化数据处理

海神名

mapreduce 译文 MIT 分布式计算

缘起:很久很久以前

escray

学习 测试驱动开发实战营

Netty 源码解析(五): Netty 的线程池分析

猿灯塔

源码浅析 - CocoaLumberjack 3.6 之 DDLog

Edmond

ios log4j CocoaLumberjack SourceCode DDLog

哲少荐书:这才是心理学

Jackey

心理学 读书

科学治疗“知识焦虑症”

陈驰远

个人成长 知识管理

阿里29大开源项目看看你都用过哪些

Bruce Duan

我看拼多多黄峥:旧世界瓦解冰消

池建强

拼多多 黄峥

下一个阶段,就真的容易了吗?

ke_lv

生活

思维偏差与产品设计的关联思考

石君

产品设计 思维方式 安全产品设计

轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?

楼下小黑哥

支付宝 微信支付 支付系统 付款码

leetcode1137:第 N 个泰波那契数

Damien

算法 LeetCode 斐波那契

每天一道 python 面试题 - Python中的元类(metaclass) 详细版本

志学Python

python 爬虫 python元类

架构师们必备的三三制需求分析思维模型

常平

Android Smart Linkify API背后的机器学习_移动_Alex Giamas_InfoQ精选文章