當前位置:成語大全網 - 書法字典 - 使用BPE(字節對編碼)的標記化對跨語言語言模型有什麽意義?這有問題嗎?

使用BPE(字節對編碼)的標記化對跨語言語言模型有什麽意義?這有問題嗎?

BPE概況

字節對編碼是壹種解決未註冊單詞的方法。首先,什麽是未知單詞?未登錄詞可以理解為沒有出現在訓練語料庫中,但出現在測試語料庫中的詞。在處理自然語言處理任務時,我們通常基於語料庫生成詞典,將語料庫中詞頻大於某個閾值的詞放入詞典中,而低於該閾值的詞被編碼為“#UNK”。這種方法的優點是簡單,但也是壹個大問題。如果測試語料庫中存在未知單詞,我們的模型很難處理它們。因為本文不是解釋如何處理NLP中的未登錄詞,所以其他廢話不多說,我們只說BPE算法如何解決未登錄詞。

通常,我們的詞典是單詞級的,也就是說,詞典是基於單詞或短語的,但這將不可避免地遇到未註冊單詞的問題,因為不可能設計壹個可以涵蓋所有單詞的非常大的詞典。此外,另壹種詞典是字符型詞典(character-lever),它使用單個字母或漢字(中文)作為基本單詞來設計詞典。這種方法理論上可以解決未註冊詞的問題,因為所有的詞都是由字母組成的,但這樣做的缺點是模型粒度太細,缺乏語義信息。事實上,有人做過實驗證明這種方法不好。

後來在2065438+2006中,rich等人提出了壹種基於子詞的詞典生成方法。該方法綜合了單詞級和字符級的優點,從語料庫中學習所有單詞中的高頻字符子串,然後將這些高頻字符子串合並到字典中。在本詞典中,既有單詞級子串,也有字符級子串。其中,尋找高頻子串的方法是本文將要說明的BPE算法。

BEP算法非常簡單,主要用於查找字符串中的高頻子字符串。具體來說,我們在語料庫中的每個單詞的末尾添加壹個停止標記。然後我們把每個單詞拆分成字母。例如,最初我們有以下單詞:

{“低”:5,“低”:2,“最新”:6,“最寬”:3}

添加停止令牌並將其拆分後,它將變成以下形式:

{‘l o w & lt;/w & gt;‘:5‘l o w e r & lt;/w & gt;‘:2‘n e w e s t & lt;/w & gt;‘:6‘w I d e s t & lt;/w & gt;‘: 3}

接下來,我們計算兩個相鄰字母的頻率,並選擇頻率最高的壹對進行合並。在上例中,“e”和“s”* * *出現了9次,出現頻率最高,因此我們將它們合並在壹起:

{‘l o w & lt;/w & gt;‘:5‘l o w e r & lt;/w & gt;‘:2,‘n e w es t & lt;/w & gt;‘:6,‘w id es t & lt/w & gt;‘: 3}

繼續重復剛才的方法,發現“es”和“t”* * *出現了9次,頻率最高,因此將它們合並:

{‘l o w & lt;/w & gt;‘:5‘l o w e r & lt;/w & gt;‘:2,‘東北西& lt/w & gt;‘:6,‘w I d est & lt/w & gt;‘: 3}

依此類推,叠代n次,直到達到預設的子詞詞匯大小或下壹個最高頻率字節對的頻率為1。