在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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:441938
用户头像

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

关注

评论

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

如何让我的简历有价值、有亮点

escray

学习 面试 简历

【Kafka】消费者客户端小结(java)

guoguo 👻

可能是首个支持部署 Deno 前后端应用的部署工具

binggg

taro GitHub 大前端 deno Node

Devops与敏捷二者能否结合?

禅道项目管理

DevOps Scrum 敏捷开发

linux入门系列9--用户管理及文件权限控制

程序员潘Sir

Linux centos centos7 linux运维 linux用户权限

linux入门系列6--软件管理之rpm和yum仓库

程序员潘Sir

Linux centos 运维 rpm yum

英特尔神经拟态芯片Loihi大显身手 帮助轮椅上的儿童实现独立生活

最新动态

要老婆吗? AR一键生成的那种

程序员生活志

区块链技术正向平台化、组件化、集成化演进

CECBC

大数据 区块链技术 科技

一位男程序员的英语学习之路

盛安德软件

火眼云CEO张陆鹏:A轮融资5000万,解密国内ABM生态首位玩家

ToB行业头条

非IT行业大企程序员讲述MIS系统开发案例

Learun

敏捷开发 企业信息化 企业管理 .net core 「Java 25周年」

网页游戏

小端taro

第11周作业

娄江国

物联网SIM卡和SIM卡真的不是一回事

华为云开发者联盟

人工智能 物联网 华为云 传感器 SIM卡

CHAR与VARCHAR详解

Simon

MySQL

python自动生成一整月的排班表

不会写诗的王维

Python

终极学习法,你能学会任何东西--程序员的学习之路

盛安德软件

区块链技术助力甘肃建食安信息追溯平台 为食品安全“立规矩”

CECBC

食品追溯 食品安全

linux入门系列8--shell编程入门

程序员潘Sir

Linux centos Shell linux命令 linux编程

开源,轻松实现RTC与SIP互通

anyRTC开发者

WebRTC 编码 SIP 源码解析

质量门禁:Verigreen开启Git的Commit门禁

陈磊@Criss

37岁程序员被裁,想用6月工资跪舔领导划掉被裁名额,结果蒙了!

程序员生活志

提高GIT中代码质量的七点优秀实践

程序员生活志

git 经验总结

王者荣耀为什么不使用微服务架构?

程序员生活志

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

linux入门系列7--管道符、重定向、环境变量

程序员潘Sir

Linux centos 运维 linux命令 管道符

​JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!​

xcbeyond

Java 新特性 JDK1.8 Optional JDK1.8新特性

INT类型知多少

Simon

MySQL

第11周总结

娄江国

企业信息化怎么构建?

代码制造者

大数据 低代码 企业信息化 零代码 编程开发

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