2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

esp8266~lwip突破MTU最大1500限制,apt编译时期自动生成代码&动态类加载

android 程序员 移动开发

Flutter _ 你真的会用 Slider 组件吗?(1),androidapp开发入门

android 程序员 移动开发

FFmpeg之OpenGL绘制与Native Window绘制(五),安卓面试题及答案2020百度

android 程序员 移动开发

Flutter 2,面试官问的那些Android原理你都懂吗

android 程序员 移动开发

Flutter _ 你真的会用 Slider 组件吗?,kotlin中文文档pdf

android 程序员 移动开发

Flutter 性能优化 Tips,Android攒了一个月的面试题及解答

android 程序员 移动开发

上万规模数据湖如何在实验室测试

华为云开发者联盟

容器 数据湖 测试 MRS 集群

Flutter 与 原生交互(Android),含BATJM大厂

android 程序员 移动开发

Flutter 中获取屏幕以及 Widget 的宽高,flutter小程序开发

android 程序员 移动开发

百度爱番番数据分析体系的架构与实践

百度Geek说

架构 数据分析 后端

DialogFragment探索与实现(1),2021年是做安卓开发人员的绝佳时机

android 程序员 移动开发

Flutter 1,基于h5框架的移动app开发

android 程序员 移动开发

Flutter 2(1),字节跳动高工面试

android 移动开发

模块七:王者荣耀商城异地多活架构设计

apple

Flutter 命令本质之 Flutter tools 机制源码深入分析,kotlin实战

android 程序员 移动开发

Flutter 扩展NestedScrollView (二)列表滚动同步解决

android 程序员 移动开发

Flutter 扩展NestedScrollView (二)列表滚动同步解决(1)

android 程序员 移动开发

Flutter 插件使用必知必会,我的阿里春招之路分享

android 程序员 移动开发

Flutter 网络请求框架封装,android源码设计模式解析与实战

android 程序员 移动开发

新一代云原生的微服务架构分享

鲸品堂

云原生

测试用例又双叒叕失败了,NLP帮你来分析

华为云开发者联盟

软件 测试 nlp 测试用例

Dalvik 和 ART 有什么区别?深扒 Android 虚拟机发展史,真相却出乎意料

android 程序员 移动开发

Flutter Dio二次封装,Android开发还不会这些

android 程序员 移动开发

Flutter 扩展NestedScrollView (二)列表滚动同步解决(2)

android 程序员 移动开发

架构训练营模块七作业-王者荣耀商城异地多活架构设计

李焕之

DialogFragment探索与实现,android高级工程师面试题

android 程序员 移动开发

Python代码阅读(第53篇):字符串重复拼接

Felix

Python Code 字符串 阅读代码 Python初学者

Flutter App的启动流程,kotlin单例模式

android 程序员 移动开发

Flutter GetX使用---简洁的魅力!,Android高级

android 程序员 移动开发

Flutter 中 Wrap 的使用详解(含对比图) _ Flutter Widgets

android 程序员 移动开发

压缩性能提升10-20倍,TDengine助力零跑科技实现性能和成本最优化

TDengine

数据库 大数据 tdengine 后端

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