アルファベット Σ に全順序が与えられているとする。コーパスとは、Σ+ の元(語)の有限列 C=(w1,…,wK)、K≥1 のことである。マージの回数の上限 m≥0 が与えられたとき、BPE の学習は次の手続きである。
- xk(0):=wk(各語を基本語彙のトークン列とみなす)、V0:=Σ、j:=0 と置く。
- j=m ならば終了する。そうでなければ、Vj の各ペア (a,b) について、コーパス全体での出現回数 Nj(a,b):=∑k=1Kcntxk(j)(a,b) を数える(語をまたぐペアは数えない)。
- すべてのペアで Nj(a,b)=0 ならば終了する。
- Nj が最大のペアを選ぶ。最大のものが複数あるときは、Vj の順序に関する辞書式順序(まず a を比べ、等しければ b を比べる)で最小のものを選ぶ。選んだペアを (aj+1,bj+1) とする。
- 新しい id cj+1 を作り、Vj+1:=Vj∪{cj+1} とし、順序は cj+1 を Vj のどの元よりも大きいと定める。規則 rj+1:=(aj+1,bj+1↦cj+1) をすべての語に適用して xk(j+1):=Mrj+1(xk(j)) とする。j を 1 増やして 2 に戻る。
終了したときの j を m′(≤m)とする。出力はマージ規則の列 (r1,…,rm′) である。
一般に、マージ規則の列 R=(r1,…,rm)(各 rj は、基本語彙に r1,…,rj−1 を加えた語彙 Vj−1 の上の規則)に対し、符号化 encR:Σ∗→Vm∗ を
encR(s):=Mrm(⋯Mr2(Mr1(s))⋯)で定める。すなわち、記号列を基本語彙のトークン列とみなし、規則を学習した順に 1 つずつ適用する。