写点什么

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

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

关注

评论

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

你不知道的$nextTick

CRMEB

CTF夺旗PWN题:二叉树的漏洞利用

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

拒绝卡顿,揭秘盒马鲜生 APP Android 短视频秒播优化方案

阿里巴巴终端技术

android App 短视频 移动开发 体验优化

Python代码阅读(第61篇):延迟调用函数

Felix

Python 编程 Code 阅读代码 Python初学者

Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)

不脱发的程序猿

Python qt PyQt GUI设计 QComboBox下拉列表框类

YU12 YV12 NV12 NV21区别

音视频牛哥

WebRTC RTMP RTSP yuv

白话 Linux 容器资源的隔离限制原理

恒生LIGHT云社区

Linux 运维

EMQ 出席 2021 ArchSummit,打造全连接时代的数据基础设施

EMQ映云科技

大数据 物联网 IoT 智能

提升研发效能的低代码思路

赫杰辉

研发效能 低代码平台 x-series

Spark面试题大全

编程江湖

大数据 Spark面试题

如何实现在线播放mpeg-ts文件?

Changing Lin

11月日更

宝马、西门子是如何开始DevOps 的?

飞算JavaAI开发助手

什么是微服务架构,有何优缺点?

雯雯写代码

微服务

如何成为web安全工程师?

喀拉峻

网络安全 安全 信息安全

线程如何实现保持同步

编程江湖

Java 多线程

Go WebSocket开发与测试实践【gorilla/websocket】

FunTester

Java websocket 接口测试 Go 语言 FunTester

远程工作的这几年

程序员铮铮

程序员 代码人生 远程工作

Stratifyd数据分析平台加盟腾讯云市场,赋能品牌消费洞察

构建多云战略的注意事项

云计算

终于把性能测试这事儿讲清楚了

博睿数据

发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台

极限实验室

elasticsearch infini 极限实验室 极限数据平台 ES多集群管理

在 JavaScript 中如何检查对象为空

编程江湖

JavaScript 大前端

如何运用Camtasia中的交互性?

淋雨

Camtasia

快上车丨直播课“Hello ArkansasUI:初识Slider组件(eTS)”来啦

HarmonyOS开发者

HarmonyOS

【AI最前线】精准优质-资讯|分享|热议第41期

百度大脑

人工智能

钉钉小程序快照技术初窥

阿里巴巴终端技术

小程序 ios android 快照 体验优化

如何判断一个需求是真的用户需求,还是伪需求呢?

石云升

产品思维 需求分析 11月日更

社交重构、游戏革新,万物皆可元宇宙?这场大会给你讲清楚了|活动预告

网易云信

人工智能 音视频 元宇宙

如何设计一款跨平台低延迟的RTMP|RTSP直播播放器

音视频牛哥

WebRTC HLS RTMP RTSP

海康摄像机RTSP地址格式(官方最新版)

音视频牛哥

WebRTC RTMP RTSP 播放器

通过 for 循环,比较 Python 与 Ruby 编程思想的差别

Python猫

Python

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