You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中Tokenizer的fit_on_texts作用、用法及与fit_on_sequences的区别

Keras Tokenizer类相关方法答疑

1. fit_on_texts方法的核心作用

这个方法是Tokenizer做文本预处理的核心初始化方法,作用是基于输入的原始文本语料完成词汇表的构建:

  • 统计所有输入文本中每个词汇的出现频次
  • 为每个唯一词汇分配对应的唯一整数ID,默认按照频次从高到低排序分配
  • 自动生成Tokenizer实例的几个核心属性:word_index(词到ID的映射字典)、index_word(ID到词的映射字典)、word_counts(每个词的出现频次统计)、document_count(输入的文本总条数)

2. fit_on_texts的正确使用方式

基础使用示例

from tensorflow.keras.preprocessing.text import Tokenizer

# 准备原始文本数据集,每个元素是一条文本字符串
train_texts = [
    "我爱深度学习",
    "深度学习很有趣",
    "Keras框架很好用",
    "我常用Keras做文本分类任务"
]

# 初始化Tokenizer,num_words参数指定保留的最高频词汇数量,这里设为100
tokenizer = Tokenizer(num_words=100, oov_token="<OOV>")

# 调用fit_on_texts方法完成词汇表构建
tokenizer.fit_on_texts(train_texts)

# 后续可以用训练好的tokenizer做文本转序列操作
sequences = tokenizer.texts_to_sequences(train_texts)

关键注意事项

  • 必须仅在训练集上调用该方法,禁止把测试集/验证集数据加入fit_on_texts的输入,否则会造成数据泄露,影响模型泛化能力
  • oov_token参数建议显式指定,用来表示词汇表中没有的生僻词,否则遇到未登录词会直接被丢弃
  • num_words不会改变word_index的完整映射,只会在后续texts_to_sequences、序列转矩阵等操作时限制仅使用频次最高的前N个词

3. 与fit_on_sequences方法的核心差异

两者的定位完全不同,核心区别有三点:

  • 输入类型不同:fit_on_texts的输入是原始字符串组成的列表;fit_on_sequences的输入是已经完成词到ID转换的整数序列组成的列表
  • 使用场景不同:fit_on_texts是预处理第一步调用,用于从0构建词汇映射关系;fit_on_sequences是在已经有现成词表的场景下使用,比如你已经有了预定义的词到ID的映射,现在要基于分批次的序列数据更新频次统计,不需要再处理原始文本
  • 生成属性不同:fit_on_texts会生成完整的词-ID双向映射、词频统计等所有属性;fit_on_sequences仅能更新ID对应的频次统计,不会生成词-ID映射关系,因为它的输入只有整数ID,不知道ID对应的原始文本内容

内容的提问来源于stack exchange,提问作者kiriloff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:48:04