Keras标记器字符级别不工作

Keras标记器字符级别不工作,keras,tokenize,Keras,Tokenize,我通过Keras标记器发送一个列表列表,char_level=True,但结果是单词标记化,而不是字符标记化 from tensorflow import keras from keras.preprocessing.text import Tokenizer # List of lists train_data = [['SMITH', 'JOHN', '', 'CHESTERTOWN', 'MD', '21620', '555555555', 'F'],

我通过Keras标记器发送一个列表列表,char_level=True,但结果是单词标记化,而不是字符标记化

    from tensorflow import keras
    from keras.preprocessing.text import Tokenizer


    # List of lists
    train_data = [['SMITH', 'JOHN', '', 'CHESTERTOWN', 'MD', '21620', '555555555', 'F'], ['CROW', 'JOE', '', 'FREDERICK', 'MD', '217011313', '9999999999', 'F']]

    t = Tokenizer(filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n', split=',', char_level=True, oov_token=True) 
    t.fit_on_texts(train_data)
    train_token = np.array(t.texts_to_sequences(train_data)) 

    print(train_token)
    array([[ 5,  6,  2,  7,  3,  8,  9,  4], [10, 11,  2, 12,  3, 13, 14,  4]])
来自tensorflow导入keras的

来自keras.preprocessing.text导入标记器
#名单
列车数据=[[SMITH]、[JOHN]、[CHESTERTOWN]、[MD]、[21620]、[5555555]、[CROW]、[JOE]、[FREDERICK]、[MD]、[21701313]、[99999999999]、[F']
t=标记器(过滤器='!“\$%&()*+,-./:;?@[\\]^\`{\}~\t\n',拆分=',',字符级别=真,oov\U标记=真)
t、 安装在文本上(列车数据)
列车令牌=np.数组(t.texts列车到列车序列(列车数据))
打印(列车令牌)
数组([[5,6,2,7,3,8,9,4],[10,11,2,12,3,13,14,4])

发生这种情况是因为您的数据应该是字符串,而不是列表。如果将所有单词连接到一个字符串中,它将按预期工作

只需在代码中添加以下内容:

def concat_list(l):
    concat = ''
    for word in l:
        concat += word + ' '
    return concat

train_data = [concat_list(data) for data in train_data]
然后您将获得:

>>> [list([16, 9, 17, 10, 11, 2, 18, 7, 11, 19, 2, 2, 12, 11, 5, 16, 10, 5, 8, 10, 7, 20, 19, 2, 9, 13, 2, 14, 6, 23, 14, 21, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 15, 2])
     list([12, 8, 7, 20, 2, 18, 7, 5, 2, 2, 15, 8, 5, 13, 5, 8, 17, 12, 24, 2, 9, 13, 2, 14, 6, 25, 21, 6, 6, 22, 6, 22, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 15, 2])]