一种使用随机抽样梯度下降算法来预估词汇量的方法


我们经常可以看到各种各样的英语词汇量测试功能,你测试过吗?你觉得准吗?

我使用过有道词典的词汇量测试功能,我认为它最大的问题是,不管是谁不管测多少次,每次测的词都是固定不变的,这就好像高考,全国各地年复一年都考同一套题。

当然,它是怎么来评估词汇量,使用什么算法,那就更不知道了。

本文提出了一种使用随机抽样梯度下降算法来预估词汇量的方法,经大量用户反映,很准,你是不是心动了,想马上试一试呢?立马测试一下吧,

测完词汇量,我们就来看看如何使用随机抽样梯度下降算法来预估词汇量:

伦理片 http://www.dotdy.com/

1、将词汇分成9个级别,难度是先递增然后平稳然后稍微有一点下降。

2、从这9个级别中,随机挑选总共100个单词,从第1级到第9级挑选的个数分别是:5、10、15、15、15、10、10、10、10。

3、之所以选择100个单词,是经过精心设计的。正常时间需要8分钟完成,如果高手来做题,应该会在5分钟内完成;如果菜鸟做题,一般会超过16分钟来完成;还有一种情况,就是如果有人闭着眼睛一直选A,这样他大概只要1分钟左右的时间。

4、因为这9个级别总体趋势是梯度上升的,在做题的时候,如果前面的梯度出现问题,那么说明基础不扎实,这虽然不会中断测试也不应该中断测试,但是会减少后面梯度的预估权重。

5、在词汇量预估模型中,使用固定值预估+梯度下降算法来计算。

6、给用户记时,用户答题完成后,计算每一个级别答对的问题数目,如: 1 -> 2,2 -> 3,… ,9 -> 3。

7、计算每一个级别答对的比率 = 每一个级别答对的题数 / 每一个级别总的题数。

8、遍历每一个答对的题,累加预估总词数。如果题目属于第一级, 则将第一级答对的比率乘以固定的预估值作为该题预估词数。如果题目不属于第一级, 则将上一级答对的比率和本级相乘,然后用这个比率乘以固定的预估值作为该题预估词数。如果上一级全部答错, 则将上一级的答对比率固定设置为0.1。

9、加入答题时间的影响。期望答题时间是8分钟。每提前一秒钟预估词数加20,最多加量不超过3600。每落后一秒钟预估词数减20, 最多减量不超过9600。假定做题最快时间不少于4分钟,如果少于四分钟,每少N秒预估词数就减去4800+N*20。

10、如果如上算法最后获得的预估词数是负数,则去除负号取绝对值。

算法实现如下:

1、使用如下代码构造quiz对象,这里我们不但支持中文词典还支持英文词典,进一步参考Quiz类的完整实现


  1. Dictionary dictionary = WordLinker.getValidDictionary(request.getParameter("dictionary"));  
  2. Quiz quiz = Quiz.buildQuiz(dictionary);  

2、获取quizItem,然后展现给用户,展现页面的JSP代码参考这里


  1. QuizItem quizItem = quiz.getQuizItem();  

quiz.step()指示当前测试到第几题了,quizItem.getMeanings()是提供给用户的选项,默认是4个。

3、获取用户答案,将用户答案保存到quiz对象中,返回值表示用户是否答对:

  影音先锋电影 http://www.iskdy .com/
  1. boolean right = quiz.answer(word, answer);  

4、当quiz.getQuizItem()的返回值为null的时候,说明题已经答完了,那么就给用户显示结果,告知用户哪些题答对了,哪些题答错了。可通过quiz.getQuizItem()获得所有的题目,并通过quizItem.isRight()来判定是否正确,通过quizItem.getWord().getWord()来获得词,通过quizItem.getWord().getMeaning()来获得所有的选项,通过quizItem.getAnswer()来获取用户提交的答案。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值