one-hot编码小例子

一、例子:将词汇列表{"周杰伦","陈奕迅","王力宏","李宗盛","吴亦凡","鹿晗"}进行onehot编码并保存:

1、编写脚本:vim one-hot-test.py

# 导入用于对象保存和加载的包
from sklearn.externals import joblib
# 导入keras中的词汇映射器Tokenizer
from keras.preprocessing.text import Tokenizer

# 初始化一个词汇表
vocab = {"周杰伦","陈奕迅","王力宏","李宗盛","吴亦凡","鹿晗"}

# 实例化一个词汇映射器
t = Tokenizer(num_words=None, char_level=False)

# 在映射器上你和现有的词汇表
t.fit_on_texts(vocab)

# 循环遍历词汇表,将每一个单词映射为one-hot张量表示
for token in vocab:
    # 初始化一个全零向量
    zero_list = [0] * len(vocab)
    # 使用映射器转化文本数据,每个词汇对应从1开始
    token_index = t.texts_to_sequences([token])[0][0] -1
    # 将对应的位置复制为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 命令执行脚本:

python one-hot-test.py

3、运行结果:

➜ 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]

二、将上一步的保存结果加载应用:

1、编写脚本:vim demo2.py

# 导入用于对象保存于加载的包
from sklearn.externals import joblib
# 将之前已经训练好的词汇映射器加载进来
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、输出结果:

李宗盛 的one-hot编码为: [0, 0, 0, 0, 0, 1]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容