當前位置:
首頁 > 最新 > 如何科學地使用keras的Tokenizer進行文本預處理

如何科學地使用keras的Tokenizer進行文本預處理

如何科學地使用keras的Tokenizer進行文本預處理

緣起

之前提到用keras的Tokenizer進行文本預處理,序列化,向量化等,然後進入一個simple的LSTM模型中跑。但是發現用Tokenizer對象自帶的 得到的向量用LSTM訓練不出理想的結果,反倒是換成Dense以後效果更好。後來實驗了一下發現是對這個向量化函數的理解出現了偏差。鑒於網上沒找到相關的講解,就自己實驗了一下,並在這裡做一個總結。


關於Tokenizer

原本以為直接用 方法就可以直接把texts中的每個text,也就是每個string都轉成LSTM輸入所需要的向量,於是直接輸入進去LSTM了。其實稍微一想就可以發現,LSTM要求的是每個string都是一個(num of word , length of word vector) 的矩陣,而這個函數出來的則是一個一維的向量,顯然是有問題的。當時誤判是因為沒有仔細看,看到to matrix 並且得到了0-1的binary的matrix就想當然地當做輸入了。那麼下面就來看一下這個matrix究竟是什麼:

可以看出,實際上這是一個binary的向量,如果dictionary的下標為i 的那個詞在這個string中出現了,那麼就給一個1,否則給0。當然,可以通過mode參數,

進行設置,比如改成counts或者freq:

Tokenizer實際上只是生成了一個字典,並且統計了詞頻等信息,並沒有把文本轉成需要的向量表示。

如果Tokenizer加上這個參數,那麼生成的就是列數為這個參數的matrix,其中包含單詞表中most frequent的單詞的binary或者count或者詞頻。


所以科學使用Tokenizer的方法是,首先用Tokenizer的 方法學習出文本的字典,然後 就是對應的單詞和數字的映射關係dict,通過這個dict可以將每個string的每個詞轉成數字,可以用,這是我們需要的,然後通過padding的方法補成同樣長度,在用keras中自帶的embedding層進行一個向量化,並輸入到LSTM中。

2018年03月05日16:11:27

大地春又回,長空裂驚雷。萬物生欲動,無為自有為。 —— 詩人,余世存


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 柯壯的小屋 的精彩文章:

GAN相關:PAN/感知對抗網路

TAG:柯壯的小屋 |