论文部分内容阅读
近年来,移动应用已经渗透到人们生活与工作的方方面面。无论是简单的通讯和娱乐,还是像银行转账、网上付费和电子商务这样敏感的活动,人们都倾向于在他们的指尖完成。为了满足人们的需求,各种类型的移动应用的数量急剧增长,而移动应用的普及也带来了巨大的经济效益。与传统软件相比,移动应用更加重视用户,可以说移动应用是一类以用户为中心的软件系统。作为移动应用生态圈中两个重要的角色,软件开发者和应用商店需要完成好各自的任务,以保证产品和市场的用户数量,从而维持乃至扩大产品与市场的利益。就移动应用的开发者而言,他们不仅要在产品开发阶段实现规划好的功能而且需要在移动应用迭代时对产品所具有的功能进行拓展。在此过程中,开发者面临两个关键的问题:在开发和迭代应用时,哪些API可以支持产品的功能实现;以及在应用迭代时,应将哪些功能添加到产品中。此外,面对数以百万计的产品,移动应用商店的一个重要任务是为用户推荐适合他们的产品。随着移动应用的功能变得越来越强大,应用商店不应该再只考虑功能和流行度等传统的推荐要素,产品的隐私安全性也需要在推荐过程中被重视起来。针对这些问题,本文基于自然语言处理、数据挖掘和深度学习等技术进行相关研究并提出方法为安卓移动应用开发者推荐API信息和功能信息,以及帮助安卓移动应用商店为用户推荐合适的软件产品。需要指出的是,本文所提出的方法是针对安卓移动应用的,但是其解决问题的思想同样适用于其它类型的应用,如苹果商店中的应用。本文的主要研究内容如下:(1)为了帮助移动应用开发者在实现产品功能时获取到合适的API以提高产品开发和迭代的效率,从而能够尽早地抢占市场用户,本文通过总结移动应用商店中现有产品的API使用经验获取可重用知识,并基于获取的知识从功能级别为开发者推荐合适的API。首先,以UI(User Interface)组件为桥梁建立功能和API之间的映射关系。然后,对从产品UI中获取到的功能进行总结以建立一个功能框架,并且基于功能和API之间的映射关系为框架中的节点构建API知识。最后,根据查询功能的关键词以及表达形式识别其在框架中对应的节点,并且将节点的API知识以推荐列表的形式展示给开发者以帮助他们有效地使用推荐信息。(2)为了帮助移动应用开发者拓展产品所具有的功能,本文将UI页面作为信息挖掘的数据单元为功能之间建立关系,并且基于这些关系捕获应用相比于与其相似的产品缺少的关键功能,进而将这些功能推荐给应用开发者。首先,利用UI测试工具为移动应用收集UI页面,并给出方法挖掘这些页面中的功能信息。然后,通过对比UI页面中的功能信息,识别与被分析应用功能相似的产品。最后,通过挖掘被分析应用和它的相似产品的UI页面来建立功能之间的关系,并且基于获取到的关系为被分析产品的UI页面推荐合适的功能,即遗漏掉的关键功能。(3)为了帮助移动应用开发者拓展产品所具有的功能,本文还通过挖掘评论来获取用户的功能需求并将其推荐给应用开发者。首先,以人工的方式总结了相关的分类要素,并且基于这些要素训练一个评论分类器将评论分类为包含用户需求的评论和其它评论。然后,定义了两类抽取规则(基于关键词的语义规则和语法规则)从包含用户需求的评论中抽取功能信息。最后,以用户的关注度为参考要素评估从评论中得到的功能的推荐价值,并且基于现有产品的开发经验明确这些功能适合添加到的位置,从而帮助应用开发者更好地使用推荐信息。(4)为了帮助移动应用商店为用户推荐适合他们的产品,本文综合考虑隐私安全和产品功能提出了一个个性化的应用产品推荐方法。首先,利用现有方法挖掘移动应用的描述文本中的功能并将它们总结成可以用来描述更高粒度的功能信息的“方面”。其次,将应用的评论与得到的“方面”进行关联,并且通过挖掘关联成功的评论中的用户观点来评估产品在各个“方面”的完成质量。再次,基于应用在各个“方面”的完成质量对它们进行聚类,并且通过对比同一个簇中的产品的敏感权限使用情况进行安全分析。最后,根据产品下载历史推测用户对于各个功能“方面”的偏好程度并且将获取的结果与用户对于隐私安全的重视程度结合在一起,综合考虑安全和功能两个维度信息,完成产品的推荐工作。综上所述,本文针对安卓移动应用的API使用、功能拓展以及产品推荐这三个问题,基于自然语言处理、数据挖掘和深度学习等技术进行研究并且给出方法推荐(API和功能)信息与应用,旨在为开发者和移动应用商店提供帮助。