NLP-什麼是one hot?

語言: CN / TW / HK

本文已參與「新人創作禮」活動,一起開啟掘金創作之路。


在文字中,如果需要對其進行相似度計算或者其他計算時,文字是無法直接進行計算的,所以就需要對文字進行量化處理,也就是進行數字編碼才能對文字進行計算,而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程式碼實現

```python from keras.preprocessing.text import Tokenizer corpus=[ '明天 我們 去 看 電影', '明天 我們 去 爬山', '明天 我們 去 運動', '我 喜歡 打 籃球', '我 不 喜歡 看 電視' ]

tokenizer=Tokenizer() tokenizer.fit_on_texts(corpus) sequences=tokenizer.texts_to_matrix(corpus) print(sequences[:,1:]) ```

【引用】 [1] 百度百科