安卓输入法输入性能评测流程

 

在推出一个新版本输入法时,需要我们对输入法的输入性能做一个评测。对于输入法来说,有一些指标可以用来评价输入法,如首选命中率,首屏命中率,联想按键率等。下文主要讲我们评测输入法的整个流程。...



在我们的安卓版按键率评测的自动化处理整体流程主要包括三步,模仿键入操作,实时读取输入法的反馈与数据存储,以及数据分析。整个自动化处理的流程模拟人的真实操作环境,并能通过读取输入法的实时反馈判断输入法的命中情况并存储处理日志,从而分析输入法的输入准确率等性能,并辅助定位问题,为后续输入法的改进提供建议。

一.键入操作



第一步模仿键入操作。中文拼音输入法用户的主要输入包括拼音串与格式化符号。拼音输入法分9键和26键两种。上图给出评测中所用的数据集的样例。

以上样本中,左侧是9键的评测集,右侧是26键的评测集的部分数据。评测样本中包括,格式化字符“&”,“#”与“*”,分别表示着联想,一句输入结束与删除上一个汉字。

二.读取实时反馈与数据记录

第二部分为读取输入法的实时反馈与数据记录。获取输入法的实时反馈,可以判断候选是否达到预期的命中效果。如是否首选命中,首屏是否命中,并进行按键率,如首选按键率,联想按键率等的数据统计。

获取输入法的实时反馈的流程步骤是:

首先完成一次按键输入,在我们的项目中,主要借助于MotionEvent事件模拟手指的按下与抬起操作。

如上所示,首先定义了两个MotionEvent,最终借助于google提供的基础测试类Instrumentation实现这个touch操作。

接着获取系统打印事件的日志。这一部分主要通过hook方法获取Android系统的实时反馈。小编公众号中曾做过介绍。感兴趣的读者可前往查看。

然后是分析日志,定位相应候选,判断候选是否命中等。对于判断候选来说,首先确定候选的位置。我们可以看到,常见输入法的候选位置在首屏上基本上“行位置”是固定的。我们可以根据这一点,首先定位到候选的行坐标位置,继而根据该坐标值,在hook得到的系统日志文件中进行分析,定位到该次输入的候选。继而可以判断本次输入的候选是否命中测试样本的汉字。如对于首选命中率来说,我们只需要判断本次的候选的第一位是否命中即可。另外,候选的“行位置”存在着一定的变化性,这一部分具体做相应处理即可。

数据记录部分主要记录处理过程中获取的处理结果。如对于首选按键率来说需要判断并统计的项为是否首选命中。数据记录部分还需要记录下输入法处理的日志,如每一次输入产生的候选。这部分内容可以用于后续的错误分析与对输入法的改进。

三.数据分析

      



第三步结果分析的部分,即对上一步中获取的实时反馈进行分析。如,对于首选按键率来说。首选率为首选命中个数/有效输入样本数。首屏命中率则为首屏命中数/有效候选数。结果与日志文件如上图所示。

通过对按键率等的分析可以比较我们的产品与其它输入法的输入性能。通过对日志文件的分析,可以定位到问题所在。例如我们的评测过程中就曾发现过某个测试版本二三元词库不生效的问题。

评测过程中,需要根据日志文件分析评测是否有效。对于不同输入法来说,需要人为配置键盘位置。

欢迎交流~


    关注 微文阅读推荐


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册