Android Smart Linkify API背后的机器学习

上周,谷歌发布了代号为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

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址http://www.infoq.com/cn/news/2018/08/Machine-Le-Android-Smart-Linkify

扫码关注云+社区

领取腾讯云代金券