美文网首页
NLP-词向量:one hot

NLP-词向量:one hot

作者: Huoyo | 来源:发表于2019-08-21 17:46 被阅读0次

    在文本中,如果需要对其进行相似度计算或者其他计算时,文字是无法直接进行计算的,所以就需要对文本进行量化处理,也就是进行数字编码才能对文本进行计算,而one hot就是其中一种出现比较早也比较简单的编码方式。

    一、one-hot编码

    one-hot编码被称为【独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制】^{[1]}。 简单的来说就是用0和1的编码方式来表示需要处理的一些信息,以达到该信息向量化的一种手段。

    • 有如下两组特征属性:
    • 性别:["男","女"]
    • 爱好:["篮球","足球","乒乓球"]

    男、女的序号分别为0、1
    篮球、足球、乒乓球的序号分别为0、1、2

    性别有两个属性,那么可以两位的特征向量来表示男性和女生,分别为

    男=(1,0),女=(0,1),

    爱好有三个属性,那么可以三位的特征向量来表示篮球、足球和乒乓球,分别为

    篮球=(1,0,0),足球=(0,1,0),乒乓球=(0,0,1)

    二、文本的one-hot表示

    假设有如下语料

    明天 我们 去 看 电影
    明天 我们 去 爬山
    明天 我们 去 运动
    我 喜欢 打 篮球
    我 不 喜欢 看 电视
    

    上述五句话中一共涉及13个词,分别为

    [明天 我们 去 看 电影 爬山 运动 我 喜欢 打 篮球 不 电视]

    可以用13位的向量表示每一句话,分别如下

    [1. 1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
    [1. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
    [1. 1. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
    [0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 1. 0. 0.]
    [0. 0. 0. 1. 1. 1. 0. 0. 0. 0. 0. 1. 1.]

    三、基于keras代码实现

    from keras.preprocessing.text import Tokenizer
    corpus=[
    '明天 我们 去 看 电影',
    '明天 我们 去 爬山',
    '明天 我们 去 运动',
    '我 喜欢 打 篮球',
    '我 不 喜欢 看 电视'
    ]
    
    tokenizer=Tokenizer()
    tokenizer.fit_on_texts(corpus)
    sequences=tokenizer.texts_to_matrix(corpus)
    print(sequences[:,1:])
    

    【引用】
    [1] 百度百科

    相关文章

      网友评论

          本文标题:NLP-词向量:one hot

          本文链接:https://www.haomeiwen.com/subject/vjdrrctx.html