tokenizer.texts_to_sequences Keras Tokenizer 给出几乎所有的零

新手上路,请多包涵

我正在努力创建一个文本分类代码,但我在使用分词器对文档进行编码时遇到问题。

  1. 我首先在我的文档中安装了一个分词器,如下所示:
 vocabulary_size = 20000
tokenizer = Tokenizer(num_words= vocabulary_size, filters='')
tokenizer.fit_on_texts(df['data'])

2)然后我想检查我的数据是否正确安装所以我转换成序列如下:

 sequences = tokenizer.texts_to_sequences(df['data'])
data = pad_sequences(sequences, maxlen= num_words)
print(data)

这给了我很好的输出。即将单词编码成数字

[[ 9628  1743    29 ...   161    52   250]
 [14948     1    70 ...    31   108    78]
 [ 2207  1071   155 ... 37607 37608   215]
 ...
 [  145    74   947 ...     1    76    21]
 [   95 11045  1244 ...   693   693   144]
 [   11   133    61 ...    87    57    24]]

现在,我想使用相同的方法将文本转换为序列。像这样:

 sequences = tokenizer.texts_to_sequences("physics is nice ")
text = pad_sequences(sequences, maxlen=num_words)
print(text)

它给了我奇怪的输出:

 [[   0    0    0    0    0    0    0    0    0  394]
 [   0    0    0    0    0    0    0    0    0 3136]
 [   0    0    0    0    0    0    0    0    0 1383]
 [   0    0    0    0    0    0    0    0    0  507]
 [   0    0    0    0    0    0    0    0    0    1]
 [   0    0    0    0    0    0    0    0    0 1261]
 [   0    0    0    0    0    0    0    0    0    0]
 [   0    0    0    0    0    0    0    0    0 1114]
 [   0    0    0    0    0    0    0    0    0    1]
 [   0    0    0    0    0    0    0    0    0 1261]
 [   0    0    0    0    0    0    0    0    0  753]]

根据 Keras 文档 ( Keras ):

texts_to_sequences(文本)

参数: texts:要转换为序列的文本列表。

返回:序列列表(每个文本输入一个)。

难道不应该将每个单词编码为相应的数字吗?如果文本短于 50 到 50,则填充文本?错误在哪里?

原文由 Wanderer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 586
2 个回答

我想你应该这样打电话:

 sequences = tokenizer.texts_to_sequences(["physics is nice "])

原文由 solve it 发布,翻译遵循 CC BY-SA 4.0 许可协议

您应该这样调用该方法:

 new_sample = ['A new sample to be classified']
seq = tokenizer.texts_to_sequences(new_sample )
padded = pad_sequences(seq, maxlen=MAX_SEQUENCE_LENGTH)
pred = model.predict(padded)

原文由 Wesam Na 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题