Bag of words 中使用的单词以及 keras tokenizer 中的频率
Words used in Bag of words along with frequency in keras tokenizer
我只是想知道,如何识别或获取单词列表以及它们被 keras tokenizer 考虑用于词袋的频率。
考虑下面的例子
from tensorflow.keras.preprocessing import text
my_list = [["a", "a", "a", "b","c"], ["b", "c","c", "b", "c" "a"]]
这里我选择的词汇大小为 2。一个将用于填充,另一个将用于 my_list 中频率最高的单词。
m_tokenizer = text.Tokenizer(num_words=2)
m_tokenizer.fit_on_texts(my_list)
使用分词器的词袋
bow = tokenizer.text_to_matrix(my_list)
鞠躬
array([[0., 1.],
[0., 1.]])
我可以很容易地得到所有单词的字典以及标记器内部使用的索引。
m_tokenizer.word_index
{'a': 1, 'c': 2, 'b': 3}
现在我想知道当我选择 num_words=2 时,分词器使用了哪些词以及它们在语料库中的频率来构建词袋?(显然第一个用于填充)
举例来说,这里使用的是 my_list 中的最大频率,它用于形成弓形。现在我可以使用一种方法来帮助我获取字典(或者可能是什么东西),它给我
{"a":4} # as count of a is 4 is my_list
您可以使用 m_tokenizer.word_counts
访问原文中找到的所有单词的计数器。它 returns OrderedDict([('a', 4), ('b', 3), ('c', 4)])
如果您想将字典限制在您定义的最大值 num_words 上,您可以自动执行:
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
您可以使用分词器的count
模式来生成所需的列表
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)
我只是想知道,如何识别或获取单词列表以及它们被 keras tokenizer 考虑用于词袋的频率。 考虑下面的例子
from tensorflow.keras.preprocessing import text
my_list = [["a", "a", "a", "b","c"], ["b", "c","c", "b", "c" "a"]]
这里我选择的词汇大小为 2。一个将用于填充,另一个将用于 my_list 中频率最高的单词。
m_tokenizer = text.Tokenizer(num_words=2)
m_tokenizer.fit_on_texts(my_list)
使用分词器的词袋
bow = tokenizer.text_to_matrix(my_list)
鞠躬
array([[0., 1.],
[0., 1.]])
我可以很容易地得到所有单词的字典以及标记器内部使用的索引。 m_tokenizer.word_index
{'a': 1, 'c': 2, 'b': 3}
现在我想知道当我选择 num_words=2 时,分词器使用了哪些词以及它们在语料库中的频率来构建词袋?(显然第一个用于填充) 举例来说,这里使用的是 my_list 中的最大频率,它用于形成弓形。现在我可以使用一种方法来帮助我获取字典(或者可能是什么东西),它给我
{"a":4} # as count of a is 4 is my_list
您可以使用 m_tokenizer.word_counts
访问原文中找到的所有单词的计数器。它 returns OrderedDict([('a', 4), ('b', 3), ('c', 4)])
如果您想将字典限制在您定义的最大值 num_words 上,您可以自动执行:
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
您可以使用分词器的count
模式来生成所需的列表
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)