Android Smart Linkify API背后的机器学习 – 作者:米雪儿

2018年8月初,谷歌正式发布了代号为“Pie”的Android 9,Android正在推出一系列由人工智能提供支持的新功能,Android Smart Linkify就是其中最重要的新AI功能之一。

ec83866e6f7d9f7450f7b2005bd069d2c0e.jpg.png

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。

*参考来源:infoq,米雪儿编译整理,转载请注明来自 FreeBuf.COM

来源:freebuf.com 2018-09-12 08:00:43 by: 米雪儿

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论