我正在努力创建一个文本分类代码,但我在使用分词器对文档进行编码时遇到问题。
- 我首先在我的文档中安装了一个分词器,如下所示:
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 许可协议
我想你应该这样打电话: