2024-06-15|閱讀時間 ‧ 約 24 分鐘

C004|什麼是符元化文本?

在學習大語言模型的技術細節時,


弄清楚「輸入文本 Input Text」與「符元化文本 Tokenized Text」之間的差異會很方便[1]。


舉個具體的例子:


輸入文本:Hello, 你好. Obsidian is great!


符元化文本:['Hello', ',', '你好', '.', 'Obsidian', 'is', 'great', '!']


可以看到文本被拆成一塊一塊的,


接著每一塊送進去編碼器,


成為「嵌入向量 Embedding Vector」,


那麼深度學習就可以發揮其作用了!


而怎麼去將一個輸入文本轉為符元化文本呢?


其實可以用「正則表達式 Regular Expression」就能做到簡單的符元化效果。

import re
text = "Hello, 你好. Obsidian is great!"
result = re.split(r'([,.:;?_!"()\']|--|\s)', text)
result = [item.strip() for item in result if item.strip()]
print(result)


第一行的`import re`,


就是呼叫Python中操作正則表達式的模組 re [2]。


第三行的指令`result = re.split(r'([,.:;?_!"()\']|--|\s)', text)`,


是根據指定的標點符號(逗號、句點、冒號、分號、問號、驚嘆號、引號、圓括號)、


兩個短橫線或任何空白字符來分割字串,


並且將這些分隔符也包含在結果中。


這樣可以保留文本中的標點符號和空白字符,方便後續處理。


第四行的指令`result = [item.strip() for item in result if item.strip()]` ,


則是去除每個元素兩端的空白字符,並且只保留非空的元素,


最後得到的效果就是['Hello', ',', '你好', '.', 'Obsidian', 'is', 'great', '!'] 。


原則上,不同的文本,


會需要不同的「符元化方案 Tokenization Scheme」,


來將輸入文本轉為符元化文本,


以更加符合目前有的資料與任務。


Reference

[1] Section 2.2 Tokenizing Text, https://www.manning.com/books/build-a-large-language-model-from-scratch

[2] https://docs.python.org/3/library/re.html

分享至
成為作者繼續創作的動力吧!
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

王啟樺的沙龍 的其他內容

你可能也想看

發表回應

成為會員 後即可發表留言
© 2024 vocus All rights reserved.