首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拟合后从tf.Tokenizer中获取单词数

拟合后从tf.Tokenizer中获取单词数
EN

Stack Overflow用户
提问于 2021-04-18 16:25:12
回答 1查看 759关注 0票数 1

我最初尝试制作一个RNN,它可以预测莎士比亚的文本,我成功地使用了字符级编码。但是当我切换到字级编码时,我遇到了很多问题。具体来说,我很难获得字符总数(我被告知只有dataset_size = tokenizer.document_count,但这只是返回1),以便在拟合模型时设置steps_per_epoch = dataset_size // batch_size (现在,char和字级编码返回1)。我尝试设置sum(tokenizer.word_counts.values()) = dataset_size,但是当我拟合模型时,在第一个时代结束之前,我就会得到这个错误:

警告:tensorflow:您的输入没有数据;中断培训。确保您的数据集或生成器至少可以生成steps_per_epoch *历元批次(在本例中为32批)。在构建数据集时,可能需要使用repeat()函数。

因此,我假设我的代码相信我拥有比实际更多的训练集。或者可能是因为我在新的M1芯片上编程,它没有TF的生产版本?所以,真的,我只是不知道如何在这篇文章中得到确切的单词数。

下面是代码:

代码语言:javascript
复制
import tensorflow as tf
from tensorflow import keras
import numpy as np
import re 

shakespeare_url = "https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt"
filepath = keras.utils.get_file("shakespeare.txt", shakespeare_url)

with open(filepath) as f:
    shakespeare_text = f.read()

tokenizer = keras.preprocessing.text.Tokenizer(char_level=False) #Set to word-level encoding
tokenizer.fit_on_texts([shakespeare_text])

max_id = len(tokenizer.word_index) # number of distinct characters
#dataset_size = sum(tokenizer.word_counts.values()) #Returns 204089
dataset_size = tokenizer.document_count # Returns 1

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-18 16:50:18

在输入文本中找到的所有单词的计数存储在OrderedDict tokenizer.word_counts中。看起来像是

代码语言:javascript
复制
OrderedDict([('first', 362), ('citizen', 100), ('before', 195), ('we', 862), ('proceed', 21), ('any', 189), ('further', 36), ('hear', 230), ...])

因此,要获得单词计数号,您需要

代码语言:javascript
复制
sum([x for _,x in tokenizer.word_counts.items()])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67150848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档