根据输入历史进行智能提示的一种简单解决方案的python实现

需求

假设某个时间段内输入历史为:

'ab', 'ac', 'aa', 'aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'aa'

现用户输入a

系统应自动提示下一个用户可能输入的字母ab或者c

解决方案

这个问题可以简化成一个排序问题。对用户的每个输入历史进行权重计算,最后按权重排序,输出排序高的项。

关键在于怎么计算这个权重。

权重计算考虑的因素有以下几个:

  1. 因子的组成
  2. 因子的权重计算
  3. 各因子的权重如何组合成总权重

这里考虑3种因子:

  1. 出现的次数
  2. 出现的时间
  3. 是否连续出现

出现的次数

设为 occ_w

, occ_w=该项在统计的历史中出现的次数

出现的时间

设为 pos_w, pos_w=(该项在统计历史中出现的位置/总统计数量)^2

是否连续出现

设为 ctu_w, 如果上一个项跟本项相同,则ctu_w=上一项的总权重/2。否则ctu_w=0

设总权重为w, w = occ_w + pos_w + ctu_w

实现

参考以下python代码:

ps:没有跟其他方法进行效果对比,纯做着玩。