原文作者:微软研究院杰出科学家Ashok Chandra博士,项目经理Dhyanesh Narayanan
译者:张鑫
上个世纪七十年代,当我(Ashok)还是一名斯坦福大学人工智能实验室的学生时,大家都很乐观地认为,可以达到人类水平的机器智能将指日可待。好吧,尽管如今它还在指日可待着,但与此同时,得益于机器学习的发展,计算机的能力愈发强大。正因如此,现如今几乎微软的所有新产品都在不同程度地利用着机器学习技术来分析语音、数据或文本的信息。本文我们将重点为您介绍机器学习在文本分析领域的应用。
随着计算机对自然语言的深入理解,新的研究领域开始大量涌现——应用程序用户界面的优化、更出色的搜索引擎、像Cortana和Siri这样的私人助理,以及分析给定文档确切内容的工具。例如,如果一个新闻网站把文章中提及到的相关人物,用算法链接至维基百科(或其它合适的数据库),使读者可以获取到这些人物的更多信息,那么这个新闻网站的使用体验便会更加出色。此外,如图1所示,通过为文本添加标记,可以帮助人们更好的聚焦到文章主要谈及的主体(比如运动员、团队等)。
图 1 文本分析的激励场景
文本分析一直是计算机科学研究的活跃领域之一,在未来仍将受到持续的关注。毕竟,以文本的形式来创建一个人类所有知识的语义模型绝非易事。追溯到上个世纪90年代,早期的研究如Brill标记技术 (Brill taggers) [1] 虽已可以确定句子中的词类,但这 [2] 仅为之后的研究起到了一个提示作用。微软研究院一直在这项领域内积极的创造各种新思路,更出于对实用性的考量,将重点放在了与创造新的产品级技术相匹配的科学研究。
本文中,我们将为您简要阐述机器学习是如何基于命名实体识别技术(以下简称“NER”- Named Entity Recognition),应用于文本分析的。鉴于微软Azure机器学习云平台(Microsoft Azure ML)作为一个可提供全承包(turnkey)式机器学习功能的平台,可支持通用的文本分析功能和特殊的NER技术——因此我们把它作为从通用理念到特定设计选择的连接方式。
NER技术主要用于确定文本中所提及的人、场所、组织、运动团队等对象。首先,让我们大致了解下这个“监督式学习”(supervised learning)方法解决问题的流程。
图 2 NER的工作流
在设计阶段或“学习阶段”,系统基于训练数据建立一个模型,在观察一些训练范例后,去预测或处理任意的新文本。
训练数据(training data)由一系列为待学习的命名实体而人工标注的标签组成,如下文所示——”When <Player>Chris Bosh</Player> excels, <Team>Miami Heat</Team> becomes juggernaut“(当<球员>Chris Bosh</球员>表现出众,<球队>迈阿密热火</球队>将所向披靡) 。我们希望,当模型通过一些这样现实中的示例训练后,就可以有效识别出新文本中“球员”和“球队”这样的实体。
设计阶段工作流的效率主要取决于特征提取(Feature Extraction)——通常情况下,特征设计的越详尽,模型的识别功能便会越强大。比如,我们经常会根据上下文去判断某个词语在一篇文章中的语义,从而关联到某个语义。这种有效的方法同样适用于模型的训练。例如,在“San Francisco beat the Cardinals in an intense match yesterday”(昨天,San Francisco在激烈的比赛中击败了Cardinals)这句话中,显然我们可以从上下文的语境中知道,这里的“San Francisco”是指一个球队(即旧金山巨人队),而不是指旧金山这座城市。另外,大写形式是另一个识别文中如人名、地名等命名实体的有效方法。
模型训练(Model Training),也就是机器学习的目标,即最终建立起一个良好的模型。通常,机器学习是一系列已选定特征的复杂组合,它通常是由选定的特定功能经过复杂组合而来。目前常用的机器学习技术包括感知器算法(Perceptron)、条件随机域(CRF-Conditional Random Fields)等。有限的数据训练集、系统的处理速度以及同时需要学习的不同命名实体类型的数量都会影响模型的精准度,继而决定了技术的选择。例如Azure ML NER模块便默认支持三种实体类型,即People(人)、Places(地点)和Organizations(组织)。
运行阶段(Run Time)的目标是将未标记的输入文本生成同设计时期创建的模型识别实体相对应的输出文本。正如你所看到的,运行阶段的工作流会继续用到设计阶段的特征提取模块——因此,如果要为一个应用程序提供一个就有高吞吐量的实体识别模型,管道中的特征需要有相对量轻且价值高的属性。作为一个典型实例,Azure ML NER模块使用了一小组主要基于局部上下文的易于计算的特征,事实证明这非常有效。另外,处理语义歧义问题的常用方法是使用如Viterbi译码等技术,为输入单词序列分配实体标签。
我们可以看到,NER技术虽只是一个开始,然而也是计算机可以从原始文本中获取“知识”极为重要的第一步。最近发布的一篇博客文章中为我们讲述了NER技术在结合了一系列相关技术后,如何为Bing体育App的用户带来了扣人心弦的体验。你也可以在Azure ML里获取完全相同的NER堆栈功能。除了NER技术之外,一般自然语言的解析、链接和突出的标注、情感分析、事实提取等技术都可以用来提高应用程序在内容上的用户体验,使文本变得鲜活起来。
参考文献
[1] Eric Brill, 1992, A simple rule-based part of speech tagger, Applied natural language processing (ANLC '92)
[2] Li Deng, Dong Yu, 2014, Deep Learning: Methods and Applications