One-hot編碼在機器學習中可以用來表示位元組或是向量,這樣的位元組只有其中一項可以是1,所以被稱為One-hot中文為獨熱,如此可以幫助現實資料轉換成數字替代,相較於其他方式比較數字大笑,這種方法更適合用在資料是以距離來劃分的。One-hot用在離散型資料亦或者是小數可以省略時(類別或計數的資料)會相對方便,因為One-hot編碼沒有順序或是距離的概念。
ASCII的全名是American Standard Code for Information Interchange(美國資訊交換標準代碼),最初總共有七個位元,可以表達128個字元。而之後因為歐洲國家的語言很多並不是使用純英文表示,所以才多加了一個位元,
使ASCII code可以表達256個字元。在我們一般撰寫程式碼時,也會用到ASCII code轉換。
處理英文文本不會有問題,我們仍然可以對於文本做出一些前處理,這樣可以減少編碼種類,也可以刪除標點符號、數字或是其他不重要的字元,但要這些處理可能會影響模型訓練的表現,但影響程度取決於不同的任務類型。
import numpy as np
import torch
先import需要用到的numpy和torch
載入文檔命名為text
words = text.split('\n')
line = words[100]
line
將每列的文字存入串列words取出第100列
t = torch.zeros(len(line), 128) #(文字字元數,ASCII code字元數)
創建一個張量初始化為零
punctuation = '.,;:"!?”“_-' #定義標點符號
list = input_str.lower().replace('\n',' ').split() #以空白進行分割
list = [word.strip(punctuation) for word in list]
return list
此時會將一句話切割成一個個的單字
for i, word in enumerate(words_ line):
index = wordindex[word] #one-hot編碼
words [i][index] = 1
print('{:2} {:4} {}'.format(i, index, word))
print(words.shape)
輸出結果
torch.Size([句子單字數量,相異單字數])