
資料內(nèi)容:
1.1 Tokenization
- Token 是指文本中的一個(gè)基本單元,通常是詞或短語。這個(gè)切分 token 的過程,稱為分詞(Tokenization)。 Tokenization 的本質(zhì)其實(shí)就是一個(gè)字符到數(shù)字的映射,其維護(hù)的是一個(gè)字典,而不是權(quán)重,也就是說每一個(gè)字符/詞/短語都有一個(gè)唯一確定的數(shù)字與其對應(yīng)。
- 詞粒度
- 詞粒度基本是最直觀的分詞手段了,也是最符合我們平時(shí)認(rèn)知的方式。每一個(gè) token 是詞典中的一個(gè)詞。 - 優(yōu)點(diǎn): - 符合人類的直覺,詞的含義完備。 - 對于拉丁語系很簡單,按照空格和標(biāo)點(diǎn)符號分割即可。 - 缺點(diǎn): - 對于中文日文,需要專門進(jìn)行分詞,比如中文分詞一般都用 jieba(結(jié)巴分詞),哈工大的 LTP 等。 - 如何構(gòu)造一份好的詞典,以及詞典過大的問題。 - OOV (Out of Vocabulary)問題,對于詞典中沒有詞一般會(huì)分配一個(gè)統(tǒng)一來處理,信息丟失。 - 同義詞和誤拼會(huì)被認(rèn)為是不同的詞。比如 do not 和 don't 雖然含義一樣,但是最終的 id 不一樣。類似的還有詞的不同形態(tài),比如 have, has, had, having 等。 - 詞典中的詞沒有任何關(guān)聯(lián),低頻詞不會(huì)得到充分的訓(xùn)練。比如 oarfish,這個(gè)詞雖然第一眼可能不知道什么意思,但是能猜出是一種魚(皇帶魚)。
- 子粒度
- 把文本按照最小粒度來拆分,對于英文來說就是 26 個(gè)字母加上一些標(biāo)點(diǎn)符號。中文來說就是字。 - 優(yōu)點(diǎn): - 實(shí)現(xiàn)簡單。 - 詞典很小。 - 幾乎沒有 OOV (Out of Vocabulary)問題 - 缺點(diǎn): - 對于英文來說,單個(gè)字母幾乎沒有含義。 - 難以學(xué)習(xí)到詞匯的真正含義。由于中文的一個(gè)字還是有一定的含義,所以在中文勉強(qiáng)可以使用,但是英文幾乎沒法使用。 - 會(huì)讓輸入變得很長,訓(xùn)練和推理更慢。
- Embedding
- 核心是為了向量化
- 假設(shè)我們現(xiàn)在有一個(gè)詞庫(詞匯表),里面有五個(gè)詞[ I , love , programming , in, Python ],我們通過索引下標(biāo)將其標(biāo)識出來分別對應(yīng)[1, 2, 3, 4 , 5],但是這樣的表示方法,基本很難幫助我們?nèi)グl(fā)現(xiàn)他們之間的關(guān)系,比如相似性、多義性,所以我們引入向量空間,幫助我們更好表示不同詞token,one-hot就是其中一種: