当执行这个代码时,我得到11937,但我不应该得到10.000吗? 如果我不应该,我有几个后续问题:

  1. num_words有什么意义?
  2. 我得到的11937号代表什么?
  3. 我如何限制我的词汇量?
MAX_WORDS_COUNT = 10000                 
WIN_SIZE   = 1000                       
WIN_HOP    = 100                        

tokenizer = Tokenizer(num_words=MAX_WORDS_COUNT, filters='!"#$%&()*+,-–—./…:;<=>?@[\\]^_`{|}~«»\t\n\xa0\ufeff',
                      lower=True, split=' ', oov_token='unkown_word', char_level=False, )

tokenizer.fit_on_texts(x_data)

items = list(tokenizer.word_index.items())
print(len(items))

我期望输出10.000,因为我相信num_words限制了词汇表的大小.

如果需要的话,我可以从我的colab笔记本中提供完整的代码.

推荐答案

当您在Tokenizer构造函数中设置num_words = MAX_WORDS_REQ时,意味着Tokenizer将只保留词汇表中MAX_WORDS_REQ最频繁的单词.然而,实际词汇表大小可以小于或大于MAX_WORDS_REQ,这取决于输入数据中存在的唯一单词(x_data).

关于您的具体问题:

  1. num_words的目的是根据词频限制词汇表中保留的最大字数.它通过关注最频繁的单词来帮助减少输入数据的维度.

  2. 输出的数字11937代表输入数据中唯一单词的总数(x_data).这意味着你的文本语料库中有11937个不同的单词.

  3. 要将词汇表的大小限制在特定的数字,可以在Tokenizer构造函数中使用num_words参数,就像使用MAX_WORDS_REQ = 10000时所做的那样.但是,如果输入数据中唯一单词的实际数量小于MAX_WORDS_REQ,词汇表大小将等于唯一单词的数量.

如果要将词汇表的大小严格限制为MAX_WORDS_REQ(例如,10000),您可以修改代码如下:

MAX_WORDS_COUNT = 10000
WIN_SIZE = 1000
WIN_HOP = 100

tokenizer = Tokenizer(num_words=MAX_WORDS_COUNT, filters='!"#$%&()*+,-–—./…:;<=>?@[\\]^_`{|}~«»\t\n\xa0\ufeff',
                  lower=True, split=' ', oov_token='unkown_word', char_level=False)

tokenizer.fit_on_texts(x_data)

top_words = dict(list(tokenizer.word_index.items())[:MAX_WORDS_COUNT])
print(len(top_words))

在这个修改后的代码中,在输入数据上拟合标记器之后,我们使用list(tokenizer. word_index. items())[:MAX_WORDS_REQ]从word_index字典中提取顶部MAX_WORDS_REQ单词.这确保了我们的词汇表中最多有MAX_WORDS_EXAMPLE单词.

Print(len(Top_Words))的输出现在将被限制为MAX_WORDS_COUNT(在本例中为10000)或更少,具体取决于输入数据中唯一字的实际数量.

我希望这能澄清你的问题!

Python相关问答推荐

更改matplotlib彩色条的字体并勾选标签?

Telethon加入私有频道

从groupby执行计算后创建新的子框架

pyscript中的压痕问题

如何在WSL2中更新Python到最新版本(3.12.2)?

如何将多进程池声明为变量并将其导入到另一个Python文件

海上重叠直方图

部分视图的DataFrame

需要帮助重新调整python fill_between与数据点

寻找Regex模式返回与我当前函数类似的结果

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

将链中的矩阵乘法应用于多组值

从嵌套极轴列的列表中删除元素

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

如何在Pandas中用迭代器求一个序列的平均值?

将像素信息写入文件并读取该文件

将鼠标悬停在海运`pairplot`的批注/高亮显示上

如何使用count()获取特定日期之间的项目

跨两个数据帧收集非索引列上的公共组