写点什么

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

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

关注

评论

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

liunx入门:Linux下基本指令

雪芙花

c++ Liunx 10月月更

C++从入门到精通(第十篇) :二叉搜索树

雪芙花

c++ 10月月更

vue3.0 是如何变快的

乌龟哥哥

10月月更

【c++图论例题学习】【口袋的天空】【部落划分】

贤鱼很忙

c++ 图论 10月月更

深入浅出Python——Python高级语法之函数

何极光

Python 函数 10月月更

2022年元宇宙应用场景发展趋势分析

易观分析

元宇宙

概述Spark主要特点

穿过生命散发芬芳

spark 10月月更

【web 开发基础】PHP的流程控制之单一分支结构-PHP 快速入门(12)

迷彩

10月月更 web开发基础 PHP基础 分支语句 if条件分支

C语言内存对齐问题

乌龟哥哥

C'语言 10月月更

深入浅出Python——Python基础语法全解

何极光

Python 基础 10月月更

【web 开发基础】PHP 快速入门(11)-PHP 运算符之运算符的优先级

迷彩

表达式 10月月更 web开发基础 PHP基础 运算符优先级

C++精通之路:map和set

雪芙花

c++ 10月月更

CSS学习笔记2

虾仁疙瘩汤

CSS css3 10月月更

SAP | 选择屏幕

暮春零贰

SAP 10月月更 屏幕

Nginx反向代理是什么意思?如何配置Nginx反向代理?

wljslmz

nginx 反向代理 web服务器 10月月更

leetcode 287. Find the Duplicate Number 寻找重复数 (中等)

okokabcd

LeetCode 数据结构与算法

力扣刷题训练

lovevivi

c 数据结构 10月月更

Vue组件入门(十四)依赖注入

Augus

Vue 10月月更

Spring Boot「14」MVC 与前端控制器模式

Samson

Java spring 学习笔记 spring-boot 10月月更

如何进行需求分析?

老张

软件工程 需求分析

AntDesignPro使用electron构建桌面应用

乌龟哥哥

10月月更

【c++算法篇】--图论之克鲁斯卡尔

贤鱼很忙

c++ 图论 10月月更 克鲁斯卡尔

2022-10-25:在一个 2 * 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示。一次 移动 定义为选择 0 与一个相邻的数字(上下左右)进行交换.

福大大架构师每日一题

算法 rust 福大大

威胁网络安全的主要因素

阿泽🧸

网络安全 10月月更

css学习笔记3

虾仁疙瘩汤

CSS css3 10月月更

C# 关于程序退出问题学习

IC00

C# 学习 程序员 上位机 10月月更

数据湖(十一):Iceberg表数据组织与查询

Lansonli

数据湖 10月月更

【c++图论例题学习】洛谷p1991 无线通讯网-思路详解

贤鱼很忙

c++ 图论 10月月更

Commit之后发生了什么事情

我不吃六安茶

MySQL 事务

CSS基础1

虾仁疙瘩汤

CSS css3 10月月更

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