bpe演算法本質是基於合併的,而不是基於切分的,理解這一點很重要。
在bpe整個迭代的過程中,是基於「詞表」的,但是最後要生成的是「子詞表」,拿來用的也是「子詞表」。
拿**裡的例子來說,最開始詞表長這樣:
l o w < 5如果你不迭代,直接基於這個詞表去生成子詞表,那生成的子詞表就是二十六個字母:l o w e r < 2
w i d e s t < 6
n e w e s t < 3
low然後進行五次合併操作之後,詞表會變成這樣:estr
nid<
low < 5基於這個詞表生成的子詞表長這樣:low e r < 5
w i d est< 6
n e w est< 3
est<如上,注意按照長度排列了一下,然後用這個子詞表去切分輸入文字。這裡說是切分,實際上還是合併。比如來了乙個單詞:lowwer
nid<
biggest我還是先把它切成字元:
b i g g e s t然後從子詞表裡找,發現 est< 能合起來,那就把 est< 合起來。然後發現別的合不起來了,就按照這個結果切分了:
b@@ i@@ g@@ g@@ est感覺查到的相關資料都沒太講明白。
BPE演算法理解
原理 英文為例 1.把每個單詞都拆成單個字母,在單詞結尾加上結束符,並標記上這個詞出現的頻率 2.以2 gram為例 把連續相鄰的2個字母,進行組合,比如a b c ab bc 同樣標記上這個詞出現的頻率 3.統計不同兩個字母組合的最大頻率,並選出最大字母組合。4.用選出的最大字母組合替換掉第一步中...
KMP演算法之我見
kmp演算法 時間複雜度o m n 最核心的是求next陣列,然後再根據next陣列來進行模式匹配。因此分為兩部分 next陣列記錄的是模式串的特徵,即最長相同前字尾 考慮如下模式串p abcdabc 它的字首有 a,ab,abc,abcd,abcda,abcdab 它的字尾有 c,bc,abc,d...
包子演算法之我見
幾天前發了乙個部落格,包子演算法,討論很熱烈,今天我來說說我的看法 首先,我們從問題的特點分析一下 1 包子製作的工藝上,菜包子和肉包子有不同,肉包子蒸的時間要更長,且在蒸的過程中一般不會打斷,換包子這種情況,代價太大。2 從購買者的角度上看,購買者的需求各異,搭配購買的概率比較大,只賣一種包子的雖...