精品一区二区三区在线成人,欧美精产国品一二三区,Ji大巴进入女人66h,亚洲春色在线视频

一文搞懂Tokenization!

人工智能
Tokenization是NLP的基本任務,按照特定需求能把一段連續的文本序列切分為一個字符串序列,其中的元素稱為token或詞語。

語言模型是對文本進行推理,文本通常是字符串形式,但是模型的輸入只能是數字,因此需要將文本轉換成數字形式。

Tokenization是NLP的基本任務,按照特定需求能把一段連續的文本序列(如句子、段落等)切分為一個字符串序列(如單詞、短語、字符、標點等多個單元),其中的元素稱為token或詞語。

具體流程如下圖所示,首先將文本句子切分成一個個單元,然后將子單元數值化(映射為向量),再將這些向量輸入到模型進行編碼,最后輸出到下游任務進一步得到最終的結果。

文本切分

按照文本切分的粒度可以將Tokenization分為詞粒度Tokenization、字符粒度Tokenization、subword粒度Tokenization三類。

1.詞粒度Tokenization

詞粒度Tokenization是最直觀的分詞方式,即是指將文本按照詞匯words進行切分。例如:

The quick brown fox jumps over the lazy dog.

詞粒度Tokenized結果:

['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']

在這個例子中,文本被切分為一個個獨立的單詞,每個單詞作為一個token,標點符號'.'也被視為獨立的token。

如若是中文文本,則通常是按照詞典收錄的標準詞匯或是通過分詞算法識別出的短語、成語、專有名詞等進行切分。例如:

我喜歡吃蘋果。

詞粒度Tokenized結果:

['我', '喜歡', '吃', '蘋果', '。']

這段中文文本被切分成五個詞語:“我”、“喜歡”、“吃”、“蘋果”和句號“。”,每個詞語作為一個token。

2.字符粒度Tokenization

字符粒度Tokenization將文本分割成最小的字符單元,即每個字符被視為一個單獨的token。例如:

Hello, world!

字符粒度Tokenized結果:

['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!']

字符粒度Tokenization在中文中是將文本按照每個獨立的漢字進行切分。

我喜歡吃蘋果。

字符粒度Tokenized結果:

['我', '喜', '歡', '吃', '蘋', '果', '。']

3.subword粒度Tokenization

subword粒度Tokenization介于詞粒度和字符粒度之間,它將文本分割成介于單詞和字符之間的子詞(subwords)作為token。常見的subword Tokenization方法包括Byte Pair Encoding (BPE)、WordPiece等。這些方法通過統計文本數據中的子串頻率,自動生成一種分詞詞典,能夠有效應對未登錄詞(OOV)問題,同時保持一定的語義完整性。

helloworld

假設經過BPE算法訓練后,生成的子詞詞典包含以下條目:

h, e, l, o, w, r, d, hel, low, wor, orld

子詞粒度Tokenized結果:

['hel', 'low', 'orld']

這里,“helloworld”被切分為三個子詞“hel”,“low”,“orld”,這些都是詞典中出現過的高頻子串組合。這種切分方式既能處理未知詞匯(如“helloworld”并非標準英語單詞),又保留了一定的語義信息(子詞組合起來能還原原始單詞)。

在中文中,subword粒度Tokenization同樣是將文本分割成介于漢字和詞語之間的子詞作為token。例如:

我喜歡吃蘋果

假設經過BPE算法訓練后,生成的子詞詞典包含以下條目:

我, 喜, 歡, 吃, 蘋, 果, 我喜歡, 吃蘋果

子詞粒度Tokenized結果:

['我', '喜歡', '吃', '蘋果']

在這個例子中,“我喜歡吃蘋果”被切分為四個子詞“我”、“喜歡”、“吃”和“蘋果”,這些子詞均在詞典中出現。雖然沒有像英文子詞那樣將漢字進一步組合,但子詞Tokenization方法在生成詞典時已經考慮了高頻詞匯組合,如“我喜歡”和“吃蘋果”。這種切分方式在處理未知詞匯的同時,也保持了詞語級別的語義信息。

索引化

假設已有創建好的語料庫或詞匯表如下。

vocabulary = {
    '我': 0,
    '喜歡': 1,
    '吃': 2,
    '蘋果': 3,
    '。': 4
}

則可以查找序列中每個token在詞匯表中的索引。

indexed_tokens = [vocabulary[token] for token in token_sequence]
print(indexed_tokens)

輸出:[0, 1, 2, 3, 4]。

責任編輯:趙寧寧 來源: 小喵學AI
相關推薦

2022-03-24 08:51:48

Redis互聯網NoSQL

2023-09-08 08:20:46

ThreadLoca多線程工具

2023-09-15 12:00:01

API應用程序接口

2021-03-22 10:05:59

netstat命令Linux

2021-03-04 00:09:31

MySQL體系架構

2021-02-28 20:53:37

Cookie存儲瀏覽器

2020-09-03 06:35:44

Linux權限文件

2023-09-02 21:27:09

2023-03-06 21:29:41

mmap技術操作系統

2022-07-15 08:16:56

Stream函數式編程

2020-12-07 06:19:50

監控前端用戶

2021-07-08 10:08:03

DvaJS前端Dva

2023-05-22 13:27:17

2024-07-12 14:46:20

2023-10-16 08:16:31

Bean接口類型

2022-08-15 15:39:23

JavaScript面向對象數據

2023-04-03 15:04:00

RPCPHP語言

2023-08-24 16:50:45

2021-01-13 05:21:59

參數

2019-11-19 08:00:00

神經網絡AI人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 堆龙德庆县| 龙口市| 都江堰市| 马关县| 偃师市| 正阳县| 成安县| 攀枝花市| 康乐县| 安新县| 浦城县| 桃园市| 孝义市| 玉门市| 开远市| 远安县| 南投市| 台前县| 隆林| 江西省| 宝鸡市| 巴青县| 张家川| 奉贤区| 郧西县| 年辖:市辖区| 灌云县| 金溪县| 富顺县| 罗甸县| 贡觉县| 富源县| 六枝特区| 微博| 广水市| 岳池县| 壶关县| 年辖:市辖区| 民勤县| 海安县| 长沙市|