tf.keras.preprocessing.text.Tokenizer函数

tf.keras.preprocessing.text.Tokenizer(
    num_words=None,
    filters='!"#$%&()*+,-./:;<=>?@[\\]^_{|}~\t\n',
    lower=True,
    split=' ',
    char_level=False,
    oov_token=None,
    document_count=0,
    **kwargs
)
</=>
</code></pre>
<p>Tokenizer函数用于创建一个分词器对象tokenizer。参数num_words用于表示应该保持的最大的单词数,如果小于输入数据所构成词汇表的不同的单词数,则一部分单词会被删掉。默认值为None,表示应该保持的单词数和词汇表的一致。</p>
<p>参数filters表示应该被过滤的单词或者字符。参数lower表示输入的大写字母是否应该转换成小写字母,默认为True。参数split表示用于分词的分隔符,默认情况下,文本变成以空格分隔的单词序列(单词可能包括 ' 字符)。</p>
<p>参数char_level表示是对一个单词进行分割还是对一个字符进行分割,默认为True,表示对一个字符进行分割。</p>
<p>参数oov_token如果给定,它将被添加到 word_index 并用于在 text_to_sequence 调用期间替换词汇表外的单词。</p>
<p>tokenizer对象具有以下常用属性和方法:</p>
<p><strong>1、fit_on_texts(texts)</strong>:根据文本来更新内部词汇表,如果texts为一个字符串,那么结果都将按照字符划分;如果texts为一个字符串列表,比如["hello world"]、["hello", "world"],则如果设置char_level=False,分词器按照单词划分。</p>
<p><strong>2、get_config()</strong>:获取分词器的配置,里面有word_index、index_word、word_docs、index_docs、document_count、word_counts等常用的信息。</p>
<p><strong>3、sequences_to_texts(sequences)</strong>:将数字序列转换成文本,形式为[[4], [3], [2], [2]]或者[[4, 3, 2, 2]]的列表或者numpy数组。</p>
<p><strong>4、texts_to_sequences(texts)</strong>:将文本转换成数字序列。</p>
<p><strong>5、word_index</strong>:一个将文本映射为数字的字典</p>
<p><strong>6、index_word</strong>:一个将数字映射为文本的字典</p>
<pre><code>根据字符划分
创建一个分词器
>>> tokenizer = tf.keras.preprocessing.text.Tokenizer()
>>> text = "hello tensorflow"
根据文本更新内部分词器信息
>>> tokenizer.fit_on_texts(text)
获取配置信息
>>> config = tokenizer.get_config()
>>> config
{
'num_words': None,
'filters': '!"#$%&()*+,-./:;<=>?@[\\]^_{|}~\t\n',
'lower': True,
'split': ' ',
'char_level': False,
'oov_token': None,
'document_count': 16,
'word_counts': '{"h": 1, "e": 2, "l": 3, "o": 3, "t": 1, "n": 1, "s": 1, "r": 1, "f": 1, "w": 1}',
'word_docs': '{"h": 1, "e": 2, "l": 3, "o": 3, "t": 1, "n": 1, "s": 1, "r": 1, "f": 1, "w": 1}',
'index_docs': '{"4": 1, "3": 2, "1": 3, "2": 3, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1}',
'index_word': '{"1": "l", "2": "o", "3": "e", "4": "h", "5": "t", "6": "n", "7": "s", "8": "r", "9": "f", "10": "w"}',
'word_index': '{"l": 1, "o": 2, "e": 3, "h": 4, "t": 5, "n": 6, "s": 7, "r": 8, "f": 9, "w": 10}'
}
&#x83B7;&#x53D6;word_index&#x5B57;&#x5178;
>>> tokenizer.word_index
'{"l": 1, "o": 2, "e": 3, "h": 4, "t": 5, "n": 6, "s": 7, "r": 8, "f": 9, "w": 10}'
&#x6709;&#x65F6;&#x9700;&#x8981;&#x83B7;&#x53D6;&#x8BCD;&#x6C47;&#x8868;&#x7684;vocab_size
>>> vocab_size = len(tokenizer.word_index)
>>> vacab_size
10
&#x6587;&#x672C;&#x8F6C;&#x6362;&#x6210;&#x5E8F;&#x5217;
>>> seq = tokenizer.texts_to_sequences("hello")
>>> seq
[[4], [3], [1], [1], [2]]
&#x5E8F;&#x5217;&#x8F6C;&#x6362;&#x6210;&#x6587;&#x672C;&#xFF0C;&#x4E09;&#x79CD;&#x60C5;&#x51B5;
>>> texts = tokenizer.sequences_to_texts([[4],[3],[1],[1],[2]])
>>> texts
['h', 'e', 'l', 'l', 'o']
>>> texts = tokenizer.sequences_to_texts([[4, 3, 1, 1, 2]])
>>> texts
['h e l l o']
>>> texts = tokenizer.sequences_to_texts(np.array([[4, 3, 1, 1, 2]]))
>>> texts
['h e l l o']

&#x6839;&#x636E;&#x5355;&#x8BCD;&#x5212;&#x5206;
>>> tokenizer = tf.keras.preprocessing.text.Tokenizer()
>>> texts = "hello tensorflow"
>>> text_list = tf.keras.preprocessing.text.text_to_word_sequence(texts)
>>> text_list
['hello', 'tensorflow']
>>> tokenizer.fit_on_texts(text_list)
>>> tokenizer.texts_to_sequences(text_list)
[[1], [2]]
>>> texts = "hello tensorflow"
>>> tokenizer.texts_to_sequences([texts])
[[1, 2]]
>>> tokenizer.word_index
{'hello': 1, 'tensorflow': 2}
&#x8BBE;&#x7F6E;&#x53C2;&#x6570;oov_token
>>> tokenizer = tf.keras.preprocessing.text.Tokenizer(oov_token="mask")
>>> tokenizer.fit_on_texts(text_list)
>>> tokenizer.sequences_to_texts([[1, 2]])
['mask hello']
>>> tokenizer.word_index
{'mask': 1, 'hello': 2, 'tensorflow': 3}
</=>

Original: https://blog.csdn.net/weixin_49346755/article/details/124558309
Author: 不负韶华ღ
Title: tf.keras.preprocessing.text.Tokenizer函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/514356/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球