Keras NLP——Tokenizer

一.Python代碼

#!/usr/bin/env python3
# encoding: utf-8
'''
@file: keras_preprocess.py
@time: 2020/6/25 0025 10:17
@author: Jack
@contact: [email protected]
'''

from keras.preprocessing.text import Tokenizer

## 輸入文檔
docs = ['Well done!',
        'Good work',
        'Great effort',
        'nice work',
        'Excellent!']
## 創建tokenizer
t = Tokenizer()
t.fit_on_texts(docs)
print(t.word_counts)
print(t.document_count)
print(t.word_index)
print(t.word_docs)

## 編碼文檔
encoded_docs = t.texts_to_matrix(docs, mode='freq')
print(encoded_docs)

二.代碼說明

1.分詞

使用文本的第一步就是將其拆分爲單詞。單詞稱爲標記(token),將文本拆分爲標記的過程稱爲標記化(tokenization),而標記化用到的模型或工具稱爲tokenizer。Keras提供了Tokenizer類,用於爲深度學習文本文檔的預處理。首先引入並實例化Tokenizer,接着使用這個Tokenizer對文本處理或者對文本進行編碼。

2.Tokenizer屬性

Tokenizer使用fit_on_texts()後,包含4個屬性:
1)word_counts:每個詞在所有文檔中出現的次數
2)word docs:每個詞出現的文檔數量
3)word_index:所有word對於的ID編號,從1開始
4)document_count:處理的文檔數

3.文檔向量化

一旦Tokenizer在訓練數據集上fit之後,它就可用於編碼訓練或測試數據集中的文檔了。Tokenizer上的text_to_matrix()函數用於爲每個輸入文檔的向量化,文檔向量的長度是詞彙表的總大小。此函數提供了一套標準的詞袋模型文本編碼方案,可以通過函數的參數mode設定其編碼方案。可用的模式包括:

  • binary(默認值):文檔中是否有該詞
  • count:文檔中每個單詞的計數
  • tfidf:文檔中每個單詞的TF-IDF評分
  • freq:每個單詞的頻率,作爲每個文檔中單詞的比例

三.結果輸出

OrderedDict([('well', 1), ('done', 1), ('good', 1), ('work', 2), ('great', 1), ('effort', 1), ('nice', 1), ('excellent', 1)])
5
{'work': 1, 'well': 2, 'done': 3, 'good': 4, 'great': 5, 'effort': 6, 'nice': 7, 'excellent': 8}
defaultdict(<class 'int'>, {'well': 1, 'done': 1, 'work': 2, 'good': 1, 'great': 1, 'effort': 1, 'nice': 1, 'excellent': 1})
[[0.  0.  0.5 0.5 0.  0.  0.  0.  0. ]
 [0.  0.5 0.  0.  0.5 0.  0.  0.  0. ]
 [0.  0.  0.  0.  0.  0.5 0.5 0.  0. ]
 [0.  0.5 0.  0.  0.  0.  0.  0.5 0. ]
 [0.  0.  0.  0.  0.  0.  0.  0.  1. ]]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章