Tensorflow 单词袋中使用的单词以及keras标记器中的频率

Tensorflow 单词袋中使用的单词以及keras标记器中的频率,tensorflow,keras,tokenize,Tensorflow,Keras,Tokenize,我只是想知道,如何识别或获得keras tokenizer为bag of words考虑的单词列表及其频率。 考虑下面的例子 from tensorflow.keras.preprocessing import text my_list = [["a", "a", "a", "b","c"], ["b", "c","c", "b", "c" "a"]] 在这里,我选择了一个2的vocab大小。一个用于填充,另一个用于my_列表中频率最高的单词 m_tokenizer = text.Tokeni

我只是想知道,如何识别或获得keras tokenizer为bag of words考虑的单词列表及其频率。 考虑下面的例子

from tensorflow.keras.preprocessing import text
my_list = [["a", "a", "a", "b","c"], ["b", "c","c", "b", "c" "a"]]
在这里,我选择了一个2的vocab大小。一个用于填充,另一个用于my_列表中频率最高的单词

m_tokenizer = text.Tokenizer(num_words=2)
m_tokenizer.fit_on_texts(my_list)
使用标记器的单词包

bow = tokenizer.text_to_matrix(my_list)
鞠躬

我可以很容易地获得所有单词的口述以及标记器内部使用的索引。 m_tokenizer.word_索引

{'a': 1, 'c': 2, 'b': 3}
现在我想知道当我选择num_words=2时,标记器使用哪些单词以及它们在语料库中的频率来构建单词包?(显然,第一个用于填充) 例如,这里使用的是my_列表中的最大频率,用于形成弓。现在,我可以找到一个方法来帮助我获取一个dict(或者可能是某种东西),它给了我

 {"a":4} # as count of a is 4 is my_list

您可以使用
m\u标记器访问原始文本中找到的所有单词的计数器。word\u计数
。它返回
OrderedDict([('a',4),('b',3),('c',4)])

如果要将词典限制在定义的max num_单词上,可以自动执行以下操作:

for i, (word, count) in enumerate(m_tokenizer.word_counts.items()):
    if i < m_tokenizer.num_words-1:
        print((word, count)) # print or store in an object
enumerate(m_tokenizer.word_counts.items())中的i(word,count)的

如果i
您可以使用标记器的
计数
模式生成所需列表

bow = m_tokenizer.texts_to_matrix(my_list, mode='count')
req_dict = {}
for key,value in m_tokenizer.word_index.items():
   if int(value) < num_words:
       req_dict[key] = int(bow[0][int(value)])
print(req_dict)
bow=m\u标记器。文本到矩阵(我的列表,模式='count')
req_dict={}
对于键,m_标记器.word_index.items()中的值:
如果int(value)
谢谢你,马可。没有任何内置函数或者我们需要外部计数器吗?计数器是由标记器计算的。使用m_tokenizer.word_counts,您可以访问所有语料库中的单词计数
bow = m_tokenizer.texts_to_matrix(my_list, mode='count')
req_dict = {}
for key,value in m_tokenizer.word_index.items():
   if int(value) < num_words:
       req_dict[key] = int(bow[0][int(value)])
print(req_dict)