(s|qu)eries: 面向事件序列的视觉正则表达式检索浏览工具(Visual Regular Expressions for Querying and Exploring Event Sequences)

电子产品融入日常生活为我们带来大量便利的同时,也记录下我们周围形形色色的活动和状况:医疗中的电子病例记录、网站上的用户点击和浏览历史记录、“量化生活”(Quantified Self,一个记录个人健康数据的电子产品)、眼动追踪记录或者各式各样的输入设备和软件运行日志等等。分析这些事件序列数据可以帮助数据科学家可以找到我们使用这些产品的潜在规律,比如通过查看移动应用的使用日志,检测到异常发生的情形,并总结用户交互的流程,从而辅助决策者来做出改善,以改善产品以提高市场竞争力。

然而,要分析这些事件序列数据却充满了挑战。一方面,这类事件序列数据的规模和复杂性在日益增长。另一方面,分析的需求也正变得更富多样性和多层次性:对于移动应用的使用日志,交互设计师对所有用户的使用流程感兴趣,他们希望以此总结出交互上的易用性;而开发人员却往往只关注于某一个确切的页面,他们希望找到某个特定bug的原因。这些挑战都使得潜在的信息和规律越来越难以被挖掘。现有的支持数据查询的系统(如SQL等)则不够直观太难以学习,且没有迭代的交互性可言。可视化是一个很有优势的技术,它可以利用人的视觉系统的优势来发现有趣的特征。然而,要从包含海量序列数据的界面中锁定特征的需求并不容易。

针对这个需求,来自微软研究院和美国布朗大学的学者们开发了一个名为(s|qu)eries的系统,它结合了视觉交互的方式以支持对海量事件序列数据检索。这篇工作在今年的CHI会议上发布[1]。这个系统利用触控交互的技术,把正则表达式检索的过程视觉化地呈现,这种直观的分析可以让用户对检索结果又全面的探索。

一、正则表达式和视觉设计

(s|qu)eries用带有标识的圆角矩形节点表示正则表达式中的单元,节点之间的连接表示正则表达式中的级联关系。下图是(s|qu)eries对应正则表达式语法的视觉符号设计:

(s|qu)eries中正则表达式语法对应的视觉设计

(s|qu)eries中正则表达式语法对应的视觉设计

级联(Concatenation): 级联表示abc串由串a、b和c串联,故只能匹配abc,不能是acb。对应视觉上的设计是三个节点a、b、c依次连接。

或(Alternation):a|b匹配a或者b。对应图中两个节点并列。比如上图f中Search动作和ViewPromotion动作并列连接到ViewProduct,表示查询匹配Search->ViewProduct序列或者ViewPromotion->ViewProduct的所有序列。

组合(Grouping):(a|b)c匹配ac或者bc。如上图f中,匹配的结果被组合成一个大的单元,用户可以展开右下角查看匹配到这个组合的详细信息。

量词(Quantifiers, e.g., ?/*/+):?表示匹配0个或者1个,*表示0个或任意多个,+表示至少匹配一个。这些量词都在节点的左下角被标注出来。并且,对可以匹配多次的节点,节点会用重影的视觉隐喻来暗示重复匹配,如上图中的c、e所示。

通配符(Wildcard):在正则表达式中,“.”称为通配符,表示可以匹配任意字符。(s|qu)eries用空白的节点来表示通配符。

引用(Backreferences):引用之前被匹配的字符串可以用反斜杠加上引用编号来表示。比如,([a-c])x\1表示axa|bxb|cxc。(s|qu)eries用链条来标注某个节点引用了另一个节点的匹配内容。如上图g中所示。

范围和非(Ranges, Negation):[a-z]表示a至z的字符,[^a-z]表示除去a至z这26 个字符之外的一切字符。在(s|qu)eries中,非运算用一根白线来表示。比如上图中d所示,表示匹配所有浏览器不是Firefox32.0.1或者IE11.0的所有搜索动作。

这些正则表达式的语法分别对应的视觉元素都有其中的隐喻,让人很容易理解。文中提到,某些用户在完成他们的调查之后才知道,原来这是正则表达式的语法。这说明这个查询工具的设计很接近人的自然逻辑,学习成本很低,这也是易用性的一个佐证。

二、查询结果和交互设计

用户通过基于触控交互的方法,构建出正则表达式的每一个单元,并依次连接起来,这样便构造好了一个目标正则表达式。在整个过程中,后台会实时地用对应正则表达式检索并返回内容。若用户想查看某个匹配的子序列的具体信息,他可以通过拖拽这个组件右下角的三角形展开详细视图(下图)。根据用户拖拽的幅度大小,展开的详细程度也会随之变化:可以只显示不同动作的百分比(下图b),或者把每一项的具体数值都显示出来(下图c)。

用户拖拽的幅度不同,所展开的详细信息层次也不同

用户拖拽的幅度不同,所展开的详细信息层次也不同

三、使用案例

为了评估这个系统的有效性,作者邀请十位不同背景的数据科学家对日常电商数据做分析。经过初步的学习之后,他们都可以流畅地用这个系统,发现了之前一直被忽略的潜在规律。

Adam是一个电子商务公司的数据科学家,该公司近期发布了移动端的应用软件供用户直接浏和购买产品,从每一个用户打开软件开始,到推出软件结束,他做的每一步浏览、搜索和购买等等动作都会被记录下来,软件日志都是这样的一行行文本:

Session,User,TimeStamp,Attributes
4,3,8/1/14 3:01,action=AppStart
4,3,8/1/14 3:02,action=Search&query=Helmets
4,3,8/1/14 3:11,action=ViewProduct&query=Red Bottle
4,3,8/1/14 3:13,action=AppClose

每一行记录了用户在何时做了什么动作。Adam想通过这些日志来验证软件的交互流程是否合理。首先他在系统的空白页面中双击,创建了一个节点,以匹配任何动作。展开这个节点可以看到它包含的动作类型以及它们的频率。Adam对其中的“购买”(checkout)动作感兴趣,于是他通过拖拽这个标签创建了另一个“购买”动作的节点。可以看到,有14%的会话成功购买了商品。Adam想进一步分析是什么动作导致了成功购买商品,于是他创建了一个新的节点放置在“购买”节点之前,用来匹配所有买前的动作。可以看到,大多数动作都是“加入购物车”,这很符合常理。之后,Adam想分析用户在购买之后会做哪些动作,于是他通过拖拽来交换节点的链接先后顺序,以创建了新的查询语句。通过详细信息的手柄,系统会重新返回新的检索结果。

teaser

作者对一个电子商务公司中的五位不同背景的员工进行调查,均得到了很好的反馈:不论是技术背景或者从未接触过正则表达式的人员,都能在短时间的培训中掌握使用方法,并按照自己的意愿构建查询语句进行分析,还有用户反映能通过这个工具找到之前没有发现的情形。

总结说来,这个工作把基于正则表达式检索可视化地呈现出来,用以支持事件序列数据的浏览和分析。原文材料和更详尽的视频介绍可以在微软研究院的公开网站上获取:http://research.microsoft.com/apps/pubs/default.aspx?id=244463

[1] Emanuel Zgraggen, Steven M. Drucker, Danyel Fisher, and Robert DeLine. (s|qu)eries: Visual Regular Expressions for Querying and Exploring Event Sequences. In Proceedings of the SIGCHI conference on Human factors in computing systems, ACM (2015), 2683–2692.

评论关闭。