写点什么

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

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

关注

评论

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

京东数科面试真题:常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?

Java 架构 面试

美丽的数学学习笔记(1)

方勇(gopher)

产品经理训练营 - 大作业

joelhy

产品经理训练营

大作业

LouisN

Wireshark 数据包分析学习笔记 Day13

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

php的一些漏洞梳理

依旧廖凯

28天写作 3月日更

yum安装Nginx全流程指南

happlyfox

28天写作 3月日更

唠一唠融云的消息扩展功能

融云 RongCloud

sdk

融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

融云 RongCloud

短网址服务设计整理

程序员架构进阶

架构 设计实践 28天写作 实操案例 3月日更

算法攻关-climbing-stairs(O(n))_70

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关

算命、运气和其他「Day 24」

道伟

28天写作

LeetCode题解:91. 解码方法,动态规划(优化),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

诊所数字化:医疗机构常见的系统整理

boshi

医院 医疗 七日更

假期无聊冰河开发了一款国民级游戏!

冰河

Java 游戏

融云清空历史消息 Android 端

融云 RongCloud

sdk

markdown如何插入图片、音频、视频?

xiezhr

markdown markdown语法 音频

金三银四跳槽阿里必备:分布式/高并发/Redis,不看我真的怕你后悔

比伯

Java 编程 架构 面试 程序人生

项目延期了,怎么办?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

容器or虚拟机?

xcbeyond

Docker 容器 3月日更 专业术语

产品训练营 第四周作业

万顷湖天碧

Nginx配置静态文件服务从入门到精通

happlyfox

28天写作 3月日更

融云 IMkit 拦截或监听所有发送消息

融云 RongCloud

sdk

阿里大师口述:让你可以在简历上写精通SpringBoot

编程 架构 springboot

5 分钟部署一个 OIDC 服务并对接 nightingale

冯骐

CAS Nightingale 认证授权 OIDC Apereo

融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

融云 RongCloud

IM

像这样操作 Python 列表,能让你的代码更优雅 | pythonic 小技巧

AlwaysBeta

Python

Hamcrest

insight

单元测试 3月日更

Android 端如何添加自定义表情

融云 RongCloud

IM

融云即时通讯SDK集成 -- 通知检查

融云 RongCloud

即时通讯

一卷河图赋太虚:HMS Core CG kit与移动游戏新可能

脑极体

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