如何使用标记器(Keras)?无法在字符级别生成令牌

2024-09-29 19:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

目标:在角色级别进行矢量化

问题:输出不是每个字符/字母的唯一数字,而是将所有字母转换为1

问题:我的代码有什么问题

我有一个数据帧(df)。其中,“左”列和“右”列是描述产品的代码,而“匹配”列表示左和右是否描述同一产品

我使用Keras中的标记器在字符级对输入进行矢量化。我所期待的是将字母转换成数字,而我收到的是[1,1,1,1,1….,1,1]。下划线不包含信息值

有什么建议我的代码中有什么错误吗

样本数据:

df = pd.DataFrame({'left': ['k2____v72___zal81_f45___hl3___', 'vj43__i1____i1____ixk4__cdo9__'],
                   'right': ['zal81_jy9___v72___qo7___zr6___', 'e95___qto54_bx29__sef9__md40__'],
                   'Match': [ 1,0]})

看起来像这样:

enter image description here

这是我的代码:

X_train = df['A']
 
from tensorflow.keras.preprocessing.text import Tokenizer

tokenizer = tf.keras.preprocessing.text.Tokenizer(char_level=True,
                                                  num_words = 500,
                                                 lower = False, # input is already in lower case
                                                 filters='_',
                                                 oov_token=True)
tokenizer.fit_on_texts([X_train])

要测试和输出:

sequences = tokenizer.texts_to_sequences(["g2____v72___zal81_f45___hl3___"])
print(sequences)
print(tokenizer.word_index)

返回: enter image description here


Tags: 数据代码df产品字母数字字符矢量化
1条回答
网友
1楼 · 发布于 2024-09-29 19:21:06

这是因为您将X_train作为列表传递,您应该执行以下操作:

tokenizer.fit_on_texts(X_train)

这将产生:

[[1, 7, 2, 2, 2, 2, 8, 11, 7, 2, 2, 2, 12, 13, 14, 3, 2, 15, 4, 16, 2, 2, 2, 17, 9, 10, 2, 2, 2]]
{True: 1, '_': 2, '1': 3, '4': 4, 'i': 5, 'k': 6, '2': 7, 'v': 8, 'l': 9, '3': 10, '7': 11, 'z': 12, 'a': 13, '8': 14, 'f': 15, '5': 16, 'h': 17, 'j': 18, 'x': 19, 'c': 20, 'd': 21, 'o': 22, '9': 23}

相关问题 更多 >

    热门问题