one-hot編碼小例子

一、例子:將詞匯列表{"周杰倫","陳奕迅","王力宏","李宗盛","吳亦凡","鹿晗"}進(jìn)行onehot編碼并保存:

1、編寫腳本:vim one-hot-test.py

# 導(dǎo)入用于對象保存和加載的包
from sklearn.externals import joblib
# 導(dǎo)入keras中的詞匯映射器Tokenizer
from keras.preprocessing.text import Tokenizer

# 初始化一個詞匯表
vocab = {"周杰倫","陳奕迅","王力宏","李宗盛","吳亦凡","鹿晗"}

# 實例化一個詞匯映射器
t = Tokenizer(num_words=None, char_level=False)

# 在映射器上你和現(xiàn)有的詞匯表
t.fit_on_texts(vocab)

# 循環(huán)遍歷詞匯表,將每一個單詞映射為one-hot張量表示
for token in vocab:
    # 初始化一個全零向量
    zero_list = [0] * len(vocab)
    # 使用映射器轉(zhuǎn)化文本數(shù)據(jù),每個詞匯對應(yīng)從1開始
    token_index = t.texts_to_sequences([token])[0][0] -1
    # 將對應(yīng)的位置復(fù)制為1
    zero_list[token_index] = 1
    print(token, "的one-hot編碼為:", zero_list)

# 將擬合好的詞匯映射器保存起來
tokenizer_path = "./Tokenizer"
joblib.dump(t, tokenizer_path)

2、python one-hot-test.py 命令執(zhí)行腳本:

python one-hot-test.py

3、運行結(jié)果:

? untitled2 python one-hot-test.py
周杰倫 的one-hot編碼為: [1, 0, 0, 0, 0, 0]
王力宏 的one-hot編碼為: [0, 1, 0, 0, 0, 0]
鹿晗 的one-hot編碼為: [0, 0, 1, 0, 0, 0]
吳亦凡 的one-hot編碼為: [0, 0, 0, 1, 0, 0]
陳奕迅 的one-hot編碼為: [0, 0, 0, 0, 1, 0]
李宗盛 的one-hot編碼為: [0, 0, 0, 0, 0, 1]

二、將上一步的保存結(jié)果加載應(yīng)用:

1、編寫腳本:vim demo2.py

# 導(dǎo)入用于對象保存于加載的包
from sklearn.externals import joblib
# 將之前已經(jīng)訓(xùn)練好的詞匯映射器加載進(jìn)來
t = joblib.load("./Tokenizer")

token = "李宗盛"
# 從詞匯映射器中得到李宗盛的index
token_index = t.texts_to_sequences([token])[0][0] - 1
# 初始化一個全零的向量
zero_list = [0] * 6
zero_list[token_index] = 1
print(token, "的one-hot編碼為:", zero_list)

2、輸出結(jié)果:

李宗盛 的one-hot編碼為: [0, 0, 0, 0, 0, 1]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容