AI說書 - 從0開始 - 104 | 資料清洗一次教

更新 發佈閱讀 7 分鐘

我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。


延續 AI說書 - 從0開始 - 103 所載入的資料集,現在要來進行資料前置處理,首先載入需要的依賴:

import pickle
from pickle import dump


接著定義一個載入文件的函數:

# load doc into memory
def load_doc(filename):
# open the file as read only
file = open(filename, mode = 'rt', encoding = 'utf-8')

# read all text
text = file.read()

# close the file
file.close()
return text


接著定義一個將文本分割為句子的函數:

# split a loaded document into sentences
def to_sentences(doc):
return doc.strip().split('\n')


再定義一個檢索句子長度的函數:

# shortest and longest sentence lengths
def sentence_lengths(sentences):
lengths = [len(s.split()) for s in sentences]
return min(lengths), max(lengths)


導入的句子必須進行清理,以避免訓練無用和噪音的標記,這些行將被正規化,在空白處進行標記化,並轉換為小寫,每個標記中的標點符號會被移除,不可顯示的字符會被去除,包含數字的標記會被排除,清理後的行將被存儲為字符串。

以下程式運行清理功能並返回清理後的附加字符串:

import re
import string
import unicodedata

def clean_lines(lines):
cleaned = list()

# prepare regex for char filtering
re_print = re.compile('[^%s]' % re.escape(string.printable))

# prepare translation table for removing punctuation
table = str.maketrans('', '', string.punctuation)

for line in lines:
# normalize unicode characters
line = unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
line = line.decode('UTF-8')

# tokenize on white space
line = line.split()

# convert to lower case
line = [word.lower() for word in line]

# remove punctuation from each token
line = [word.translate(table) for word in line]

# remove non-printable chars from each token
line = [re_print.sub('', w) for w in line]

# remove tokens with numbers in them
line = [word for word in line if word.isalpha()]

# store as string
cleaned.append(' '.join(line))
return cleaned


註解說明為:

  1. re_print = re.compile('[^%s]' % re.escape(string.printable))
  • re:是 Python 中的正則表達式模組(re module)。
  • re.compile():這個函數用來編譯一個正則表達式模式,返回一個正則表達式對象,該對象可以用來匹配字符。
  • string.printable:這是Python標準庫string模組中的一個字符串,它包含所有的可打印字符(包括字母、數字、標點符號和空白字符)。
  • re.escape():這個函數會轉譯字符串中的所有非字母數字字符,這樣它們就可以在正則表達式中被安全地使用。
  • '[^%s]':這是一個正則表達式模式,表示匹配所有不在string.printable中的字符。[^...]是在正則表達式中表示“否定字符集”,即匹配任何不在方括號中的字符。


  1. table = str.maketrans('', '', string.punctuation)
  • str.maketrans(): 這是一個用於創建字符映射表的內建函數,這個映射表可以用來替換或刪除字符串中的字符。
  • str.maketrans()可以接受三個參數:

第一個參數是一個字符串,其中的每個字符將被替換為第二個參數中對應位置的字符。

第二個參數是一個字符串,包含將要替換第一個參數中字符的新字符。

第三個參數是一個字符串,包含要被刪除的字符。

  • 在這段代碼中,第一個參數和第二個參數都為空字符串,表示不進行替換操作,第三個參數為string.punctuation,它是一個包含所有標點符號的字符串,因此,str.maketrans('', '', string.punctuation)創建了一個映射表,用於刪除所有標點符號。


  1. line = unicodedata.normalize('NFD', line).encode('ascii', 'ignore')
  • unicodedata.normalize('NFD', line)unicodedata 是 Python 標準庫中的一個模組,用於處理Unicode字符數據,normalizeunicodedata 模組中的一個函數,用於將Unicode字符串正規化。'NFD' 是正規化形式之一,表示 "Normalization Form D"(分解正規化形式),將字符分解為基字符和組合字符。例如,將字符 "é" 分解為 "e" 和重音符。
  • .encode('ascii', 'ignore').encode('ascii', 'ignore') 將正規化後的字符串編碼為ASCII,並忽略所有非ASCII字符。'ascii' 表示將字符串轉換為ASCII編碼。'ignore' 是錯誤處理方案,表示忽略無法編碼的字符。


留言
avatar-img
Learn AI 不 BI
247會員
1.2K內容數
這裡將提供: AI、Machine Learning、Deep Learning、Reinforcement Learning、Probabilistic Graphical Model的讀書筆記與演算法介紹,一起在未來AI的世界擁抱AI技術,不BI。
Learn AI 不 BI的其他內容
2024/08/10
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 99 到 AI說書 - 從0開始 - 121,我們完成書籍:Transformers for Natural Language Proc
2024/08/10
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 99 到 AI說書 - 從0開始 - 121,我們完成書籍:Transformers for Natural Language Proc
2024/08/09
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們在 AI說書 - 從0開始 - 120 中使用 Google Gemini 將一段英文翻譯成法文,那我不是法文專業者,怎麼知道翻譯的好不好呢? 我可以使用 B
Thumbnail
2024/08/09
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們在 AI說書 - 從0開始 - 120 中使用 Google Gemini 將一段英文翻譯成法文,那我不是法文專業者,怎麼知道翻譯的好不好呢? 我可以使用 B
Thumbnail
2024/08/09
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 現在我們來看看 Google Gemini (https://gemini.google.com/ to start a dialog) 的能力: 回答如下:
Thumbnail
2024/08/09
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 現在我們來看看 Google Gemini (https://gemini.google.com/ to start a dialog) 的能力: 回答如下:
Thumbnail
看更多
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 總結一下目前有的素材: AI說書 - 從0開始 - 103:資料集載入 AI說書 - 從0開始 - 104:定義資料清洗的函數 AI說書 - 從0開始 - 105
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 總結一下目前有的素材: AI說書 - 從0開始 - 103:資料集載入 AI說書 - 從0開始 - 104:定義資料清洗的函數 AI說書 - 從0開始 - 105
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 先做個總回顧: Transformer 架構總覽:AI說書 - 從0開始 - 39 Attention 意圖說明:AI說書 - 從0開始 - 40 Transfo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 先做個總回顧: Transformer 架構總覽:AI說書 - 從0開始 - 39 Attention 意圖說明:AI說書 - 從0開始 - 40 Transfo
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經有資料集在 AI說書 - 從0開始 - 103 ,必要的清理函數在 AI說書 - 從0開始 - 104 ,現在把它們湊在一起,如下: # load Eng
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經有資料集在 AI說書 - 從0開始 - 103 ,必要的清理函數在 AI說書 - 從0開始 - 104 ,現在把它們湊在一起,如下: # load Eng
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 目前我們已經完成: Single-Head Attention 數學說明:AI說書 - 從0開始 - 52 Multi-Head Attention 數學說明:AI
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News