能在文本精准检测地址和号码 谷歌是怎么做到的
8月10日消息,据国外媒体报道,谷歌本周发布了最新版的移送操作系统Android Pie,其中的亮点功能之一就是Smart Linkify。这是一个应用程序编程接口,可在文本中检测到地址、电话号码和其他类似信息并调用可点击链接。虽然这听起来很炫酷,但事实上一切都是人工智能在背后作用的结果。
“在文本中识别出电话号码和地址往往是一个难题,”谷歌人工智能软件工程师卢卡斯齐卡(Lukas Zilka)在一篇博客文章中写道。“这不仅是因为人们在编写文本时有很多变化,而且文本中的组合代表什么样的信息也经常是模棱两可(例如:’确认号码:857-555-3556’并不是一个电话号码,即使它采用了类似于电话号码的形式)。”
齐卡解释说,Smart Linkify是对现有Android Linkify API的改进,其底层由两个紧凑的、低延迟的前馈神经网络组成——由称为节点的简单处理单元层组成的机器学习算法——其中借用了前版移动操作西戎Android Oreo的智能文本选择功能。
这两个神经网络都依赖第三个模型生成的数据。该模型从网络中提取电话号码、地址、产品、地点和商业名称,并随机添加“文本上下文”和短语(例如“确认号码”和“ID”)。谷歌人工智能团队针对拉丁文字语言(英语、德语、波兰语和捷克语)使用一种算法,而针对日语、韩语、泰语、阿拉伯语和俄语等语种分别使用了完全不同的算法。
整个处理过程是这样的:要分析的文本被拆分为单词,然后从这些单词中生成所有可能的最大长度子序列。然后,系统中的第一个神经网络为每个子序列分配一个值(在0到1之间),表示它对自己的身份(例如给定的一串数字是密码还是电话号码)的置信度。
得分最低的子序列从列表中删除,然后第二个神经网络介入,按类型对子序列进行分类——即电话号码、地址或非实体信息。
“(网络)需要知道实体周围的上下文(除了实体本身的文本字符串之外)。在机器学习中,这是通过将这些部分表示为单独的特性来实现的。”齐卡表示,“实际上输入文本被拆分成几部分,分别馈送到神经网络。”
为此,单词被转换成n-gram模型(有时也称为N元模子,是大词汇连续语音识别中常用的一种语言模型),这种技术“将(词汇)表示为一定长度的所有字符子序列的集合”。而一个神经网络辨识这些单词是否以大写字母开头——这是邮政地址的一个显著特征。
在实践中,假设句子“约翰应该在周二打电话1- 800-9444-9494”这句话,Smart Linkify首先会将“John应该拨打”与“1- 800-9444-9494”分开,然后将“John应该拨打”和“1-800-944-9494”分类为非实体电话号码和电话号码,最后在网络浏览器或应用程序中通过这个电话号码创建一个可点击的链接。
在智能手机硬件的限制下,这种工作对人工智能团队来说是一个额外的挑战。他们通过量化(一种将连续范围的值转换为有限范围离散值的压缩技术)以及在系统两个神经网络之间共享某些数值表示等其他技术来解决这个问题。
在不久的将来,这个团队希望为日期和时间创建机器学习模型——尤其是识别文本中的非正式短语,如“下周四”或“三周后”。
“我们相信这种架构可以扩展到其他设备上的文本注释问题,我们期待看到新的用例,”齐卡写道。