BPE演算法之我見

2021-10-06 01:47:29 字數 864 閱讀 3801

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 從購買者的角度上看,購買者的需求各異,搭配購買的概率比較大,只賣一種包子的雖...