一種使用隨機抽樣梯度下降演算法來預估詞彙量的方法

2021-07-09 02:49:32 字數 1783 閱讀 2195

我們經常可以看到各種各樣的英語詞彙量測試功能,你測試過嗎?你覺得準嗎?

我使用過有道詞典的詞彙量測試功能,我認為它最大的問題是,不管是誰不管測多少次,每次測的詞都是固定不變的,這就好像高考,全國各地年復一年都考同一套題。

當然,它是怎麼來評估詞彙量,使用什麼演算法,那就更不知道了。

本文提出了一種使用隨機抽樣梯度下降演算法來預估詞彙量的方法,經大量使用者反映,很準,你是不是心動了,想馬上試一試呢?立馬測試一下吧,

測完詞彙量,我們就來看看如何使用隨機抽樣梯度下降演算法來預估詞彙量:

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類的完整實現:

dictionary dictionary = wordlinker.getvaliddictionary(request.getparameter("dictionary"));  

quiz quiz = quiz.buildquiz(dictionary);  

quizitem quizitem = quiz.getquizitem();  

quiz.step()指示當前測試到第幾題了,quizitem.getmeanings()是提供給使用者的選項,預設是4個。

3、獲取使用者答案,將使用者答案儲存到quiz物件中,返回值表示使用者是否答對:

影音先鋒電影

4、當quiz.getquizitem()的返回值為null的時候,說明題已經答完了,那麼就給使用者顯示結果,告知使用者哪些題答對了,哪些題答錯了。可通過quiz.getquizitem()獲得所有的題目,並通過quizitem.isright()來判定是否正確,通過quizitem.getword().getword()來獲得詞,通過quizitem.getword().getmeaning()來獲得所有的選項,通過quizitem.getanswer()來獲取使用者提交的答案。

RANSAC 隨機抽樣一致演算法

ransac通過反覆選擇資料中的一組隨機子集來達成目標。被選取的子集被假設為局內點,並用下述方法進行驗證 1.首先我們先隨機假設一小組局內點為初始值。然後用此局內點擬合乙個模型,此模型適應於假設的局內點,所有的未知引數都能從假設的局內點計算得出。2.用1中得到的模型去測試所有的其它資料,如果某個點適...

隨機抽樣一致性演算法(RANSAC)

隨機抽樣一致性演算法 ransac 以下都是個人對於ransac的一些認識,可能有比較大的問題,望大家批評指正。應用的範圍 主要在散點圖中獲得乙個已知模型的引數,使得符合這個模型引數的點最多。散點圖由局內點和局外點之分,當散點在模型上時則是局內點,如果在模型外則為局外點。ransac的目標是找尋乙個...

一種隨機數生成演算法

隨機數生成類 class randnumber randnumber randnumber unsigned long s 0 else unsigned short randnumber random unsigned long n double randnumber frandom unsign...